aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor/nodeAgg.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2015-02-20 17:32:01 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2015-02-20 17:32:01 -0500
commit33a3b03d636b529b27f869e332b6344d52635331 (patch)
treec5227d0a7013626e9fa9c0973075de224bd4fa33 /src/backend/executor/nodeAgg.c
parentc110eff1324f5c882c737ad988191ed4a54c4936 (diff)
downloadpostgresql-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.c14
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 *);