Fix unstable partition_prune regression tests
authorDavid Rowley <[email protected]>
Mon, 2 Nov 2020 06:59:02 +0000 (19:59 +1300)
committerDavid Rowley <[email protected]>
Mon, 2 Nov 2020 06:59:02 +0000 (19:59 +1300)
This was broken recently by a929e17e5.  I'd failed to remember that
parallel tests should have their EXPLAIN output run through the
explain_parallel_append function so that the output is stable when
parallel workers fail to start.

fairywren was first to notice.

Reported-by: Michael Paquier
Discussion: https://postgr.es/m/20201102062951[email protected]

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

index 80e71b8e2b9ccffa24c39cc83fcc8f3c93298783..c72a6d051f1dd02a69335b65b8bd9dd8a140ba12 100644 (file)
@@ -3684,18 +3684,17 @@ create table listp_12_2 partition of listp_12 for values in(2);
 alter table listp_12_1 set (parallel_workers = 0);
 -- Ensure that listp_12_2 is not scanned.  (The nested Append is not seen in
 -- the plan as it's pulled in setref.c due to having just a single subnode).
-explain (analyze on, costs off, timing off, summary off)
-select * from listp where a = (select 1);
-                              QUERY PLAN                              
+select explain_parallel_append('select * from listp where a = (select 1);');
+                       explain_parallel_append                        
 ----------------------------------------------------------------------
- Gather (actual rows=0 loops=1)
+ Gather (actual rows=N loops=N)
    Workers Planned: 2
    Params Evaluated: $0
-   Workers Launched: 2
+   Workers Launched: N
    InitPlan 1 (returns $0)
-     ->  Result (actual rows=1 loops=1)
-   ->  Parallel Append (actual rows=0 loops=3)
-         ->  Seq Scan on listp_12_1 listp_1 (actual rows=0 loops=1)
+     ->  Result (actual rows=N loops=N)
+   ->  Parallel Append (actual rows=N loops=N)
+         ->  Seq Scan on listp_12_1 listp_1 (actual rows=N loops=N)
                Filter: (a = $0)
          ->  Parallel Seq Scan on listp_12_2 listp_2 (never executed)
                Filter: (a = $0)
@@ -3704,34 +3703,34 @@ select * from listp where a = (select 1);
 -- Like the above but throw some more complexity at the planner by adding
 -- a UNION ALL.  We expect both sides of the union not to scan the
 -- non-required partitions.
-explain (analyze on, costs off, timing off, summary off)
-select * from listp where a = (select 1)
+select explain_parallel_append(
+'select * from listp where a = (select 1)
   union all
-select * from listp where a = (select 2);
-                                    QUERY PLAN                                     
+select * from listp where a = (select 2);');
+                              explain_parallel_append                              
 -----------------------------------------------------------------------------------
- Append (actual rows=0 loops=1)
-   ->  Gather (actual rows=0 loops=1)
+ Append (actual rows=N loops=N)
+   ->  Gather (actual rows=N loops=N)
          Workers Planned: 2
          Params Evaluated: $0
-         Workers Launched: 2
+         Workers Launched: N
          InitPlan 1 (returns $0)
-           ->  Result (actual rows=1 loops=1)
-         ->  Parallel Append (actual rows=0 loops=3)
-               ->  Seq Scan on listp_12_1 listp_1 (actual rows=0 loops=1)
+           ->  Result (actual rows=N loops=N)
+         ->  Parallel Append (actual rows=N loops=N)
+               ->  Seq Scan on listp_12_1 listp_1 (actual rows=N loops=N)
                      Filter: (a = $0)
                ->  Parallel Seq Scan on listp_12_2 listp_2 (never executed)
                      Filter: (a = $0)
-   ->  Gather (actual rows=0 loops=1)
+   ->  Gather (actual rows=N loops=N)
          Workers Planned: 2
          Params Evaluated: $1
-         Workers Launched: 2
+         Workers Launched: N
          InitPlan 2 (returns $1)
-           ->  Result (actual rows=1 loops=1)
-         ->  Parallel Append (actual rows=0 loops=3)
+           ->  Result (actual rows=N loops=N)
+         ->  Parallel Append (actual rows=N loops=N)
                ->  Seq Scan on listp_12_1 listp_4 (never executed)
                      Filter: (a = $1)
-               ->  Parallel Seq Scan on listp_12_2 listp_5 (actual rows=0 loops=1)
+               ->  Parallel Seq Scan on listp_12_2 listp_5 (actual rows=N loops=N)
                      Filter: (a = $1)
 (23 rows)
 
index 939a9b1193ed57d19ad90bb4299afacfb2416ac1..ffd5fe8b0dc501f09de9ce3e53172802fa71105f 100644 (file)
@@ -1067,16 +1067,15 @@ alter table listp_12_1 set (parallel_workers = 0);
 
 -- Ensure that listp_12_2 is not scanned.  (The nested Append is not seen in
 -- the plan as it's pulled in setref.c due to having just a single subnode).
-explain (analyze on, costs off, timing off, summary off)
-select * from listp where a = (select 1);
+select explain_parallel_append('select * from listp where a = (select 1);');
 
 -- Like the above but throw some more complexity at the planner by adding
 -- a UNION ALL.  We expect both sides of the union not to scan the
 -- non-required partitions.
-explain (analyze on, costs off, timing off, summary off)
-select * from listp where a = (select 1)
+select explain_parallel_append(
+'select * from listp where a = (select 1)
   union all
-select * from listp where a = (select 2);
+select * from listp where a = (select 2);');
 
 drop table listp;
 reset parallel_tuple_cost;