]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Fix LATERAL references in GRAPH_TABLE with multi-label pattern
authorPeter Eisentraut <peter@eisentraut.org>
Fri, 5 Jun 2026 07:27:31 +0000 (09:27 +0200)
committerPeter Eisentraut <peter@eisentraut.org>
Fri, 5 Jun 2026 07:27:51 +0000 (09:27 +0200)
commit4cb2a9863d89b320f37eb1bd76822f6f65e59311
tree0c96b1c5ed18625c46a4f274252dacbe2bf4ad78
parent72498a86989e3491228ba09be43eab778a3ac943
Fix LATERAL references in GRAPH_TABLE with multi-label pattern

When rewriting a GRAPH_TABLE into a subquery,
replace_property_refs_mutator() bumps levelsup of lateral references
by one so that they reference outside the subquery.  This works for
path patterns that result in only one path query.  Patterns that
produce multiple path queries are rewritten as a UNION of path
queries.  Since every path query becomes a subquery of the UNION
statement, the levelsup of lateral references in those path queries
need an additional bump.  This adjustment was missing resulting in the
lateral references being interpreted as references in the UNION query
itself.  This caused different symptoms like a crash in
create_lateral_join_info() or error "plan should not reference
subplan's variable".  The symptoms varied depending on the number of
RangeTblEntries in the UNION statement.

This commit adds the missing adjustment.

Author: Ayush Tiwari <ayushtiwari.slg01@gmail.com>
Author: Satya Narlapuram <satyanarlapuram@gmail.com>
Reviewed-by: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
Discussion: https://www.postgresql.org/message-id/flat/CAHg%2BQDfnLzsgjaQ_CiKSpP4JH3MKOiwoawEcCzXa9uYr45yiWw%40mail.gmail.com
src/backend/rewrite/rewriteGraphTable.c
src/test/regress/expected/graph_table.out
src/test/regress/sql/graph_table.sql