]> granicus.if.org Git - postgresql/commitdiff
Improve code coverage of select_parallel test.
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 31 Aug 2017 17:15:54 +0000 (13:15 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 31 Aug 2017 17:15:54 +0000 (13:15 -0400)
Make sure that rescans of parallel indexscans are tested.
Per code coverage report.

src/test/regress/expected/select_parallel.out
src/test/regress/sql/select_parallel.sql

index 888da5abf2aa7aa4716792471d1abdcfa9fbe392..2ae600f1bbbd130903df860c71fa06947b2e82ec 100644 (file)
@@ -179,6 +179,61 @@ select  count(*) from tenk1 where thousand > 95;
   9040
 (1 row)
 
+-- test rescan cases too
+set enable_material = false;
+explain (costs off)
+select * from
+  (select count(unique1) from tenk1 where hundred > 10) ss
+  right join (values (1),(2),(3)) v(x) on true;
+                                QUERY PLAN                                
+--------------------------------------------------------------------------
+ Nested Loop Left Join
+   ->  Values Scan on "*VALUES*"
+   ->  Finalize Aggregate
+         ->  Gather
+               Workers Planned: 4
+               ->  Partial Aggregate
+                     ->  Parallel Index Scan using tenk1_hundred on tenk1
+                           Index Cond: (hundred > 10)
+(8 rows)
+
+select * from
+  (select count(unique1) from tenk1 where hundred > 10) ss
+  right join (values (1),(2),(3)) v(x) on true;
+ count | x 
+-------+---
+  8900 | 1
+  8900 | 2
+  8900 | 3
+(3 rows)
+
+explain (costs off)
+select * from
+  (select count(*) from tenk1 where thousand > 99) ss
+  right join (values (1),(2),(3)) v(x) on true;
+                                      QUERY PLAN                                      
+--------------------------------------------------------------------------------------
+ Nested Loop Left Join
+   ->  Values Scan on "*VALUES*"
+   ->  Finalize Aggregate
+         ->  Gather
+               Workers Planned: 4
+               ->  Partial Aggregate
+                     ->  Parallel Index Only Scan using tenk1_thous_tenthous on tenk1
+                           Index Cond: (thousand > 99)
+(8 rows)
+
+select * from
+  (select count(*) from tenk1 where thousand > 99) ss
+  right join (values (1),(2),(3)) v(x) on true;
+ count | x 
+-------+---
+  9000 | 1
+  9000 | 2
+  9000 | 3
+(3 rows)
+
+reset enable_material;
 reset enable_seqscan;
 reset enable_bitmapscan;
 -- test parallel bitmap heap scan.
index cefb5a27d4d5967e0ed461d05e6d7b38b5f86a04..89fe80a35c296d7946e95a5371d74169c0520080 100644 (file)
@@ -65,6 +65,26 @@ explain (costs off)
        select  count(*) from tenk1 where thousand > 95;
 select  count(*) from tenk1 where thousand > 95;
 
+-- test rescan cases too
+set enable_material = false;
+
+explain (costs off)
+select * from
+  (select count(unique1) from tenk1 where hundred > 10) ss
+  right join (values (1),(2),(3)) v(x) on true;
+select * from
+  (select count(unique1) from tenk1 where hundred > 10) ss
+  right join (values (1),(2),(3)) v(x) on true;
+
+explain (costs off)
+select * from
+  (select count(*) from tenk1 where thousand > 99) ss
+  right join (values (1),(2),(3)) v(x) on true;
+select * from
+  (select count(*) from tenk1 where thousand > 99) ss
+  right join (values (1),(2),(3)) v(x) on true;
+
+reset enable_material;
 reset enable_seqscan;
 reset enable_bitmapscan;