• Tom Lane's avatar
    Fix assorted missing logic for GroupingFunc nodes. · 48b6035f
    Tom Lane authored
    The planner needs to treat GroupingFunc like Aggref for many purposes,
    in particular with respect to processing of the argument expressions,
    which are not to be evaluated at runtime.  A few places hadn't gotten
    that memo, notably including subselect.c's processing of outer-level
    aggregates.  This resulted in assertion failures or wrong plans for
    cases in which a GROUPING() construct references an outer aggregation
    level.
    
    Also fix missing special cases for GroupingFunc in cost_qual_eval
    (resulting in wrong cost estimates for GROUPING(), although it's
    not clear that that would affect plan shapes in practice) and in
    ruleutils.c (resulting in excess parentheses in pretty-print mode).
    
    Per bug #17088 from Yaoguang Chen.  Back-patch to all supported
    branches.
    
    Richard Guo, Tom Lane
    
    Discussion: https://postgr.es/m/17088-e33882b387de7f5c@postgresql.org
    48b6035f
nodeFuncs.c 112 KB