• Tom Lane's avatar
    Adjust the API for aggregate function calls so that a C-coded function · fa5e4401
    Tom Lane authored
    can tell whether it is being used as an aggregate or not.  This allows
    such a function to avoid re-pallocing a pass-by-reference transition
    value; normally it would be unsafe for a function to scribble on an input,
    but in the aggregate case it's safe to reuse the old transition value.
    Make int8inc() do this.  This gets a useful improvement in the speed of
    COUNT(*), at least on narrow tables (it seems to be swamped by I/O when
    the table rows are wide).  Per a discussion in early December with
    Neil Conway.  I also fixed int_aggregate.c to check this, thereby
    turning it into something approaching a supportable technique instead
    of being a crude hack.
    fa5e4401
nodeAgg.c 45.7 KB