• Tom Lane's avatar
    Improve handling of group-column indexes in GroupingSetsPath. · 9e8b9942
    Tom Lane authored
    Instead of having planner.c compute a groupColIdx array and store it in
    GroupingSetsPaths, make create_groupingsets_plan() find the grouping
    columns by searching in the child plan node's tlist.  Although that's
    probably a bit slower for create_groupingsets_plan(), it's more like
    the way every other plan node type does this, and it provides positive
    confirmation that we know which child output columns we're supposed to be
    grouping on.  (Indeed, looking at this now, I'm not at all sure that it
    wasn't broken before, because create_groupingsets_plan() isn't demanding
    an exact tlist match from its child node.)  Also, this allows substantial
    simplification in planner.c, because it no longer needs to compute the
    groupColIdx array at all; no other cases were using it.
    
    I'd intended to put off this refactoring until later (like 9.7), but
    in view of the likely bug fix and the need to rationalize planner.c's
    tlist handling so we can do something sane with Konstantin Knizhnik's
    function-evaluation-postponement patch, I think it can't wait.
    9e8b9942
relation.h 83.5 KB