]> granicus.if.org Git - postgresql/commitdiff
Expand coverage of parallel gather merge a bit.
authorAndres Freund <andres@anarazel.de>
Mon, 14 Aug 2017 22:21:26 +0000 (15:21 -0700)
committerAndres Freund <andres@anarazel.de>
Mon, 14 Aug 2017 22:27:47 +0000 (15:27 -0700)
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
src/test/regress/sql/select_parallel.sql

index 3e35e96c4b3a8f88a03fedaee9783bee224d5776..0efb211c970431a52d2ab53db708b6b109028e58 100644 (file)
@@ -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)
index d2d262c7249599cd10156f3402d0983f990dfdc9..e717f92e530b64affb46983208189a3e30f8188b 100644 (file)
@@ -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;