• Heikki Linnakangas's avatar
    Speed up SUM calculation in numeric aggregates. · 9cca11c9
    Heikki Linnakangas authored
    This introduces a numeric sum accumulator, which performs better than
    repeatedly calling add_var(). The performance comes from using wider digits
    and delaying carry propagation, tallying positive and negative values
    separately, and avoiding a round of palloc/pfree on every value. This
    speeds up SUM(), as well as other standard aggregates like AVG() and
    STDDEV() that also calculate a sum internally.
    
    Reviewed-by: Andrey Borodin
    Discussion: <c0545351-a467-5b76-6d46-4840d1ea8aa4@iki.fi>
    9cca11c9
numeric.out 75.3 KB