Re: Can't ri_KeysEqual() consider two nulls as equal? - Mailing list pgsql-hackers

From David Fetter
Subject Re: Can't ri_KeysEqual() consider two nulls as equal?
Date
Msg-id 20070418182251.GF25896@fetter.org
Whole thread Raw
In response to Re: Can't ri_KeysEqual() consider two nulls as equal?  (Stephan Szabo <sszabo@megazone.bigpanda.com>)
List pgsql-hackers
On Wed, Apr 18, 2007 at 07:51:48AM -0700, Stephan Szabo wrote:
> On Tue, 17 Apr 2007, Tom Lane wrote:
> 
> > A recent discussion led me to the idea that FK triggers are fired
> > unnecessarily during an UPDATE if the foreign-key column(s)
> > contain any NULLs, because ri_KeysEqual() treats two nulls as
> > unequal, and therefore we conclude the row has changed when it has
> > not.  I claim that both ri_KeysEqual() and ri_OneKeyEqual() could
> > consider two nulls to be equal.  Furthermore it seems like
> > ri_AllKeysUnequal() should do so too; the case can't arise at the
> > moment because the sole caller already knows that one of the key
> > sets contains no nulls, but if this weren't so, the optimization
> > would be actively wrong if we concluded that two nulls were
> > unequal.
> 
> Do you have any suggestions for alternate names?  Keeping them using
> Equal seems to be dangerous since people would likely expect it to
> act like normal equality (with nulls being different).

How about NotDistinct as in SQL's IS NOT DISTINCT FROM ?

Cheers,
D
-- 
David Fetter <david@fetter.org> http://fetter.org/
phone: +1 415 235 3778        AIM: dfetter666                             Skype: davidfetter

Remember to vote!
Consider donating to PostgreSQL: http://www.postgresql.org/about/donate


pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: Background LRU Writer/free list
Next
From: Tom Lane
Date:
Subject: Re: Can't ri_KeysEqual() consider two nulls as equal?