On Mon, Feb 26, 2018 at 6:38 AM, Jeevan Chalke <jeevan.cha...@enterprisedb.com> wrote: > One idea I thought about is to memcpy the struct once we have set all > required fields for grouped_rel so that we don't have to do similar stuff > for partially_grouped_rel.
I think that would be a poor idea. We want to copy a few specific fields, not everything, and copying those fields is cheap, because they are just simple assignment statements. I think memcpy()'ing the whole structure would be using a sledgehammer to solve a problem for which a scalpel is more suited. > Paths in pathlist are added by add_path(). Though we have paths is pathlist > is sorted with the cheapest total path, we generally use > RelOptInfo->cheapest_total_path instead of using first entry, unlike partial > paths. But here you use the first entry like partial paths case. Will it > better to use cheapest total path from partially_grouped_rel? This will > require calling set_cheapest on partially_grouped_rel before we call this > function. Hmm, I guess that seems like a reasonable approach, although I am not sure it matters much either way. > Attached top-up patch doing this along with few indentation fixes. I don't see much point to the change in generate_gather_paths -- that line is only 77 characters long. Committed after incorporating your other fixes and updating the optimizer README. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company