From d2bc501573d98ff5541271dca94fb5f7a004ecbf Mon Sep 17 00:00:00 2001 From: Andres Freund Date: Mon, 14 Aug 2017 15:21:26 -0700 Subject: [PATCH] Expand coverage of parallel gather merge a bit. Previously paths reaching heap_compare_slots weren't covered. Author: Rushabh Lathia Reviewed-By: Andres Freund Discussion: https://postgr.es/m/CAGPqQf3C+3PBujb+7m=ceWeii4-vBY=XS99LjzrpkpefvzJbFg@mail.gmail.com https://postgr.es/m/27200.1502482851@sss.pgh.pa.us Backpatch: 10, where gather merge was introduced --- src/test/regress/expected/select_parallel.out | 69 +++++++++++++++---- src/test/regress/sql/select_parallel.sql | 14 ++-- 2 files changed, 65 insertions(+), 18 deletions(-) diff --git a/src/test/regress/expected/select_parallel.out b/src/test/regress/expected/select_parallel.out index 3e35e96c4b..0efb211c97 100644 --- a/src/test/regress/expected/select_parallel.out +++ b/src/test/regress/expected/select_parallel.out @@ -258,32 +258,73 @@ select count(*) from tenk1, tenk2 where tenk1.unique1 = tenk2.unique1; reset enable_hashjoin; reset enable_nestloop; ---test gather merge -set enable_hashagg to off; +-- test gather merge +set enable_hashagg = false; explain (costs off) - select string4, count((unique2)) from tenk1 group by string4 order by string4; + select count(*) from tenk1 group by twenty; QUERY PLAN ---------------------------------------------------- Finalize GroupAggregate - Group Key: string4 + Group Key: twenty -> Gather Merge Workers Planned: 4 -> Partial GroupAggregate - Group Key: string4 + Group Key: twenty -> Sort - Sort Key: string4 + Sort Key: twenty -> Parallel Seq Scan on tenk1 (9 rows) -select string4, count((unique2)) from tenk1 group by string4 order by string4; - string4 | count ----------+------- - AAAAxx | 2500 - HHHHxx | 2500 - OOOOxx | 2500 - VVVVxx | 2500 -(4 rows) +select count(*) from tenk1 group by twenty; + count +------- + 500 + 500 + 500 + 500 + 500 + 500 + 500 + 500 + 500 + 500 + 500 + 500 + 500 + 500 + 500 + 500 + 500 + 500 + 500 + 500 +(20 rows) + +-- gather merge test with 0 worker +set max_parallel_workers = 0; +explain (costs off) + select string4 from tenk1 order by string4 limit 5; + QUERY PLAN +---------------------------------------------- + Limit + -> Gather Merge + Workers Planned: 4 + -> Sort + Sort Key: string4 + -> Parallel Seq Scan on tenk1 +(6 rows) + +select string4 from tenk1 order by string4 limit 5; + string4 +--------- + AAAAxx + AAAAxx + AAAAxx + AAAAxx + AAAAxx +(5 rows) +reset max_parallel_workers; reset enable_hashagg; set force_parallel_mode=1; explain (costs off) diff --git a/src/test/regress/sql/select_parallel.sql b/src/test/regress/sql/select_parallel.sql index d2d262c724..e717f92e53 100644 --- a/src/test/regress/sql/select_parallel.sql +++ b/src/test/regress/sql/select_parallel.sql @@ -110,14 +110,20 @@ select count(*) from tenk1, tenk2 where tenk1.unique1 = tenk2.unique1; reset enable_hashjoin; reset enable_nestloop; ---test gather merge -set enable_hashagg to off; +-- test gather merge +set enable_hashagg = false; explain (costs off) - select string4, count((unique2)) from tenk1 group by string4 order by string4; + select count(*) from tenk1 group by twenty; -select string4, count((unique2)) from tenk1 group by string4 order by string4; +select count(*) from tenk1 group by twenty; +-- gather merge test with 0 worker +set max_parallel_workers = 0; +explain (costs off) + select string4 from tenk1 order by string4 limit 5; +select string4 from tenk1 order by string4 limit 5; +reset max_parallel_workers; reset enable_hashagg; set force_parallel_mode=1; -- 2.40.0