Re: So what's an "empty" array anyway? - Mailing list pgsql-hackers

From Merlin Moncure
Subject Re: So what's an "empty" array anyway?
Date
Msg-id b42b73150810211113u7b86c586lbb88e06acad0873a@mail.gmail.com
Whole thread Raw
In response to So what's an "empty" array anyway?  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: So what's an "empty" array anyway?
List pgsql-hackers
On Tue, Oct 21, 2008 at 1:50 PM, Tom Lane <tgl@sss.pgh.pa.us> 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


pgsql-hackers by date:

Previous
From: Martin Pihlak
Date:
Subject: Re: Withdraw PL/Proxy from commitfest
Next
From: "Pavel Stehule"
Date:
Subject: Re: So what's an "empty" array anyway?