Re: [SQL] ARRAY() returning NULL instead of ARRAY[] resp.
От | Joe Conway |
---|---|
Тема | Re: [SQL] ARRAY() returning NULL instead of ARRAY[] resp. |
Дата | |
Msg-id | 42A4F764.9010705@joeconway.com обсуждение исходный текст |
Ответ на | Re: [SQL] ARRAY() returning NULL instead of ARRAY[] (Markus Bertheau ☭ <twanger@bluetwanger.de>) |
Список | pgsql-hackers |
Markus Bertheau ☭ wrote: > Hmm, this gets really complicated and inconsistent. Complicated means > unusable. What about modifying the dimension syntax such that the second > number means number of elements instead of upper bound? That particular > problem would go away then, and array_upper('[0:0]={}'::int[]) can > return the correct 0 then. > > What I'm actually worrying about is that array_upper(array(select 1 > where false)) returns 0. > > An option would be to drop the possibility to let the array start at > another index than 0. I don't know why it was decided to do that in the > first place. It seems a rather odd feature to me. > Actually I like both of these ideas, and have advocated the second one myself before. But it isn't backward compatible -- anyone else have an opinion? SQL2003 actually specifies that an array *should* start at 1: 4.10.2 Arrays An array is a collection A in which each element is associated with exactly one ordinal position in A. If n is the cardinality of A, then the ordinal position p of an element is an integer in the range 1 (one) ≤ p ≤ n. Joe
В списке pgsql-hackers по дате отправления: