Thread: array_length of an empty array

array_length of an empty array

From
John R Pierce
Date:
hmmm.    array[]::integer[]    is an empty array, {}, eg an array with
zero elements

but array_length(array[]::integer[])   is NULL rather than zero.    this
seems counterintuitive.


--
john r pierce                            N 37, W 122
santa cruz ca                         mid-left coast


Re: array_length of an empty array

From
Ryan Kelly
Date:
On Sun, Jul 29, 2012 at 01:03:04AM -0700, John R Pierce wrote:
> hmmm.    array[]::integer[]    is an empty array, {}, eg an array
> with zero elements
>
> but array_length(array[]::integer[])   is NULL rather than zero.
> this seems counterintuitive.

It also seems to disagree with the standard:
> 1) An <empty specification> specifies a collection whose cardinality
> is zero.

-Ryan Kelly

Re: array_length of an empty array

From
Tom Lane
Date:
John R Pierce <pierce@hogranch.com> writes:
> hmmm.    array[]::integer[]    is an empty array, {}, eg an array with
> zero elements

> but array_length(array[]::integer[])   is NULL rather than zero.    this
> seems counterintuitive.

IIRC, there are a whole bunch of questionable behaviors around empty
arrays.  Somebody should go through the whole list of array-related
functions and come up with a coherent proposal for fixing all of them.

            regards, tom lane