Re: BUG #18999: Equivalent queries processing WHERE IS NULL & WHERE IS NOT NULL produce mutually exclusive results

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Jinhui Lai <jinhui-lai(at)foxmail(dot)com>
Cc: pgsql-bugs <pgsql-bugs(at)lists(dot)postgresql(dot)org>
Subject: Re: BUG #18999: Equivalent queries processing WHERE IS NULL & WHERE IS NOT NULL produce mutually exclusive results
Date: 2025-07-25 15:20:47
Message-ID: 1923877.1753456847@sss.pgh.pa.us
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

"=?utf-8?B?SmluaHVpIExhaQ==?=" <jinhui-lai(at)foxmail(dot)com> writes:
> Thanks for your reply, I get your detailed explanation. I also agree that is weird. Especially, the the c0's constraint is NOT NULL.

Yeah. We have adopted the policy that the spec's definition of this
applies only to the specific SQL expression constructs "c IS NULL"
and "c IS NOT NULL". Elsewhere we generally take the position that
nullness is a simple boolean property: there is a value there, or
there isn't. Whether a row value contains some null columns doesn't
change that: if the container is there then it's not null.

Legalistic reading of the spec text offers some support for this
position, but I don't know whether the committee members actually
think that way or just have failed to clarify the text enough.
In any case, that's our position and we're quite unlikely to change
it, for reasons of backwards compatibility and performance.

regards, tom lane

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message Fujii Masao 2025-07-25 16:01:29 Re: Unexpected Standby Shutdown on sync_replication_slots change
Previous Message Jinhui Lai 2025-07-25 14:40:29 Re: BUG #18999: Equivalent queries processing WHERE IS NULL & WHERE IS NOT NULL produce mutually exclusive results