]> 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 db31837edea3a93a49cd95e8a40292b2bc649622..74588702a15102d0d1d4f36e9b1b5330077faa18 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 33ce61a0260db34cb0e73f154a16a6065ad20ce7..09c1b03eb1d92fe0ba578625796f174313568198 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;