@ -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)