mirror of
https://github.com/postgres/postgres.git
synced 2025-04-21 12:05:57 +03:00
Use FLEXIBLE_ARRAY_MEMBER in some more places.
Fix a batch of structs that are only visible within individual .c files. Michael Paquier
This commit is contained in:
parent
c110eff132
commit
33a3b03d63
@ -1836,7 +1836,7 @@ typedef struct BTVacInfo
|
||||
BTCycleId cycle_ctr; /* cycle ID most recently assigned */
|
||||
int num_vacuums; /* number of currently active VACUUMs */
|
||||
int max_vacuums; /* allocated length of vacuums[] array */
|
||||
BTOneVacInfo vacuums[1]; /* VARIABLE LENGTH ARRAY */
|
||||
BTOneVacInfo vacuums[FLEXIBLE_ARRAY_MEMBER];
|
||||
} BTVacInfo;
|
||||
|
||||
static BTVacInfo *btvacinfo;
|
||||
@ -1984,7 +1984,7 @@ BTreeShmemSize(void)
|
||||
{
|
||||
Size size;
|
||||
|
||||
size = offsetof(BTVacInfo, vacuums[0]);
|
||||
size = offsetof(BTVacInfo, vacuums);
|
||||
size = add_size(size, mul_size(MaxBackends, sizeof(BTOneVacInfo)));
|
||||
return size;
|
||||
}
|
||||
|
@ -258,7 +258,7 @@ typedef struct MultiXactStateData
|
||||
* stored in pg_control and used as truncation point for pg_multixact. At
|
||||
* checkpoint or restartpoint, unneeded segments are removed.
|
||||
*/
|
||||
MultiXactId perBackendXactIds[1]; /* VARIABLE LENGTH ARRAY */
|
||||
MultiXactId perBackendXactIds[FLEXIBLE_ARRAY_MEMBER];
|
||||
} MultiXactStateData;
|
||||
|
||||
/*
|
||||
@ -1744,8 +1744,9 @@ MultiXactShmemSize(void)
|
||||
{
|
||||
Size size;
|
||||
|
||||
/* We need 2*MaxOldestSlot + 1 perBackendXactIds[] entries */
|
||||
#define SHARED_MULTIXACT_STATE_SIZE \
|
||||
add_size(sizeof(MultiXactStateData), \
|
||||
add_size(offsetof(MultiXactStateData, perBackendXactIds) + sizeof(MultiXactId), \
|
||||
mul_size(sizeof(MultiXactId) * 2, MaxOldestSlot))
|
||||
|
||||
size = SHARED_MULTIXACT_STATE_SIZE;
|
||||
|
@ -134,12 +134,9 @@ typedef struct TwoPhaseStateData
|
||||
/* Number of valid prepXacts entries. */
|
||||
int numPrepXacts;
|
||||
|
||||
/*
|
||||
* There are max_prepared_xacts items in this array, but C wants a
|
||||
* fixed-size array.
|
||||
*/
|
||||
GlobalTransaction prepXacts[1]; /* VARIABLE LENGTH ARRAY */
|
||||
} TwoPhaseStateData; /* VARIABLE LENGTH STRUCT */
|
||||
/* There are max_prepared_xacts items in this array */
|
||||
GlobalTransaction prepXacts[FLEXIBLE_ARRAY_MEMBER];
|
||||
} TwoPhaseStateData;
|
||||
|
||||
static TwoPhaseStateData *TwoPhaseState;
|
||||
|
||||
|
@ -1088,7 +1088,7 @@ GetDefaultTablespace(char relpersistence)
|
||||
typedef struct
|
||||
{
|
||||
int numSpcs;
|
||||
Oid tblSpcs[1]; /* VARIABLE LENGTH ARRAY */
|
||||
Oid tblSpcs[FLEXIBLE_ARRAY_MEMBER];
|
||||
} temp_tablespaces_extra;
|
||||
|
||||
/* check_hook: validate new temp_tablespaces */
|
||||
|
@ -3005,7 +3005,7 @@ typedef struct SetConstraintStateData
|
||||
bool all_isdeferred;
|
||||
int numstates; /* number of trigstates[] entries in use */
|
||||
int numalloc; /* allocated size of trigstates[] */
|
||||
SetConstraintTriggerData trigstates[1]; /* VARIABLE LENGTH ARRAY */
|
||||
SetConstraintTriggerData trigstates[FLEXIBLE_ARRAY_MEMBER];
|
||||
} SetConstraintStateData;
|
||||
|
||||
typedef SetConstraintStateData *SetConstraintState;
|
||||
@ -4398,8 +4398,8 @@ SetConstraintStateCreate(int numalloc)
|
||||
*/
|
||||
state = (SetConstraintState)
|
||||
MemoryContextAllocZero(TopTransactionContext,
|
||||
sizeof(SetConstraintStateData) +
|
||||
(numalloc - 1) *sizeof(SetConstraintTriggerData));
|
||||
offsetof(SetConstraintStateData, trigstates) +
|
||||
numalloc * sizeof(SetConstraintTriggerData));
|
||||
|
||||
state->numalloc = numalloc;
|
||||
|
||||
@ -4440,8 +4440,8 @@ SetConstraintStateAddItem(SetConstraintState state,
|
||||
newalloc = Max(newalloc, 8); /* in case original has size 0 */
|
||||
state = (SetConstraintState)
|
||||
repalloc(state,
|
||||
sizeof(SetConstraintStateData) +
|
||||
(newalloc - 1) *sizeof(SetConstraintTriggerData));
|
||||
offsetof(SetConstraintStateData, trigstates) +
|
||||
newalloc * sizeof(SetConstraintTriggerData));
|
||||
state->numalloc = newalloc;
|
||||
Assert(state->numstates < state->numalloc);
|
||||
}
|
||||
|
@ -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 *);
|
||||
|
@ -130,7 +130,7 @@ typedef struct
|
||||
|
||||
int num_requests; /* current # of requests */
|
||||
int max_requests; /* allocated array size */
|
||||
CheckpointerRequest requests[1]; /* VARIABLE LENGTH ARRAY */
|
||||
CheckpointerRequest requests[FLEXIBLE_ARRAY_MEMBER];
|
||||
} CheckpointerShmemStruct;
|
||||
|
||||
static CheckpointerShmemStruct *CheckpointerShmem;
|
||||
|
@ -66,7 +66,7 @@ struct PMSignalData
|
||||
/* per-child-process flags */
|
||||
int num_child_flags; /* # of entries in PMChildFlags[] */
|
||||
int next_child_flag; /* next slot to try to assign */
|
||||
sig_atomic_t PMChildFlags[1]; /* VARIABLE LENGTH ARRAY */
|
||||
sig_atomic_t PMChildFlags[FLEXIBLE_ARRAY_MEMBER];
|
||||
};
|
||||
|
||||
NON_EXEC_STATIC volatile PMSignalData *PMSignalState = NULL;
|
||||
|
@ -90,11 +90,8 @@ typedef struct ProcArrayStruct
|
||||
/* oldest catalog xmin of any replication slot */
|
||||
TransactionId replication_slot_catalog_xmin;
|
||||
|
||||
/*
|
||||
* We declare pgprocnos[] as 1 entry because C wants a fixed-size array,
|
||||
* but actually it is maxProcs entries long.
|
||||
*/
|
||||
int pgprocnos[1]; /* VARIABLE LENGTH ARRAY */
|
||||
/* indexes into allPgXact[], has PROCARRAY_MAXPROCS entries */
|
||||
int pgprocnos[FLEXIBLE_ARRAY_MEMBER];
|
||||
} ProcArrayStruct;
|
||||
|
||||
static ProcArrayStruct *procArray;
|
||||
|
12
src/backend/utils/cache/inval.c
vendored
12
src/backend/utils/cache/inval.c
vendored
@ -122,8 +122,8 @@ typedef struct InvalidationChunk
|
||||
struct InvalidationChunk *next; /* list link */
|
||||
int nitems; /* # items currently stored in chunk */
|
||||
int maxitems; /* size of allocated array in this chunk */
|
||||
SharedInvalidationMessage msgs[1]; /* VARIABLE LENGTH ARRAY */
|
||||
} InvalidationChunk; /* VARIABLE LENGTH STRUCTURE */
|
||||
SharedInvalidationMessage msgs[FLEXIBLE_ARRAY_MEMBER];
|
||||
} InvalidationChunk;
|
||||
|
||||
typedef struct InvalidationListHeader
|
||||
{
|
||||
@ -225,8 +225,8 @@ AddInvalidationMessage(InvalidationChunk **listHdr,
|
||||
#define FIRSTCHUNKSIZE 32
|
||||
chunk = (InvalidationChunk *)
|
||||
MemoryContextAlloc(CurTransactionContext,
|
||||
sizeof(InvalidationChunk) +
|
||||
(FIRSTCHUNKSIZE - 1) *sizeof(SharedInvalidationMessage));
|
||||
offsetof(InvalidationChunk, msgs) +
|
||||
FIRSTCHUNKSIZE * sizeof(SharedInvalidationMessage));
|
||||
chunk->nitems = 0;
|
||||
chunk->maxitems = FIRSTCHUNKSIZE;
|
||||
chunk->next = *listHdr;
|
||||
@ -239,8 +239,8 @@ AddInvalidationMessage(InvalidationChunk **listHdr,
|
||||
|
||||
chunk = (InvalidationChunk *)
|
||||
MemoryContextAlloc(CurTransactionContext,
|
||||
sizeof(InvalidationChunk) +
|
||||
(chunksize - 1) *sizeof(SharedInvalidationMessage));
|
||||
offsetof(InvalidationChunk, msgs) +
|
||||
chunksize * sizeof(SharedInvalidationMessage));
|
||||
chunk->nitems = 0;
|
||||
chunk->maxitems = chunksize;
|
||||
chunk->next = *listHdr;
|
||||
|
2
src/backend/utils/cache/typcache.c
vendored
2
src/backend/utils/cache/typcache.c
vendored
@ -93,7 +93,7 @@ typedef struct TypeCacheEnumData
|
||||
Oid bitmap_base; /* OID corresponding to bit 0 of bitmapset */
|
||||
Bitmapset *sorted_values; /* Set of OIDs known to be in order */
|
||||
int num_values; /* total number of values in enum */
|
||||
EnumItem enum_values[1]; /* VARIABLE LENGTH ARRAY */
|
||||
EnumItem enum_values[FLEXIBLE_ARRAY_MEMBER];
|
||||
} TypeCacheEnumData;
|
||||
|
||||
/*
|
||||
|
Loading…
x
Reference in New Issue
Block a user