diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/test/regress/expected/join.out | 84 | ||||
-rw-r--r-- | src/test/regress/sql/join.sql | 29 |
2 files changed, 40 insertions, 73 deletions
diff --git a/src/test/regress/expected/join.out b/src/test/regress/expected/join.out index 51aeb1dae66..55d44a9bcee 100644 --- a/src/test/regress/expected/join.out +++ b/src/test/regress/expected/join.out @@ -3041,63 +3041,39 @@ reset enable_nestloop; create temp table tbl_rs(a int, b int); insert into tbl_rs select i, i from generate_series(1,10)i; analyze tbl_rs; -set enable_nestloop to off; -set enable_hashagg to off; --- ensure we get a hash right semi join with SubPlan in hash clauses -explain (costs off) -select * from tbl_rs t1 -where (select a from tbl_rs t2 - where exists (select 1 from - (select (b in (select b from tbl_rs t3)) as c from tbl_rs t4 where t4.a = 1) s - where c in (select t1.a = 1 from tbl_rs t5 union all select true)) - order by a limit 1) >= 0; - QUERY PLAN --------------------------------------------------------------------------------------- - Seq Scan on tbl_rs t1 - Filter: ((SubPlan 3) >= 0) - SubPlan 3 - -> Limit - InitPlan 2 - -> Hash Right Semi Join - Hash Cond: (((t1.a = 1)) = (ANY (t4.b = (hashed SubPlan 1).col1))) - -> Append - -> Seq Scan on tbl_rs t5 - -> Result - -> Hash - -> Seq Scan on tbl_rs t4 - Filter: (a = 1) - SubPlan 1 - -> Seq Scan on tbl_rs t3 - -> Sort - Sort Key: t2.a - -> Result - One-Time Filter: (InitPlan 2).col1 - -> Seq Scan on tbl_rs t2 -(20 rows) +-- ensure we get a hash right semi join +explain (costs off) +select * from tbl_rs t1 join + lateral (select * from tbl_rs t2 where t2.a in + (select t1.a+t3.a from tbl_rs t3) and t2.a < 5) + on true; + QUERY PLAN +------------------------------------------- + Nested Loop + -> Seq Scan on tbl_rs t1 + -> Hash Right Semi Join + Hash Cond: ((t1.a + t3.a) = t2.a) + -> Seq Scan on tbl_rs t3 + -> Hash + -> Seq Scan on tbl_rs t2 + Filter: (a < 5) +(8 rows) -- and check we get the expected results -select * from tbl_rs t1 -where (select a from tbl_rs t2 - where exists (select 1 from - (select (b in (select b from tbl_rs t3)) as c from tbl_rs t4 where t4.a = 1) s - where c in (select t1.a = 1 from tbl_rs t5 union all select true)) - order by a limit 1) >= 0; - a | b -----+---- - 1 | 1 - 2 | 2 - 3 | 3 - 4 | 4 - 5 | 5 - 6 | 6 - 7 | 7 - 8 | 8 - 9 | 9 - 10 | 10 -(10 rows) +select * from tbl_rs t1 join + lateral (select * from tbl_rs t2 where t2.a in + (select t1.a+t3.a from tbl_rs t3) and t2.a < 5) + on true; + a | b | a | b +---+---+---+--- + 1 | 1 | 2 | 2 + 1 | 1 | 3 | 3 + 1 | 1 | 4 | 4 + 2 | 2 | 3 | 3 + 2 | 2 | 4 | 4 + 3 | 3 | 4 | 4 +(6 rows) -reset enable_nestloop; -reset enable_hashagg; -- -- regression test for bug #13908 (hash join with skew tuples & nbatch increase) -- diff --git a/src/test/regress/sql/join.sql b/src/test/regress/sql/join.sql index 1e9dafca573..d6f49f281b7 100644 --- a/src/test/regress/sql/join.sql +++ b/src/test/regress/sql/join.sql @@ -741,32 +741,23 @@ reset enable_nestloop; -- -- regression test for bug with hash-right-semi join -- + create temp table tbl_rs(a int, b int); insert into tbl_rs select i, i from generate_series(1,10)i; analyze tbl_rs; -set enable_nestloop to off; -set enable_hashagg to off; - --- ensure we get a hash right semi join with SubPlan in hash clauses +-- ensure we get a hash right semi join explain (costs off) -select * from tbl_rs t1 -where (select a from tbl_rs t2 - where exists (select 1 from - (select (b in (select b from tbl_rs t3)) as c from tbl_rs t4 where t4.a = 1) s - where c in (select t1.a = 1 from tbl_rs t5 union all select true)) - order by a limit 1) >= 0; +select * from tbl_rs t1 join + lateral (select * from tbl_rs t2 where t2.a in + (select t1.a+t3.a from tbl_rs t3) and t2.a < 5) + on true; -- and check we get the expected results -select * from tbl_rs t1 -where (select a from tbl_rs t2 - where exists (select 1 from - (select (b in (select b from tbl_rs t3)) as c from tbl_rs t4 where t4.a = 1) s - where c in (select t1.a = 1 from tbl_rs t5 union all select true)) - order by a limit 1) >= 0; - -reset enable_nestloop; -reset enable_hashagg; +select * from tbl_rs t1 join + lateral (select * from tbl_rs t2 where t2.a in + (select t1.a+t3.a from tbl_rs t3) and t2.a < 5) + on true; -- -- regression test for bug #13908 (hash join with skew tuples & nbatch increase) |