diff options
author | Jeff Davis <jdavis@postgresql.org> | 2020-02-06 11:49:56 -0800 |
---|---|---|
committer | Jeff Davis <jdavis@postgresql.org> | 2020-02-06 11:49:56 -0800 |
commit | 7d4395d0a11589aa450a073d658c49b420f4493f (patch) | |
tree | b9be6165922e73d2351d8565f9051184ae56f036 /src/backend/executor/nodeAgg.c | |
parent | c02fdc9223015c5c386abfa00c47fc7f4c845161 (diff) | |
download | postgresql-7d4395d0a11589aa450a073d658c49b420f4493f.tar.gz postgresql-7d4395d0a11589aa450a073d658c49b420f4493f.zip |
Refactor hash_agg_entry_size().
Consolidate the calculations for hash table size estimation. This will
help with upcoming Hash Aggregation work that will add additional call
sites.
Diffstat (limited to 'src/backend/executor/nodeAgg.c')
-rw-r--r-- | src/backend/executor/nodeAgg.c | 23 |
1 files changed, 8 insertions, 15 deletions
diff --git a/src/backend/executor/nodeAgg.c b/src/backend/executor/nodeAgg.c index 9073395eacf..b7f49ceddf8 100644 --- a/src/backend/executor/nodeAgg.c +++ b/src/backend/executor/nodeAgg.c @@ -1422,24 +1422,17 @@ find_hash_columns(AggState *aggstate) } /* - * Estimate per-hash-table-entry overhead for the planner. - * - * Note that the estimate does not include space for pass-by-reference - * transition data values, nor for the representative tuple of each group. - * Nor does this account of the target fill-factor and growth policy of the - * hash table. + * Estimate per-hash-table-entry overhead. */ Size -hash_agg_entry_size(int numAggs) +hash_agg_entry_size(int numAggs, Size tupleWidth, Size transitionSpace) { - Size entrysize; - - /* This must match build_hash_table */ - entrysize = sizeof(TupleHashEntryData) + - numAggs * sizeof(AggStatePerGroupData); - entrysize = MAXALIGN(entrysize); - - return entrysize; + return + MAXALIGN(SizeofMinimalTupleHeader) + + MAXALIGN(tupleWidth) + + MAXALIGN(sizeof(TupleHashEntryData) + + numAggs * sizeof(AggStatePerGroupData)) + + transitionSpace; } /* |