On Tue, Oct 21, 2008 at 1:50 PM, Tom Lane <[EMAIL PROTECTED]> wrote:
> Currently, the constructs
>        '{}'::arraytype
>        ARRAY[]::arraytype
> return zero-dimensional arrays, as does the underlying function
> construct_empty_array().  I can't immediately find any way at SQL
> level to produce an empty array with one or more dimensions.
> However, construct_array and construct_md_array will happily build
> zero-length arrays of dimension 1 or higher, leading to weirdnesses
> such as illustrated here:
> http://archives.postgresql.org/pgsql-general/2008-10/msg00915.php
>
> Seems like we ought to clean this up.  I'm not sure which way to jump
> though: should we decree that arrays of no elements must always have
> zero dimensions, or should we get rid of that and standardize on, say,
> 1-D array with lower bound 1 and upper bound 0?
>
> A somewhat related issue that I noticed while poking at this is that
> array_dims() returns NULL for a zero-dimension array.  That seems a bit
> bogus too; wouldn't an empty string be saner?  Of course the issue
> goes away if we get rid of zero-dimension arrays.
>
> Thoughts?

This reminds me a little bit of the zero point polygon issue we
uncovered a while back.  IMO, you shouldn't be able to create things
that are not possible at the sql level....it invariably leads to
errors.  But why do you have to force empty arrays to 1 dims?  This
seems like needless restriction.

ISTM this is the way it should work from SQL level:

'{}'::int[] empty 1d
'{{},{}}'::int[] :: empty 2d

If you dump zero dimension arrays, then the problem about what to do
with array_dims goes away.  Otherwise, I'd make:

''::int[] as empty 0d array

merlin

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to