git.postgresql.org Git - postgresql.git/commit

git projects / postgresql.git / commit
? search:
summary | shortlog | log | commit | commitdiff | tree
(parent: f0a6046) | patch
Support hashed aggregation with grouping sets.
2017年3月27日 03:20:54 +0000 (04:20 +0100)
2017年3月27日 03:20:54 +0000 (04:20 +0100)
commit b5635948ab165b6070e7d05d111f966e07570d81
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
22 files changed:
contrib/postgres_fdw/expected/postgres_fdw.out diff | blob | blame | history
src/backend/commands/explain.c diff | blob | blame | history
src/backend/executor/nodeAgg.c diff | blob | blame | history
src/backend/lib/Makefile diff | blob | blame | history
src/backend/lib/knapsack.c [new file with mode: 0644] blob
src/backend/nodes/bitmapset.c diff | blob | blame | history
src/backend/nodes/outfuncs.c diff | blob | blame | history
src/backend/optimizer/path/costsize.c diff | blob | blame | history
src/backend/optimizer/plan/createplan.c diff | blob | blame | history
src/backend/optimizer/plan/planner.c diff | blob | blame | history
src/backend/optimizer/util/pathnode.c diff | blob | blame | history
src/include/lib/knapsack.h [new file with mode: 0644] blob
src/include/nodes/bitmapset.h diff | blob | blame | history
src/include/nodes/execnodes.h diff | blob | blame | history
src/include/nodes/nodes.h diff | blob | blame | history
src/include/nodes/plannodes.h diff | blob | blame | history
src/include/nodes/relation.h diff | blob | blame | history
src/include/optimizer/pathnode.h diff | blob | blame | history
src/test/regress/expected/groupingsets.out diff | blob | blame | history
src/test/regress/expected/tsrf.out diff | blob | blame | history
src/test/regress/sql/groupingsets.sql diff | blob | blame | history
src/test/regress/sql/tsrf.sql diff | blob | blame | history
This is the main PostgreSQL git repository.
RSS Atom

AltStyle によって変換されたページ (->オリジナル) /