array_length of an empty array

Started by John R Pierceover 13 years ago3 messagesgeneral
Jump to latest
#1John R Pierce
pierce@hogranch.com

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

#2Ryan Kelly
rpkelly22@gmail.com
In reply to: John R Pierce (#1)
Re: array_length of an empty array

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

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: John R Pierce (#1)
Re: array_length of an empty array

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