diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2023-06-20 10:29:57 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2023-06-20 10:29:57 -0400 |
commit | efeb12ef0bfef0b5aa966a56bb4dbb1f936bda0c (patch) | |
tree | 0c81a184f93fcb91be81707a56ea75883d718c4a /src/test | |
parent | 0655c03ef9cc6154b0b209059e758863dcf4e6b0 (diff) | |
download | postgresql-efeb12ef0bfef0b5aa966a56bb4dbb1f936bda0c.tar.gz postgresql-efeb12ef0bfef0b5aa966a56bb4dbb1f936bda0c.zip |
Don't include outer join relids in lateral_relids bitmapsets.
This avoids an assertion failure when outer joins are rearranged
per identity 3. Listing only the baserels from a PlaceHolderVar's
ph_lateral set should be enough to ensure that the required values
are available when we need to compute the PHV --- it's what we
did before inventing nullingrel sets, after all. It's a bit
unsatisfying; but with beta2 hard upon us, there's not time to
look for an aesthetically cleaner fix.
Richard Guo and Tom Lane
Discussion: https://postgr.es/m/CAMbWs48Jcw-NvnxT23WiHP324wG44DvzcH1j4hc0Zn+3sR9cfg@mail.gmail.com
Diffstat (limited to 'src/test')
-rw-r--r-- | src/test/regress/expected/join.out | 17 | ||||
-rw-r--r-- | src/test/regress/sql/join.sql | 7 |
2 files changed, 24 insertions, 0 deletions
diff --git a/src/test/regress/expected/join.out b/src/test/regress/expected/join.out index 35476a0d126..cd1163d039b 100644 --- a/src/test/regress/expected/join.out +++ b/src/test/regress/expected/join.out @@ -2625,6 +2625,23 @@ select * from int8_tbl t1 (7 rows) explain (costs off) +select * from int8_tbl t1 + left join int8_tbl t2 on true + left join lateral + (select t2.q1 from int8_tbl t3) s + on t2.q1 = 1; + QUERY PLAN +------------------------------------------- + Nested Loop Left Join + -> Seq Scan on int8_tbl t1 + -> Materialize + -> Nested Loop Left Join + Join Filter: (t2.q1 = 1) + -> Seq Scan on int8_tbl t2 + -> Seq Scan on int8_tbl t3 +(7 rows) + +explain (costs off) select * from onek t1 left join onek t2 on true left join lateral diff --git a/src/test/regress/sql/join.sql b/src/test/regress/sql/join.sql index d8d9579092d..7ca737eec0f 100644 --- a/src/test/regress/sql/join.sql +++ b/src/test/regress/sql/join.sql @@ -529,6 +529,13 @@ select * from int8_tbl t1 on t2.q1 = 1; explain (costs off) +select * from int8_tbl t1 + left join int8_tbl t2 on true + left join lateral + (select t2.q1 from int8_tbl t3) s + on t2.q1 = 1; + +explain (costs off) select * from onek t1 left join onek t2 on true left join lateral |