-- Without ORDER BY clause, to test Gather at top-most path
EXPLAIN (COSTS ON)
SELECT a, sum(b), array_agg(distinct c), count(*) FROM pagg_tab_ml GROUP BY a HAVING avg(b) < 3;
                                                 QUERY PLAN                                                  
-------------------------------------------------------------------------------------------------------------
 Append  (cost=779.41..2490.61 rows=10 width=52)
   ->  GroupAggregate  (cost=779.41..959.62 rows=4 width=52)
         Group Key: pagg_tab_ml.a
         Filter: (avg(pagg_tab_ml.b) < '3'::numeric)
         ->  Sort  (cost=779.41..809.41 rows=12000 width=13)
               Sort Key: pagg_tab_ml.a
               ->  Seq Scan on pagg_tab_ml_p1 pagg_tab_ml  (cost=0.00..185.00 rows=12000 width=13)
   ->  GroupAggregate  (cost=560.28..680.42 rows=3 width=52)
         Group Key: pagg_tab_ml_2.a
         Filter: (avg(pagg_tab_ml_2.b) < '3'::numeric)
         ->  Sort  (cost=560.28..580.28 rows=8000 width=13)
               Sort Key: pagg_tab_ml_2.a
               ->  Append  (cost=0.00..164.00 rows=8000 width=13)
                     ->  Seq Scan on pagg_tab_ml_p2_s1 pagg_tab_ml_2  (cost=0.00..93.00 rows=6000 width=13)
                     ->  Seq Scan on pagg_tab_ml_p2_s2 pagg_tab_ml_3  (cost=0.00..31.00 rows=2000 width=13)
   ->  GroupAggregate  (cost=700.34..850.52 rows=3 width=52)
         Group Key: pagg_tab_ml_5.a
         Filter: (avg(pagg_tab_ml_5.b) < '3'::numeric)
         ->  Sort  (cost=700.34..725.34 rows=10000 width=13)
               Sort Key: pagg_tab_ml_5.a
               ->  Append  (cost=0.00..205.00 rows=10000 width=13)
                     ->  Seq Scan on pagg_tab_ml_p3_s1 pagg_tab_ml_5  (cost=0.00..108.00 rows=7000 width=13)
                     ->  Seq Scan on pagg_tab_ml_p3_s2 pagg_tab_ml_6  (cost=0.00..47.00 rows=3000 width=13)
(23 rows)

SET parallel_setup_cost = 0;
EXPLAIN (COSTS ON)
SELECT a, sum(b), array_agg(distinct c), count(*) FROM pagg_tab_ml GROUP BY a HAVING avg(b) < 3;
                                                    QUERY PLAN                                                     
-------------------------------------------------------------------------------------------------------------------
 Gather  (cost=700.34..1531.76 rows=8 width=52)
   Workers Planned: 2
   ->  Parallel Append  (cost=700.34..1530.96 rows=4 width=52)
         ->  GroupAggregate  (cost=779.41..959.62 rows=4 width=52)
               Group Key: pagg_tab_ml.a
               Filter: (avg(pagg_tab_ml.b) < '3'::numeric)
               ->  Sort  (cost=779.41..809.41 rows=12000 width=13)
                     Sort Key: pagg_tab_ml.a
                     ->  Seq Scan on pagg_tab_ml_p1 pagg_tab_ml  (cost=0.00..185.00 rows=12000 width=13)
         ->  GroupAggregate  (cost=700.34..850.52 rows=3 width=52)
               Group Key: pagg_tab_ml_5.a
               Filter: (avg(pagg_tab_ml_5.b) < '3'::numeric)
               ->  Sort  (cost=700.34..725.34 rows=10000 width=13)
                     Sort Key: pagg_tab_ml_5.a
                     ->  Append  (cost=0.00..205.00 rows=10000 width=13)
                           ->  Seq Scan on pagg_tab_ml_p3_s1 pagg_tab_ml_5  (cost=0.00..108.00 rows=7000 width=13)
                           ->  Seq Scan on pagg_tab_ml_p3_s2 pagg_tab_ml_6  (cost=0.00..47.00 rows=3000 width=13)
         ->  GroupAggregate  (cost=560.28..680.42 rows=3 width=52)
               Group Key: pagg_tab_ml_2.a
               Filter: (avg(pagg_tab_ml_2.b) < '3'::numeric)
               ->  Sort  (cost=560.28..580.28 rows=8000 width=13)
                     Sort Key: pagg_tab_ml_2.a
                     ->  Append  (cost=0.00..164.00 rows=8000 width=13)
                           ->  Seq Scan on pagg_tab_ml_p2_s1 pagg_tab_ml_2  (cost=0.00..93.00 rows=6000 width=13)
                           ->  Seq Scan on pagg_tab_ml_p2_s2 pagg_tab_ml_3  (cost=0.00..31.00 rows=2000 width=13)
(25 rows)
