Re: ARRAY() returning NULL instead of ARRAY[] resp. {}
От | Tom Lane |
---|---|
Тема | Re: ARRAY() returning NULL instead of ARRAY[] resp. {} |
Дата | |
Msg-id | 16774.1116907560@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: ARRAY() returning NULL instead of ARRAY[] resp. {} (Joe Conway <mail@joeconway.com>) |
Ответы |
Re: ARRAY() returning NULL instead of ARRAY[] resp. {}
Re: ARRAY() returning NULL instead of ARRAY[] resp. {} Re: ARRAY() returning NULL instead of ARRAY[] resp. {} |
Список | pgsql-sql |
Joe Conway <mail@joeconway.com> writes: > Markus Bertheau wrote: >> why does SELECT ARRAY(SELECT 1 WHERE FALSE) return NULL instead of >> ARRAY[] resp. '{}'? > Why would you expect an empty array instead of a NULL? I think he's got a good point, actually. We document the ARRAY-with- parens-around-a-SELECT syntax as The resulting one-dimensional array will have an element foreach row in the subquery result, with an element type matchingthatof the subquery's output column. To me, that implies that a subquery result of no rows generates a one-dimensional array of no elements, not a null array. This is not the same as SELECT ARRAY[(SELECT 1 WHERE FALSE)]; We define a scalar subquery that returns no rows as returning null, so this is equivalent to SELECT ARRAY[NULL]; which *ought* to yield an array containing a single NULL element, but since we can't yet handle arrays containing nulls we punt and return a null array value. That's wrong too ... but it's a different issue. The point Markus is complaining about seems like it should be easily fixable. regards, tom lane
В списке pgsql-sql по дате отправления: