Support hashed aggregation with grouping sets.

Andrew Gierth <rhodiumtoad@postgresql.org>

Commit: b5635948ab165b6070e7d05d111f966e07570d81
Author: Andrew Gierth <rhodiumtoad@postgresql.org>
Date: 2017-03-27T03:20:54Z
Releases: 10.0
Support hashed aggregation with grouping sets.

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

Files

Discussion