@@ -6227,11 +6227,14 @@ StartupXLOG(void)
62276227ereport (PANIC ,
62286228(errmsg ("invalid next transaction ID" )));
62296229
6230+ /* initialize shared memory variables from the checkpoint record */
62306231ShmemVariableCache -> nextXid = checkPoint .nextXid ;
62316232ShmemVariableCache -> nextOid = checkPoint .nextOid ;
62326233ShmemVariableCache -> oidCount = 0 ;
62336234MultiXactSetNextMXact (checkPoint .nextMulti ,checkPoint .nextMultiOffset );
62346235SetTransactionIdLimit (checkPoint .oldestXid ,checkPoint .oldestXidDB );
6236+ XLogCtl -> ckptXidEpoch = checkPoint .nextXidEpoch ;
6237+ XLogCtl -> ckptXid = checkPoint .nextXid ;
62356238
62366239/*
62376240 * We must replay WAL entries using the same TimeLineID they were created
@@ -6330,10 +6333,6 @@ StartupXLOG(void)
63306333/* No need to hold ControlFileLock yet, we aren't up far enough */
63316334UpdateControlFile ();
63326335
6333- /* initialize shared-memory copy of latest checkpoint XID/epoch */
6334- XLogCtl -> ckptXidEpoch = ControlFile -> checkPointCopy .nextXidEpoch ;
6335- XLogCtl -> ckptXid = ControlFile -> checkPointCopy .nextXid ;
6336-
63376336/* initialize our local copy of minRecoveryPoint */
63386337minRecoveryPoint = ControlFile -> minRecoveryPoint ;
63396338