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 []'  (Jim Nasby <Jim.Nasby@BlueTreble.com>)
Список 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 по дате отправления:

Предыдущее
От: Peter Geoghegan
Дата:
Сообщение: Re: Bug in batch tuplesort memory CLUSTER case (9.6 only)
Следующее
От: Jim Nasby
Дата:
Сообщение: Re: Bad behavior from plpython 'return []'