diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2015-02-20 17:32:01 -0500 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2015-02-20 17:32:01 -0500 |
commit | 33a3b03d636b529b27f869e332b6344d52635331 (patch) | |
tree | c5227d0a7013626e9fa9c0973075de224bd4fa33 /src/backend/executor/nodeAgg.c | |
parent | c110eff1324f5c882c737ad988191ed4a54c4936 (diff) | |
download | postgresql-33a3b03d636b529b27f869e332b6344d52635331.tar.gz postgresql-33a3b03d636b529b27f869e332b6344d52635331.zip |
Use FLEXIBLE_ARRAY_MEMBER in some more places.
Fix a batch of structs that are only visible within individual .c files.
Michael Paquier
Diffstat (limited to 'src/backend/executor/nodeAgg.c')
-rw-r--r-- | src/backend/executor/nodeAgg.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/backend/executor/nodeAgg.c b/src/backend/executor/nodeAgg.c index 8079d977643..9ff0eff6d7b 100644 --- a/src/backend/executor/nodeAgg.c +++ b/src/backend/executor/nodeAgg.c @@ -297,9 +297,9 @@ typedef struct AggHashEntryData *AggHashEntry; typedef struct AggHashEntryData { TupleHashEntryData shared; /* common header for hash table entries */ - /* per-aggregate transition status array - must be last! */ - AggStatePerGroupData pergroup[1]; /* VARIABLE LENGTH ARRAY */ -} AggHashEntryData; /* VARIABLE LENGTH STRUCT */ + /* per-aggregate transition status array */ + AggStatePerGroupData pergroup[FLEXIBLE_ARRAY_MEMBER]; +} AggHashEntryData; static void initialize_aggregates(AggState *aggstate, @@ -941,8 +941,8 @@ build_hash_table(AggState *aggstate) Assert(node->aggstrategy == AGG_HASHED); Assert(node->numGroups > 0); - entrysize = sizeof(AggHashEntryData) + - (aggstate->numaggs - 1) * sizeof(AggStatePerGroupData); + entrysize = offsetof(AggHashEntryData, pergroup) + + aggstate->numaggs * sizeof(AggStatePerGroupData); aggstate->hashtable = BuildTupleHashTable(node->numCols, node->grpColIdx, @@ -1013,8 +1013,8 @@ hash_agg_entry_size(int numAggs) Size entrysize; /* This must match build_hash_table */ - entrysize = sizeof(AggHashEntryData) + - (numAggs - 1) * sizeof(AggStatePerGroupData); + entrysize = offsetof(AggHashEntryData, pergroup) + + numAggs * sizeof(AggStatePerGroupData); entrysize = MAXALIGN(entrysize); /* Account for hashtable overhead (assuming fill factor = 1) */ entrysize += 3 * sizeof(void *); |