@ -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)
--