Re: Clause accidentally pushed down ( Possible bug in Making Vars outer-join aware)
Andrei Lepikhov <a.lepikhov@postgrespro.ru>
From: Andrey Lepikhov <a.lepikhov@postgrespro.ru>
To: Richard Guo <guofenglinux@gmail.com>
Cc: PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>
Date: 2023-02-27T06:23:57Z
Lists: pgsql-bugs
On 23/2/2023 11:36, Richard Guo wrote: > I've realized this hack is not correct :-(. References to A Vars and B > Vars in higher qual levels do not need this adjustment. So this code > change would add unnecessary relids for clauses that involve A Vars or B > Vars but not C Vars, resulting them being placed at higher place than > needed. > > Maybe what we need is to add in commute_below_l (assuming it has been > recorded in SpecialJoinInfo) rather than commute_below of outer joins > mentioned within the clause? Doing a comparison of pg15 and master initsplan.c I found that a clear and documented algorithm for delaying the application of a qual is lost or replaced with some commute_* fields. It is not clear how we guarantee correct application delay of a qual. Which part of the code implements it now? -- regards, Andrey Lepikhov Postgres Professional
Commits
-
Fix thinko in join removal.
- d0f952691ff5 16.0 landed
-
Convert nullingrels match checks from Asserts to test-and-elog.
- 867be9c0738b 16.0 landed
-
Fix some issues with improper placement of outer join clauses.
- 9df8f903eb67 16.0 landed