Re: So what's an "empty" array anyway?

Поиск
Список
Период
Сортировка
От Merlin Moncure
Тема Re: So what's an "empty" array anyway?
Дата
Msg-id b42b73150810211113u7b86c586lbb88e06acad0873a@mail.gmail.com
обсуждение исходный текст
Ответ на So what's an "empty" array anyway?  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: So what's an "empty" array anyway?  (Tom Lane <tgl@sss.pgh.pa.us>)
Список 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 по дате отправления:

Предыдущее
От: Martin Pihlak
Дата:
Сообщение: Re: Withdraw PL/Proxy from commitfest
Следующее
От: "Pavel Stehule"
Дата:
Сообщение: Re: So what's an "empty" array anyway?