Re: [SQL] ARRAY() returning NULL instead of ARRAY[]
От | Markus Bertheau ☭ |
---|---|
Тема | Re: [SQL] ARRAY() returning NULL instead of ARRAY[] |
Дата | |
Msg-id | 1118074367.5506.16.camel@dicaprio.akademie1.de обсуждение исходный текст |
Ответ на | Re: [SQL] ARRAY() returning NULL instead of ARRAY[] resp. (Joe Conway <mail@joeconway.com>) |
Ответы |
Re: [SQL] ARRAY() returning NULL instead of ARRAY[] resp.
Re: [SQL] ARRAY() returning NULL instead of ARRAY[] |
Список | pgsql-hackers |
В Пнд, 06/06/2005 в 08:58 -0700, Joe Conway пишет: > Joe Conway wrote: > > Actually, consistent with my last post, I think array_upper() on a > > zero-element array should return NULL. A zero-element array has a > > defined lower bound, but its upper bound is not zero -- it is really > > undefined. > > Just to clarify my response, this is what I propose: > > regression=# select array_upper('[2][1:]={{},{}}'::int[],1); > array_upper > ------------- > 2 > (1 row) > > regression=# select array_upper('[2][1:]={{},{}}'::int[],2) IS NULL; > ?column? > ---------- > t > (1 row) 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. Markus -- Markus Bertheau ☭ <twanger@bluetwanger.de>
В списке pgsql-hackers по дате отправления: