Re: BUG #17575: row(NULL) IS NULL inconsistent with IS NOT DISTINCT FROM NULL - Mailing list pgsql-bugs

From Алексей Борщёв
Subject Re: BUG #17575: row(NULL) IS NULL inconsistent with IS NOT DISTINCT FROM NULL
Date
Msg-id CAD2_BUMLTZAU7FYbaHm0scERfErd=J0-Eetvu1nJFqgd2Uf7bQ@mail.gmail.com
Whole thread Raw
In response to Re: BUG #17575: row(NULL) IS NULL inconsistent with IS NOT DISTINCT FROM NULL  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-bugs
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



pgsql-bugs by date:

Previous
From: Daniel Farina
Date:
Subject: Re: BUG #17577: pg_ctl promote is not preemptive in archive recovery
Next
From: Alexander Pyhalov
Date:
Subject: foreign join error "variable not found in subplan target list"