]> granicus.if.org Git - postgresql/commit
Simplify planner's final setup of Aggrefs for partial aggregation.
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 26 Jun 2016 16:08:12 +0000 (12:08 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 26 Jun 2016 16:08:12 +0000 (12:08 -0400)
commit59a3795c2589a0e6dfe4d9a886de9423b3f8b057
treec8481f4c3fbf105d69c6d5ecf647644238b0247a
parente3ad3ffa68193dd889a9cea9d840bf4613bd680b
Simplify planner's final setup of Aggrefs for partial aggregation.

Commit e06a38965's original coding for constructing the execution-time
expression tree for a combining aggregate was rather messy, involving
duplicating quite a lot of code in setrefs.c so that it could inject
a nonstandard matching rule for Aggrefs.  Get rid of that in favor of
explicitly constructing a combining Aggref with a partial Aggref as input,
then allowing setref's normal matching logic to match the partial Aggref
to the output of the lower plan node and hence replace it with a Var.

In passing, rename and redocument make_partialgroup_input_target to have
some connection to what it actually does.
src/backend/optimizer/plan/planner.c
src/backend/optimizer/plan/setrefs.c
src/backend/optimizer/util/tlist.c
src/include/optimizer/planner.h
src/include/optimizer/tlist.h