Re: Optimize IS DISTINCT FROM with non-nullable inputs - Mailing list pgsql-hackers

From Richard Guo
Subject Re: Optimize IS DISTINCT FROM with non-nullable inputs
Date
Msg-id CAMbWs4_vQDaJ3fGQt+RD3+CeasJHB0j9pCjUpS00=dgYe=bW_w@mail.gmail.com
Whole thread Raw
In response to Optimize IS DISTINCT FROM with non-nullable inputs  (Richard Guo <guofenglinux@gmail.com>)
Responses Re: Optimize IS DISTINCT FROM with non-nullable inputs
List pgsql-hackers
On Fri, Jan 23, 2026 at 10:40 PM Richard Guo <guofenglinux@gmail.com> wrote:
> I'm kind of concerned about whether there are edge cases where this
> transformation is not safe, specifically regarding "rowtype" inputs.

After a second thought, I think this should be safe even for "rowtype"
inputs.  The executor (ExecInterpExpr) evaluates a DistinctExpr with
non-null inputs by simply applying the underlying equality function
and then negating the result.  Also, record_eq explicitly treats two
NULLs as equal.  Therefore, in this case, converting IS DISTINCT FROM
to the inequality operator in the planner produces the exact same
behavior as the executor.

Also, I think we can play this same trick with BooleanTest (IS [NOT]
TRUE/FALSE/UNKNOWN).  A BooleanTest treats a NULL input as the logical
value "unknown".  If we know that the input can not be NULL, we can
simplify it directly to a boolean expression or a constant.  Please
see 0002.

- Richard

Attachment

pgsql-hackers by date:

Previous
From: jian he
Date:
Subject: Re: support fast default for domain with constraints
Next
From: Bertrand Drouvot
Date:
Subject: Re: Safer hash table initialization macro