Thread: array_length of an empty array
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
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
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