• Andres Freund's avatar
    Simplify representation of aggregate transition values a bit. · f9ccf92e
    Andres Freund authored
    Previously aggregate transition values for hash and other forms of
    aggregation (i.e. sort and no group by) were represented
    differently. Hash based aggregation used a grouping set indexed array
    pointing to an array of transition values, whereas other forms of
    aggregation used one flattened array with the index being computed out
    of grouping set and transition offsets.
    
    That made upcoming changes hard, so represent both as grouping set
    indexed array of per-group data.
    
    As a nice side-effect this also makes aggregation slightly faster,
    because computing offsets with `transno + (setno * numTrans)` turns
    out not to be that cheap (too big for x86 lea for example).
    
    Author: Andres Freund
    Discussion: https://postgr.es/m/20171128003121.nmxbm2ounxzb6n2t@alap3.anarazel.de
    f9ccf92e
nodeAgg.c 134 KB