David Rowley <david.row...@2ndquadrant.com> writes: > My gripe is that I've added the required code to build the parallel > group aggregate to create_agg_path() already, but since Group > Aggregate uses the RollupPath I'm forced to add code in > create_rollup_plan() which manually stacks up Plan nodes rather than > just dealing with Paths and create_plan() and its recursive call > magic.
Yeah, RollupPath was something I did to be expeditious rather than something I'm particularly in love with. It's OK for a first version, I think, but we'd need to refactor it if we were to consider more than one implementation strategy for a rollup. Also it's pretty ugly that the code makes a RollupPath even when a basic AggPath is what is meant; that's a leftover from the fact that current HEAD goes through build_grouping_chain() even for simple aggregation without grouping sets. One point to consider is that we don't want the create_foo_path stage to do much more than what's necessary to get a cost/rows estimate. So in general, postponing as much work as possible to createplan.c is a good thing. But we don't want the Path representation to leave any interesting planning choices implicit. My general feeling about this is that I don't want it to be a blocker for getting the basic patch in, but I'll happily consider further refactoring of individual path types once we're over that hump. If you wanted to start on a follow-on patch to deal with this particular issue, be my guest. regards, tom lane -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers