mirror of
https://github.com/postgres/postgres.git
synced 2025-11-19 13:42:17 +03:00
Fix "wrong varnullingrels" for Memoize's lateral references, too.
The issue fixed in commit bfd332b3f can also bite Memoize plans,
because of the separate copies of lateral reference Vars made
by paraminfo_get_equal_hashops. Apply the same hacky fix there.
(In passing, clean up shaky grammar in the existing comments
for this function.)
Richard Guo
Discussion: https://postgr.es/m/CAMbWs4-krwk0Wbd6WdufMAupuou_Ua73ijQ4XQCr1Mb5BaVtKQ@mail.gmail.com
This commit is contained in:
@@ -2289,11 +2289,11 @@ set_join_references(PlannerInfo *root, Join *join, int rtoffset)
|
||||
* the outer-join level at which they are used, Vars seen in the
|
||||
* NestLoopParam expression may have nullingrels that are just a
|
||||
* subset of those in the Vars actually available from the outer
|
||||
* side. Another case that can cause that to happen is explained
|
||||
* in the comments for process_subquery_nestloop_params. Not
|
||||
* checking this exactly is a bit grotty, but the work needed to
|
||||
* make things match up perfectly seems well out of proportion to
|
||||
* the value.
|
||||
* side. Lateral references can create the same situation, as
|
||||
* explained in the comments for process_subquery_nestloop_params
|
||||
* and paraminfo_get_equal_hashops. Not checking this exactly is
|
||||
* a bit grotty, but the work needed to make things match up
|
||||
* perfectly seems well out of proportion to the value.
|
||||
*/
|
||||
nlp->paramval = (Var *) fix_upper_expr(root,
|
||||
(Node *) nlp->paramval,
|
||||
|
||||
Reference in New Issue
Block a user