diff --git a/src/backend/access/transam/multixact.c b/src/backend/access/transam/multixact.c index 62d58da4abc..85018482798 100644 --- a/src/backend/access/transam/multixact.c +++ b/src/backend/access/transam/multixact.c @@ -1818,14 +1818,19 @@ MultiXactShmemRequest(void *arg) */ } -static void -MultiXactShmemInit(void *arg) +static void MultiXactSetupPointers(void) { /* * Set up array pointers. */ OldestMemberMXactId = MultiXactState->perBackendXactIds; OldestVisibleMXactId = OldestMemberMXactId + NumMemberSlots; +} + +static void +MultiXactShmemInit(void *arg) +{ + MultiXactSetupPointers(); SlruPagePrecedesUnitTests(MultiXactOffsetCtl, MULTIXACT_OFFSETS_PER_PAGE); } @@ -1833,11 +1838,7 @@ MultiXactShmemInit(void *arg) static void MultiXactShmemAttach(void *arg) { - /* - * Set up array pointers. - */ - OldestMemberMXactId = MultiXactState->perBackendXactIds; - OldestVisibleMXactId = OldestMemberMXactId + NumMemberSlots; + MultiXactSetupPointers(); } /* diff --git a/src/backend/storage/lmgr/predicate.c b/src/backend/storage/lmgr/predicate.c index 9c389b23506..28f963ee035 100644 --- a/src/backend/storage/lmgr/predicate.c +++ b/src/backend/storage/lmgr/predicate.c @@ -1246,6 +1246,17 @@ PredicateLockShmemRequest(void *arg) ); } +static void +PredicateLockSetGlobals(void) +{ + /* This never changes, so let's keep a local copy. */ + OldCommittedSxact = PredXact->OldCommittedSxact; + + /* Pre-calculate the hash and partition lock of the scratch entry */ + ScratchTargetTagHash = PredicateLockTargetTagHashCode(&ScratchTargetTag); + ScratchPartitionLock = PredicateLockHashPartitionLock(ScratchTargetTagHash); +} + static void PredicateLockShmemInit(void *arg) { @@ -1323,12 +1334,7 @@ PredicateLockShmemInit(void *arg) serialControl->tailXid = InvalidTransactionId; LWLockRelease(SerialControlLock); - /* This never changes, so let's keep a local copy. */ - OldCommittedSxact = PredXact->OldCommittedSxact; - - /* Pre-calculate the hash and partition lock of the scratch entry */ - ScratchTargetTagHash = PredicateLockTargetTagHashCode(&ScratchTargetTag); - ScratchPartitionLock = PredicateLockHashPartitionLock(ScratchTargetTagHash); + PredicateLockSetGlobals(); SlruPagePrecedesUnitTests(SerialSlruCtl, SERIAL_ENTRIESPERPAGE); } @@ -1336,12 +1342,7 @@ PredicateLockShmemInit(void *arg) static void PredicateLockShmemAttach(void *arg) { - /* This never changes, so let's keep a local copy. */ - OldCommittedSxact = PredXact->OldCommittedSxact; - - /* Pre-calculate the hash and partition lock of the scratch entry */ - ScratchTargetTagHash = PredicateLockTargetTagHashCode(&ScratchTargetTag); - ScratchPartitionLock = PredicateLockHashPartitionLock(ScratchTargetTagHash); + PredicateLockSetGlobals(); } /*