Re: is this a bug? - Mailing list pgsql-hackers

From Tom Lane
Subject Re: is this a bug?
Date
Msg-id 16954.1263778690@sss.pgh.pa.us
Whole thread Raw
In response to Re: is this a bug?  ("David E. Wheeler" <david@kineticode.com>)
List pgsql-hackers
"David E. Wheeler" <david@kineticode.com> writes:
> On Jan 17, 2010, at 3:47 PM, Tom Lane wrote:
>>> create type y as (c char, n int);
>>> select ('a', NULL)::y = ('a', NULL)::y; -- TRUE 
>>> select ('a', NULL) = ('a', NULL); -- NULL

>> The latter gets simplified to ('a' = 'a') AND (NULL = NULL).
>> The former doesn't --- it goes through record_eq, which treats
>> two nulls as equal.

> Shouldn't this go through record_eq, then?
> try=# select row('a', NULL) = row('a', NULL);

No, the ROW keyword is just noise.  It's the cast that is preventing the
expansion.  We could possibly change things so that it got expanded out
even with the cast, but on the whole I'm not sure that would be an
improvement.  It doesn't make things consistent, it just shifts the
boundary of inconsistency ...
        regards, tom lane


pgsql-hackers by date:

Previous
From: "David E. Wheeler"
Date:
Subject: Re: is this a bug?
Next
From: Tom Lane
Date:
Subject: Re: AtAbort_Portsl problem