Thank You, David and Tom!
Now these tricks around row(null) are much clearer to me!
I think this issue should be closed.
пт, 5 авг. 2022 г. в 17:23, Tom Lane <tgl@sss.pgh.pa.us>:
>
> PG Bug reporting form <noreply@postgresql.org> writes:
> > I noticed strange behavior of ROW(NULL):
> > I expect, that IS NULL operator should give the same result as IS NOT
> > DISTINCT FROM NULL
> > similarly, IS NOT NULL operator should give the same result as IS DISTINCT
> > FROM NULL:
>
> I don't see any particular reason to expect that. row(NULL)
> is a row object containing one null field, which is in fact not
> identical to a null composite value. The SQL spec dictates that
> IS NULL should return true for both cases, but that doesn't mean
> that no other operator is allowed to distinguish them. I'd say
> that this is a wart of IS NULL rather than desirable behavior
> we should copy elsewhere.
>
> > Next point:
> > I expected that IS NULL and IS NOT NULL operators must always return
> > opposite results, but:
>
> You have not read the SQL standard, then. It's quite clear
> about that.
>
> > Can we fix or document this PG issue?
>
> ... nor our documentation. See
>
> https://www.postgresql.org/docs/current/functions-comparison.html
>
> para beginning "If the expression is row-valued,", near the
> bottom of the page.
>
> regards, tom lane