Commit b563594
committed
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.uk1 parent f0a6046 commit b563594
File tree
22 files changed
+2544
-594
lines changed- contrib/postgres_fdw/expected
- src
- backend
- commands
- executor
- lib
- nodes
- optimizer
- path
- plan
- util
- include
- lib
- nodes
- optimizer
- test/regress
- expected
- sql
22 files changed
+2544
-594
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3276 | 3276 | | |
3277 | 3277 | | |
3278 | 3278 | | |
3279 | | - | |
3280 | | - | |
3281 | | - | |
3282 | | - | |
3283 | | - | |
3284 | | - | |
3285 | | - | |
3286 | | - | |
3287 | | - | |
3288 | | - | |
| 3279 | + | |
| 3280 | + | |
| 3281 | + | |
| 3282 | + | |
| 3283 | + | |
| 3284 | + | |
| 3285 | + | |
| 3286 | + | |
| 3287 | + | |
| 3288 | + | |
| 3289 | + | |
| 3290 | + | |
| 3291 | + | |
3289 | 3292 | | |
3290 | 3293 | | |
3291 | 3294 | | |
| |||
3298 | 3301 | | |
3299 | 3302 | | |
3300 | 3303 | | |
3301 | | - | |
3302 | | - | |
3303 | | - | |
3304 | | - | |
3305 | | - | |
3306 | | - | |
3307 | | - | |
3308 | | - | |
3309 | | - | |
3310 | | - | |
| 3304 | + | |
| 3305 | + | |
| 3306 | + | |
| 3307 | + | |
| 3308 | + | |
| 3309 | + | |
| 3310 | + | |
| 3311 | + | |
| 3312 | + | |
| 3313 | + | |
| 3314 | + | |
| 3315 | + | |
| 3316 | + | |
3311 | 3317 | | |
3312 | 3318 | | |
3313 | 3319 | | |
| |||
3320 | 3326 | | |
3321 | 3327 | | |
3322 | 3328 | | |
3323 | | - | |
3324 | | - | |
| 3329 | + | |
| 3330 | + | |
3325 | 3331 | | |
3326 | 3332 | | |
3327 | 3333 | | |
3328 | | - | |
| 3334 | + | |
3329 | 3335 | | |
3330 | | - | |
3331 | | - | |
3332 | | - | |
| 3336 | + | |
| 3337 | + | |
3333 | 3338 | | |
3334 | 3339 | | |
3335 | | - | |
3336 | | - | |
| 3340 | + | |
| 3341 | + | |
3337 | 3342 | | |
3338 | 3343 | | |
3339 | 3344 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1015 | 1015 | | |
1016 | 1016 | | |
1017 | 1017 | | |
| 1018 | + | |
| 1019 | + | |
| 1020 | + | |
| 1021 | + | |
1018 | 1022 | | |
1019 | 1023 | | |
1020 | 1024 | | |
| |||
1978 | 1982 | | |
1979 | 1983 | | |
1980 | 1984 | | |
| 1985 | + | |
| 1986 | + | |
| 1987 | + | |
| 1988 | + | |
| 1989 | + | |
| 1990 | + | |
| 1991 | + | |
| 1992 | + | |
| 1993 | + | |
| 1994 | + | |
| 1995 | + | |
| 1996 | + | |
| 1997 | + | |
1981 | 1998 | | |
1982 | 1999 | | |
1983 | 2000 | | |
| |||
1992 | 2009 | | |
1993 | 2010 | | |
1994 | 2011 | | |
1995 | | - | |
| 2012 | + | |
1996 | 2013 | | |
1997 | 2014 | | |
1998 | 2015 | | |
| |||
2016 | 2033 | | |
2017 | 2034 | | |
2018 | 2035 | | |
2019 | | - | |
| 2036 | + | |
2020 | 2037 | | |
2021 | | - | |
| 2038 | + | |
2022 | 2039 | | |
2023 | 2040 | | |
2024 | | - | |
| 2041 | + | |
2025 | 2042 | | |
2026 | 2043 | | |
2027 | 2044 | | |
| |||
0 commit comments