From 03809b97dca1a25b1b61f119ec05ef4b1d8e5b49 Mon Sep 17 00:00:00 2001 From: Tomas Vondra Date: Thu, 27 Mar 2025 21:20:26 +0100 Subject: [PATCH v6 5/7] review --- src/backend/storage/lmgr/predicate.c | 13 ++++++++----- src/backend/storage/lmgr/proc.c | 21 +++++++++++---------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/src/backend/storage/lmgr/predicate.c b/src/backend/storage/lmgr/predicate.c index de2629fdf0c..d82114ffca1 100644 --- a/src/backend/storage/lmgr/predicate.c +++ b/src/backend/storage/lmgr/predicate.c @@ -1229,6 +1229,7 @@ PredicateLockShmemInit(void) requestSize = add_size(PredXactListDataSize, (mul_size((Size) max_table_size, sizeof(SERIALIZABLEXACT)))); + PredXact = ShmemInitStruct("PredXactList", requestSize, &found); @@ -1237,7 +1238,7 @@ PredicateLockShmemInit(void) { int i; - /* reset everything, both the header and the element */ + /* clean everything, both the header and the element */ memset(PredXact, 0, requestSize); dlist_init(&PredXact->availableList); @@ -1248,7 +1249,8 @@ PredicateLockShmemInit(void) PredXact->LastSxactCommitSeqNo = FirstNormalSerCommitSeqNo - 1; PredXact->CanPartialClearThrough = 0; PredXact->HavePartialClearedThrough = 0; - PredXact->element = (SERIALIZABLEXACT *) ((char *) PredXact + PredXactListDataSize); + PredXact->element + = (SERIALIZABLEXACT *) ((char *) PredXact + PredXactListDataSize); /* Add all elements to available list, clean. */ for (i = 0; i < max_table_size; i++) { @@ -1302,9 +1304,10 @@ PredicateLockShmemInit(void) * probably OK. */ max_table_size *= 5; + requestSize = RWConflictPoolHeaderDataSize + - mul_size((Size) max_table_size, - RWConflictDataSize); + mul_size((Size) max_table_size, + RWConflictDataSize); RWConflictPool = ShmemInitStruct("RWConflictPool", requestSize, @@ -1319,7 +1322,7 @@ PredicateLockShmemInit(void) dlist_init(&RWConflictPool->availableList); RWConflictPool->element = (RWConflict) ((char *) RWConflictPool + - RWConflictPoolHeaderDataSize); + RWConflictPoolHeaderDataSize); /* Add all elements to available list, clean. */ for (i = 0; i < max_table_size; i++) { diff --git a/src/backend/storage/lmgr/proc.c b/src/backend/storage/lmgr/proc.c index 6ee48410b84..c08e3bb3d56 100644 --- a/src/backend/storage/lmgr/proc.c +++ b/src/backend/storage/lmgr/proc.c @@ -124,20 +124,21 @@ ProcGlobalShmemSize(void) } /* - * review: add comment, explaining the PG_CACHE_LINE_SIZE thing - * review: I'd even maybe split the PG_CACHE_LINE_SIZE thing into - * a separate commit, not to mix it with the "monitoring improvement" + * Report shared-memory space needed by PGPROC. */ static Size PGProcShmemSize(void) { Size size; - uint32 TotalProcs = MaxBackends + NUM_AUXILIARY_PROCS + max_prepared_xacts; + uint32 TotalProcs; + + TotalProcs = MaxBackends + NUM_AUXILIARY_PROCS + max_prepared_xacts; size = TotalProcs * sizeof(PGPROC); size = add_size(size, TotalProcs * sizeof(*ProcGlobal->xids)); size = add_size(size, TotalProcs * sizeof(*ProcGlobal->subxidStates)); size = add_size(size, TotalProcs * sizeof(*ProcGlobal->statusFlags)); + return size; } @@ -227,11 +228,11 @@ InitProcGlobal(void) requestSize = PGProcShmemSize(); ptr = ShmemInitStruct("PGPROC structures", - requestSize, - &found); + requestSize, + &found); procs = (PGPROC *) ptr; - ptr = (char *)ptr + TotalProcs * sizeof(PGPROC); + ptr = (char *) ptr + TotalProcs * sizeof(PGPROC); MemSet(procs, 0, TotalProcs * sizeof(PGPROC)); ProcGlobal->allProcs = procs; @@ -244,15 +245,15 @@ InitProcGlobal(void) */ ProcGlobal->xids = (TransactionId *) ptr; MemSet(ProcGlobal->xids, 0, TotalProcs * sizeof(*ProcGlobal->xids)); - ptr = (char *)ptr + (TotalProcs * sizeof(*ProcGlobal->xids)); + ptr = (char *) ptr + (TotalProcs * sizeof(*ProcGlobal->xids)); ProcGlobal->subxidStates = (XidCacheStatus *) ptr; MemSet(ProcGlobal->subxidStates, 0, TotalProcs * sizeof(*ProcGlobal->subxidStates)); - ptr = (char *)ptr + (TotalProcs * sizeof(*ProcGlobal->subxidStates)); + ptr = (char *) ptr + (TotalProcs * sizeof(*ProcGlobal->subxidStates)); ProcGlobal->statusFlags = (uint8 *) ptr; MemSet(ProcGlobal->statusFlags, 0, TotalProcs * sizeof(*ProcGlobal->statusFlags)); - ptr = (char *)ptr + (TotalProcs * sizeof(*ProcGlobal->statusFlags)); + ptr = (char *) ptr + (TotalProcs * sizeof(*ProcGlobal->statusFlags)); /* make sure wer didn't overflow */ Assert((ptr > (char *) procs) && (ptr <= (char *) procs + requestSize)); -- 2.49.0