Re: Test of value equivalency of row type, feature or bug? - Mailing list pgsql-bugs

From David G. Johnston
Subject Re: Test of value equivalency of row type, feature or bug?
Date
Msg-id CAKFQuwZ1NbN2a6HGgdHtubuFDUEYUOLccyqboNifGD=6ehY68g@mail.gmail.com
Whole thread Raw
In response to Re: Test of value equivalency of row type, feature or bug?  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: Test of value equivalency of row type, feature or bug?
List pgsql-bugs
On Thu, Dec 20, 2018 at 7:35 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:
>
> =?UTF-8?B?5a2Z5Yaw?= <subi.the.dream.walker@gmail.com> writes:
> > select t=t from (select 1, null) t;
>
> > If I manage to catch the documents, the result of the query should be null,
> > as an equivalency comparison of null-contained row-typed values is null.
> > Surprisingly, the query result turns out to be true.
>
> > Is this behavior a feature or a bug?
>
> It's a feature.  The btree comparison functions (<, =, >, etc) for
> composite types have to provide a total order for their datatypes,
> and treating an individual null field as a reason to return null
> would break that.

That doesn't seem to be what is going on here nor is it immediately
obvious that such is what is documented.

https://www.postgresql.org/docs/11/functions-comparisons.html#ROW-WISE-COMPARISON

"""
The = and <> cases work slightly differently from the others. Two rows
are considered equal if all their corresponding members are non-null
and equal; the rows are unequal if any corresponding members are
non-null and unequal; otherwise the result of the row comparison is
unknown (null).
"""

I'm reading that as the OP did, which seems to contradict what you are saying.

Furthermore:

(9.6)
select (1,null::int)=(1,null::int) -- null
select t=t from (select (1, null::int)) t -- true

The t=t version must be true due to not caring what the contents of
"t" are, otherwise it would report null as the first example does...

David J.


pgsql-bugs by date:

Previous
From: Tom Lane
Date:
Subject: Re: Test of value equivalency of row type, feature or bug?
Next
From: Tom Lane
Date:
Subject: Re: Test of value equivalency of row type, feature or bug?