Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
101 changes: 101 additions & 0 deletions src/test/regress/expected/gp_parallel.out
Original file line number Diff line number Diff line change
Expand Up @@ -2235,6 +2235,107 @@ explain(costs off) create table ctas_aoco using ao_column as select sum(a.c2) as
Optimizer: Postgres query optimizer
(11 rows)

abort;
--
-- Parallel Semi Join
--
begin;
set local optimizer=off;
set local enable_parallel=on;
set local force_parallel_mode =1 ;
set local min_parallel_table_scan_size = 0;
create table semi_t1 (c1 integer) with(parallel_workers=2) distributed randomly;
create table semi_t2 (c2 integer) with(parallel_workers=2) distributed randomly;
insert into semi_t1 values (generate_series (1,20000));
insert into semi_t2 values (generate_series (1,10000));
analyze semi_t1;
analyze semi_t2;
-- Parallel-aware Hash Semi Join
explain(costs off) select c1 from semi_t1 where not c1 >=all (select c2 from semi_t2 where c2 = c1);
QUERY PLAN
------------------------------------------------------------------
Gather Motion 6:1 (slice1; segments: 6)
-> Parallel Hash Semi Join
Hash Cond: (semi_t1.c1 = semi_t2.c2)
Join Filter: (semi_t1.c1 < semi_t2.c2)
-> Redistribute Motion 6:6 (slice2; segments: 6)
Hash Key: semi_t1.c1
Hash Module: 3
-> Parallel Seq Scan on semi_t1
-> Parallel Hash
-> Redistribute Motion 6:6 (slice3; segments: 6)
Hash Key: semi_t2.c2
Hash Module: 3
-> Parallel Seq Scan on semi_t2
Optimizer: Postgres query optimizer
(14 rows)

-- Parallel-oblivious Hash Semi Join
set local enable_parallel_hash = off;
explain(costs off) select c1 from semi_t1 where not c1 >=all (select c2 from semi_t2 where c2 = c1);
QUERY PLAN
------------------------------------------------------------------
Gather Motion 6:1 (slice1; segments: 6)
-> Hash Semi Join
Hash Cond: (semi_t1.c1 = semi_t2.c2)
Join Filter: (semi_t1.c1 < semi_t2.c2)
-> Redistribute Motion 6:6 (slice2; segments: 6)
Hash Key: semi_t1.c1
Hash Module: 3
-> Parallel Seq Scan on semi_t1
-> Hash
-> Redistribute Motion 3:6 (slice3; segments: 3)
Hash Key: semi_t2.c2
Hash Module: 3
-> Seq Scan on semi_t2
Optimizer: Postgres query optimizer
(14 rows)

-- Parallel Merge Semi Join
set local enable_hashjoin = off;
explain(costs off) select c1 from semi_t1 where not c1 >=all (select c2 from semi_t2 where c2 = c1);
QUERY PLAN
------------------------------------------------------------------
Gather Motion 6:1 (slice1; segments: 6)
-> Merge Semi Join
Merge Cond: (semi_t1.c1 = semi_t2.c2)
Join Filter: (semi_t1.c1 < semi_t2.c2)
-> Sort
Sort Key: semi_t1.c1
-> Redistribute Motion 6:6 (slice2; segments: 6)
Hash Key: semi_t1.c1
Hash Module: 3
-> Parallel Seq Scan on semi_t1
-> Sort
Sort Key: semi_t2.c2
-> Redistribute Motion 3:6 (slice3; segments: 3)
Hash Key: semi_t2.c2
Hash Module: 3
-> Seq Scan on semi_t2
Optimizer: Postgres query optimizer
(17 rows)

set local enable_mergejoin = off;
set local enable_nestloop = on;
-- Parallel Nested Loop Semi Join
explain(costs off) select c1 from semi_t1 where not c1 >=all (select c2 from semi_t2 where c2 = c1);
QUERY PLAN
--------------------------------------------------------------------------------
Gather Motion 6:1 (slice1; segments: 6)
-> Nested Loop Semi Join
Join Filter: ((semi_t1.c1 < semi_t2.c2) AND (semi_t1.c1 = semi_t2.c2))
-> Redistribute Motion 6:6 (slice2; segments: 6)
Hash Key: semi_t1.c1
Hash Module: 3
-> Parallel Seq Scan on semi_t1
-> Materialize
-> Redistribute Motion 3:6 (slice3; segments: 3)
Hash Key: semi_t2.c2
Hash Module: 3
-> Seq Scan on semi_t2
Optimizer: Postgres query optimizer
(13 rows)

abort;
-- start_ignore
drop schema test_parallel cascade;
Expand Down
29 changes: 29 additions & 0 deletions src/test/regress/sql/gp_parallel.sql
Original file line number Diff line number Diff line change
Expand Up @@ -708,6 +708,35 @@ explain(costs off) create table ctas_ao using ao_row as select sum(a.c2) as c2,
explain(costs off) create table ctas_aoco using ao_column as select sum(a.c2) as c2, avg(b.c1) as c1 from t_p2 a join t_p2 b on a.c1 = b.c1 distributed by(c2);
abort;

--
-- Parallel Semi Join
--
begin;
set local optimizer=off;
set local enable_parallel=on;
set local force_parallel_mode =1 ;
set local min_parallel_table_scan_size = 0;
create table semi_t1 (c1 integer) with(parallel_workers=2) distributed randomly;
create table semi_t2 (c2 integer) with(parallel_workers=2) distributed randomly;
insert into semi_t1 values (generate_series (1,20000));
insert into semi_t2 values (generate_series (1,10000));
analyze semi_t1;
analyze semi_t2;

-- Parallel-aware Hash Semi Join
explain(costs off) select c1 from semi_t1 where not c1 >=all (select c2 from semi_t2 where c2 = c1);
-- Parallel-oblivious Hash Semi Join
set local enable_parallel_hash = off;
explain(costs off) select c1 from semi_t1 where not c1 >=all (select c2 from semi_t2 where c2 = c1);
-- Parallel Merge Semi Join
set local enable_hashjoin = off;
explain(costs off) select c1 from semi_t1 where not c1 >=all (select c2 from semi_t2 where c2 = c1);
set local enable_mergejoin = off;
set local enable_nestloop = on;
-- Parallel Nested Loop Semi Join
explain(costs off) select c1 from semi_t1 where not c1 >=all (select c2 from semi_t2 where c2 = c1);
abort;

-- start_ignore
drop schema test_parallel cascade;
-- end_ignore
Expand Down