• Andrew Gierth's avatar
    Support hashed aggregation with grouping sets. · b5635948
    Andrew Gierth authored
    This extends the Aggregate node with two new features: HashAggregate
    can now run multiple hashtables concurrently, and a new strategy
    MixedAggregate populates hashtables while doing sorted grouping.
    
    The planner will now attempt to save as many sorts as possible when
    planning grouping sets queries, while not exceeding work_mem for the
    estimated combined sizes of all hashtables used.  No SQL-level changes
    are required.  There should be no user-visible impact other than the
    new EXPLAIN output and possible changes to result ordering when ORDER
    BY was not used (which affected a few regression tests).  The
    enable_hashagg option is respected.
    
    Author: Andrew Gierth
    Reviewers: Mark Dilger, Andres Freund
    Discussion: https://postgr.es/m/87vatszyhj.fsf@news-spur.riddles.org.uk
    b5635948
knapsack.c 3.23 KB