• Andres Freund's avatar
    Use more efficient hashtable for execGrouping.c to speed up hash aggregation. · 5dfc1981
    Andres Freund authored
    The more efficient hashtable speeds up hash-aggregations with more than
    a few hundred groups significantly. Improvements of over 120% have been
    measured.
    
    Due to the the different hash table queries that not fully
    determined (e.g. GROUP BY without ORDER BY) may change their result
    order.
    
    The conversion is largely straight-forward, except that, due to the
    static element types of simplehash.h type hashes, the additional data
    some users store in elements (e.g. the per-group working data for hash
    aggregaters) is now stored in TupleHashEntryData->additional.  The
    meaning of BuildTupleHashTable's entrysize (renamed to additionalsize)
    has been changed to only be about the additionally stored size.  That
    size is only used for the initial sizing of the hash-table.
    
    Reviewed-By: Tomas Vondra
    Discussion: <20160727004333.r3e2k2y6fvk2ntup@alap3.anarazel.de>
    5dfc1981
executor.h 15.3 KB