ARRAY_LENGTH() function behavior with empty array

Started by otar shavadzeover 9 years ago3 messagesgeneral
Jump to latest
#1otar shavadze
oshavadze@gmail.com

SELECT ARRAY_LENGTH('{}'::INT[], 1)

This returns NULL, not so "dangerous" either way, not would be more
logically, if array length function will return 0 from empty array,
instead of NULL ?

This is just IMHO.

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: otar shavadze (#1)
Re: ARRAY_LENGTH() function behavior with empty array

otar shavadze <oshavadze@gmail.com> writes:

SELECT ARRAY_LENGTH('{}'::INT[], 1)
This returns NULL, not so "dangerous" either way, not would be more
logically, if array length function will return 0 from empty array,
instead of NULL ?

Well, the issue is that you're asking about dimension 1 of a
zero-dimensional array, so the answer is indeed undefined, not 0.

A lot of people are not terribly happy with PG's array handling,
but there's enough interconnectedness to the behaviors that it's
hard to change just one thing ... and there's also backwards
compatibility to worry about.

regards, tom lane

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

#3otar shavadze
oshavadze@gmail.com
In reply to: Tom Lane (#2)
Re: ARRAY_LENGTH() function behavior with empty array

Understood, and backwards compatibility also of course. Thank you

On Fri, Dec 2, 2016 at 7:20 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Show quoted text

otar shavadze <oshavadze@gmail.com> writes:

SELECT ARRAY_LENGTH('{}'::INT[], 1)
This returns NULL, not so "dangerous" either way, not would be more
logically, if array length function will return 0 from empty array,
instead of NULL ?

Well, the issue is that you're asking about dimension 1 of a
zero-dimensional array, so the answer is indeed undefined, not 0.

A lot of people are not terribly happy with PG's array handling,
but there's enough interconnectedness to the behaviors that it's
hard to change just one thing ... and there's also backwards
compatibility to worry about.

regards, tom lane