Re: Bad behavior from plpython 'return []'
От | Tom Lane |
---|---|
Тема | Re: Bad behavior from plpython 'return []' |
Дата | |
Msg-id | 27597.1467402732@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: Bad behavior from plpython 'return []' (Robert Haas <robertmhaas@gmail.com>) |
Ответы |
Re: Bad behavior from plpython 'return []'
|
Список | pgsql-hackers |
Robert Haas <robertmhaas@gmail.com> writes: > On Thu, Jun 30, 2016 at 9:25 PM, Jim Nasby <Jim.Nasby@bluetreble.com> wrote: >> SELECT array_dims(pg_temp.bad()), array_dims('{}'::text[]); >> array_dims | array_dims >> ------------+------------ >> [1:0] | >> (1 row) > Yeah, that's a bug. It looks like this is because PLySequence_ToArray neglects to special-case zero-element arrays. We could fix it there, but this is not the first such bug. I wonder if we should change construct_md_array to force zero-element arrays to be converted to empty arrays, rather than assuming callers will have short-circuited the case earlier. Something like /* fast track for empty array */if (ndims == 0) return construct_empty_array(elmtype); nelems = ArrayGetNItems(ndims, dims); + /* if caller tries to specify zero-length array, make it empty */ + if (nelems <= 0) + return construct_empty_array(elmtype); +/* compute required space */nbytes = 0;hasnulls = false; But that might introduce new problems too, if any callers expect the array dimensions to be exactly what they asked for. regards, tom lane
В списке pgsql-hackers по дате отправления: