On Tue, Mar 15, 2016 at 6:55 PM, David Rowley <david.row...@2ndquadrant.com> wrote: > On 16 March 2016 at 11:00, Robert Haas <robertmh...@gmail.com> wrote: >> I don't see why we would need to leave aggpartial out of the equals() >> check. I must be missing something. > > See fix_combine_agg_expr_mutator() > > This piece of code: > > /* > * Aggrefs for partial aggregates are wrapped up in a PartialAggref, > * we need to look into the PartialAggref to find the Aggref within. > */ > foreach(lc, context->subplan_itlist->tlist) > { > PartialAggref *paggref; > tle = (TargetEntry *) lfirst(lc); > paggref = (PartialAggref *) tle->expr; > > if (IsA(paggref, PartialAggref) && > equal(paggref->aggref, aggref)) > break; > } > > if equals() compared the aggpartial then this code would fail to find > the Aggref in the subnode due to the aggpartial field being true on > one and false on the other Aggref.
...and why would one be true and the other false? -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers