From: | Aleksander Alekseev <aleksander(at)timescale(dot)com> |
---|---|
To: | "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com> |
Cc: | PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: doc: array_length produces null instead of 0 |
Date: | 2022-06-21 13:33:03 |
Message-ID: | CAJ7c6TN2AvpsWg5_Mqx39Kw-YeRZbZzojKX6BVJPz-UXPP_G3Q@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi David,
> Per discussion here:
>
> https://www.postgresql.org/message-id/163636931138.8076.5140809232053731248%40wrigleys.postgresql.org
>
> We can now easily document the array_length behavior of returning null instead of zero for an empty array/dimension.
>
> I added an example to the json_array_length function to demonstrate that it does return 0 as one would expect, but contrary to the SQL array behavior.
>
> I did not bother to add examples to the other half dozen or so "_length" functions that all produce 0 as expected. Just the surprising case and the adjacent one.
Good catch.
+ <literal>array_length(array[], 1)</literal>
+ <returnvalue>NULL</returnvalue>
One tiny nitpick I have is that this example will not work if used
literally, as is:
```
=# select array_length(array[], 1);
ERROR: cannot determine type of empty array
LINE 1: select array_length(array[], 1);
```
Maybe it's worth using `array_length(array[] :: int[], 1)` instead.
--
Best regards,
Aleksander Alekseev
From | Date | Subject | |
---|---|---|---|
Next Message | Przemysław Sztoch | 2022-06-21 13:36:49 | Re: [PATCH] Completed unaccent dictionary with many missing characters |
Previous Message | Jonathan S. Katz | 2022-06-21 13:27:46 | PostgreSQL 15 Beta 2 release |