On 02.07.24 12:45, Navrátil, Ondřej wrote:
Hello,
as per documentation
<https://www.postgresql.org/docs/current/functions-conditional.html#FUNCTIONS-COALESCE-NVL-IFNULL>
> The |COALESCE| function returns the first of its arguments that is
not null. Null is returned only if all arguments are null.
This is not exactly true. In fact:
The |COALESCE| function returns the first of its arguments that *is
distinct* *from *null. Null is returned only if all arguments *are not
distinct from* null.
See my stack overflow question here
<https://stackoverflow.com/questions/78691097/postgres-null-on-composite-types>.
Long story short
|select coalesce((null, null), (10, 20)) as magic; |
returns
|magic ------- (,) (1 row)|
However, this is true:
|select (null, null) is null;|
I think this is actually a bug in the implementation, not in the
documentation. That is, the implementation should behave like the
documentation suggests.