Re: Query result differences between PostgreSQL 17 vs 16
Richard Guo <guofenglinux@gmail.com>
From: Richard Guo <guofenglinux@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Bruce Momjian <bruce@momjian.us>, David Rowley <dgrowleyml@gmail.com>, Ronald Cruz <cruz@rentec.com>, pgsql-bugs@lists.postgresql.org, Peter Ford <pford@rentec.com>, "Aaron J. Garcia" <agarcia@rentec.com>
Date: 2025-02-26T06:14:25Z
Lists: pgsql-bugs
Attachments
- v1-0001-Do-not-reduce-a-clone-clause-to-a-constant-true.patch (application/octet-stream) patch v1-0001
On Sat, Feb 22, 2025 at 12:08 PM Richard Guo <guofenglinux@gmail.com> wrote: > On Sat, Feb 22, 2025 at 11:32 AM Tom Lane <tgl@sss.pgh.pa.us> wrote: > > 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? > Yeah, I think this approach can fix the issue. Perhaps we should > check whether the RestrictInfo is a clone clause and avoid assuming > that it's always true in that case, maybe by adding something like > below at the start of restriction_is_always_true. > > + if (restrictinfo->has_clone || restrictinfo->is_clone) > + return false; > > We may lose some optimization opportunities with NOT NULL quals, as > this could prevent us from reducing certain such quals to constant > true, but I think correctness should be our top priority. > > I'll go ahead and write a patch. Here is the patch. Thanks Richard
Commits
-
Avoid NullTest deduction for clone clauses
- bc5a08af3c44 17.5 landed
- 716a051aaccd 18.0 landed
-
Add better handling of redundant IS [NOT] NULL quals
- b262ad440ede 17.0 cited