mirror of
https://github.com/postgres/postgres.git
synced 2025-06-27 23:21:58 +03:00
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
This commit is contained in:
17
src/include/lib/knapsack.h
Normal file
17
src/include/lib/knapsack.h
Normal file
@ -0,0 +1,17 @@
|
||||
/*
|
||||
* knapsack.h
|
||||
*
|
||||
* Copyright (c) 2017, PostgreSQL Global Development Group
|
||||
*
|
||||
* src/include/lib/knapsack.h
|
||||
*/
|
||||
#ifndef KNAPSACK_H
|
||||
#define KNAPSACK_H
|
||||
|
||||
#include "postgres.h"
|
||||
#include "nodes/bitmapset.h"
|
||||
|
||||
extern Bitmapset *DiscreteKnapsack(int max_weight, int num_items,
|
||||
int *item_weights, double *item_values);
|
||||
|
||||
#endif /* KNAPSACK_H */
|
Reference in New Issue
Block a user