Implement partition-wise grouping/aggregation.
 
 If the partition keys of input relation are part of the GROUP BY
 clause, all the rows belonging to a given group come from a single
 partition.  This allows aggregation/grouping over a partitioned
 relation to be broken down * into aggregation/grouping on each
 partition.  This should be no worse, and often better, than the normal
 approach.
 
 If the GROUP BY clause does not contain all the partition keys, we can
 still perform partial aggregation for each partition and then finalize
 aggregation after appending the partial results.  This is less certain
 to be a win, but it's still useful.
 
 Jeevan Chalke, Ashutosh Bapat, Robert Haas.  The larger patch series
 of which this patch is a part was also reviewed and tested by Antonin
 Houska, Rajkumar Raghuwanshi, David Rowley, Dilip Kumar, Konstantin
 Knizhnik, Pascal Legrand, and Rafia Sabih.
 
 Discussion: http://postgr.es/m/CAM2+6=V64_xhstVHie0Rz=KPEQnLJMZt_e314P0jaT_oJ9MR8A@mail.gmail.com
 
  17 files changed: