Re: WIP: Upper planner pathification
От | Tom Lane |
---|---|
Тема | Re: WIP: Upper planner pathification |
Дата | |
Msg-id | 17176.1457017489@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: WIP: Upper planner pathification (David Rowley <david.rowley@2ndquadrant.com>) |
Список | pgsql-hackers |
David Rowley <david.rowley@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
В списке pgsql-hackers по дате отправления: