This is an automated email from the ASF dual-hosted git repository. yjhjstz pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/cloudberry.git
commit 81a5f31d2eb9db048d646b60f6ee4fda6d1d18ba Author: Jianghua Yang <[email protected]> AuthorDate: Thu May 14 01:37:28 2026 +0800 orca: add parallel scan test --- src/test/regress/expected/orca_parallel.out | 120 ++++++++++++++++++++++++++++ src/test/regress/parallel_schedule | 3 + src/test/regress/sql/orca_parallel.sql | 31 +++++++ 3 files changed, 154 insertions(+) diff --git a/src/test/regress/expected/orca_parallel.out b/src/test/regress/expected/orca_parallel.out new file mode 100644 index 00000000000..73df0c060bd --- /dev/null +++ b/src/test/regress/expected/orca_parallel.out @@ -0,0 +1,120 @@ +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 diff --git a/src/test/regress/parallel_schedule b/src/test/regress/parallel_schedule index b2ed818f677..532dedcc160 100644 --- a/src/test/regress/parallel_schedule +++ b/src/test/regress/parallel_schedule @@ -194,5 +194,8 @@ test: constraints_check # run stats by itself because its delay may be insufficient under heavy load test: stats +# orca parallel +test: orca_parallel + # test of tag test: tag diff --git a/src/test/regress/sql/orca_parallel.sql b/src/test/regress/sql/orca_parallel.sql new file mode 100644 index 00000000000..dc4689c6bc3 --- /dev/null +++ b/src/test/regress/sql/orca_parallel.sql @@ -0,0 +1,31 @@ +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; +explain (verbose, costs off) select * from t1 join t2 on t1.a = t2.d; +explain (verbose, costs off) select * from t1 join t2 on t1.b = t2.c; +explain (verbose, costs off) select * from t1 join t2 on t1.b = t2.d; + + +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; +-- end_ignore --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
