Re: Query result differences between PostgreSQL 17 vs 16 - Mailing list pgsql-bugs

From Tom Lane
Subject Re: Query result differences between PostgreSQL 17 vs 16
Date
Msg-id 3818495.1740191559@sss.pgh.pa.us
Whole thread Raw
In response to Re: Query result differences between PostgreSQL 17 vs 16  (Richard Guo <guofenglinux@gmail.com>)
Responses Re: Query result differences between PostgreSQL 17 vs 16
List pgsql-bugs
Richard Guo <guofenglinux@gmail.com> writes:
> On Sat, Feb 22, 2025 at 8:51 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:
>> I've not looked at the code, but I suspect that it is failing
>> to check varnullingrels before believing that it can trust
>> the applicability of table constraints.

> Hmm, we do check varnullingrels in expr_is_nonnullable().  My best
> guess is that we have generated two versions of the qual 'customer.cid
> IS NOT NULL': one with customer.cid marked as nullable by the left
> join to customer, and one without.  The latter is dropped because of
> the not null constraint on customer.cid, while the former fails to be
> applied on the left join to int4_tbl j.

If the check against table not-null constraints is applied after we
clone outer-join quals, that's probably bad.  I think there are
assumptions in there that every clone qual will have doppelgangers,
so filtering NOT NULLs later would break that.  Maybe not applying
the filter to quals marked has_clone or is_clone would help?

            regards, tom lane



pgsql-bugs by date:

Previous
From: Richard Guo
Date:
Subject: Re: Query result differences between PostgreSQL 17 vs 16
Next
From: Richard Guo
Date:
Subject: Re: Query result differences between PostgreSQL 17 vs 16