blob: 73df0c060bdbafe3913195e1797e4e082644b456 [file]
create schema orca_parallel;
set search_path=orca_parallel, public;
set statement_mem = '256MB';
set optimizer=on;
create table t1(a int, b int) with(parallel_workers=2) distributed by (a);
create table t2(c int, d int ) with(parallel_workers=3) distributed by (c);
insert into t1 select i, i+1 from generate_series(1, 1000)i;
insert into t2 select i, i+2 from generate_series(1, 20000)i;
analyze t1;
analyze t2;
set parallel_setup_cost=0;
set max_parallel_workers_per_gather=4;
set enable_parallel = on;
explain (verbose, costs off) select * from t1 join t2 on t1.a = t2.c;
QUERY PLAN
-------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
Output: t1.a, t1.b, t2.c, t2.d
-> Hash Join
Output: t1.a, t1.b, t2.c, t2.d
Hash Cond: (t2.c = t1.a)
-> Redistribute Motion 9:3 (slice2; segments: 9)
Output: t2.c, t2.d
Hash Key: t2.c
-> Parallel Seq Scan on orca_parallel.t2
Output: t2.c, t2.d
-> Hash
Output: t1.a, t1.b
-> Redistribute Motion 6:3 (slice3; segments: 6)
Output: t1.a, t1.b
Hash Key: t1.a
-> Parallel Seq Scan on orca_parallel.t1
Output: t1.a, t1.b
Settings: enable_parallel = 'on', optimizer = 'on', parallel_setup_cost = '0'
Optimizer: GPORCA
(19 rows)
explain (verbose, costs off) select * from t1 join t2 on t1.a = t2.d;
QUERY PLAN
-------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
Output: t1.a, t1.b, t2.c, t2.d
-> Hash Join
Output: t1.a, t1.b, t2.c, t2.d
Hash Cond: (t2.d = t1.a)
-> Redistribute Motion 9:3 (slice2; segments: 9)
Output: t2.c, t2.d
Hash Key: t2.d
-> Parallel Seq Scan on orca_parallel.t2
Output: t2.c, t2.d
-> Hash
Output: t1.a, t1.b
-> Redistribute Motion 6:3 (slice3; segments: 6)
Output: t1.a, t1.b
Hash Key: t1.a
-> Parallel Seq Scan on orca_parallel.t1
Output: t1.a, t1.b
Settings: enable_parallel = 'on', optimizer = 'on', parallel_setup_cost = '0'
Optimizer: GPORCA
(19 rows)
explain (verbose, costs off) select * from t1 join t2 on t1.b = t2.c;
QUERY PLAN
-------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
Output: t1.a, t1.b, t2.c, t2.d
-> Hash Join
Output: t1.a, t1.b, t2.c, t2.d
Hash Cond: (t2.c = t1.b)
-> Redistribute Motion 9:3 (slice2; segments: 9)
Output: t2.c, t2.d
Hash Key: t2.c
-> Parallel Seq Scan on orca_parallel.t2
Output: t2.c, t2.d
-> Hash
Output: t1.a, t1.b
-> Redistribute Motion 6:3 (slice3; segments: 6)
Output: t1.a, t1.b
Hash Key: t1.b
-> Parallel Seq Scan on orca_parallel.t1
Output: t1.a, t1.b
Settings: enable_parallel = 'on', optimizer = 'on', parallel_setup_cost = '0'
Optimizer: GPORCA
(19 rows)
explain (verbose, costs off) select * from t1 join t2 on t1.b = t2.d;
QUERY PLAN
-------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
Output: t1.a, t1.b, t2.c, t2.d
-> Hash Join
Output: t1.a, t1.b, t2.c, t2.d
Hash Cond: (t2.d = t1.b)
-> Redistribute Motion 9:3 (slice2; segments: 9)
Output: t2.c, t2.d
Hash Key: t2.d
-> Parallel Seq Scan on orca_parallel.t2
Output: t2.c, t2.d
-> Hash
Output: t1.a, t1.b
-> Redistribute Motion 6:3 (slice3; segments: 6)
Output: t1.a, t1.b
Hash Key: t1.b
-> Parallel Seq Scan on orca_parallel.t1
Output: t1.a, t1.b
Settings: enable_parallel = 'on', optimizer = 'on', parallel_setup_cost = '0'
Optimizer: GPORCA
(19 rows)
reset enable_parallel;
reset max_parallel_workers_per_gather;
reset parallel_setup_cost;
reset statement_mem;
reset optimizer;
-- start_ignore
drop schema orca_parallel cascade;
NOTICE: drop cascades to 2 other objects
DETAIL: drop cascades to table t1
drop cascades to table t2
-- end_ignore