Replace lateral references to removed rels in subqueries
authorAlexander Korotkov <akorotkov@postgresql.org>
Fri, 23 Feb 2024 22:34:52 +0000 (00:34 +0200)
committerAlexander Korotkov <akorotkov@postgresql.org>
Fri, 23 Feb 2024 22:35:17 +0000 (00:35 +0200)
commit466979ef031afff000f3f92b812b946cf3a416c1
tree9953d5391ffce3e9a32a97c1d5854d2ea15ab2f0
parenta6b2a51e16d7ae7b1982c9d8dfa61a637a832209
Replace lateral references to removed rels in subqueries

This commit introduces a new field 'sublevels_up' in ReplaceVarnoContext,
and enhances replace_varno_walker() to:
  1) recurse into subselects with sublevels_up increased, and
  2) perform the replacement only when varlevelsup is equal to sublevels_up.

This commit also fixes some outdated comments.  And besides adding relevant
test cases, it makes some unification over existing SJE test cases.

Discussion: https://postgr.es/m/CAMbWs4-%3DPO6Mm9gNnySbx0VHyXjgnnYYwbN9dth%3DTLQweZ-M%2Bg%40mail.gmail.com
Author: Richard Guo
Reviewed-by: Andrei Lepikhov, Alexander Korotkov
src/backend/optimizer/plan/analyzejoins.c
src/test/regress/expected/join.out
src/test/regress/sql/join.sql