Robert Haas <robertmh...@gmail.com> writes: > On Thu, Jun 30, 2016 at 9:25 PM, Jim Nasby <jim.na...@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 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers