diff options
author | Robert Haas <rhaas@postgresql.org> | 2022-09-28 09:45:27 -0400 |
---|---|---|
committer | Robert Haas <rhaas@postgresql.org> | 2022-09-28 09:55:28 -0400 |
commit | a448e49bcbe40fb72e1ed85af910dd216d45bad8 (patch) | |
tree | 2815aed4f5e89bdea91cdd35ec89facaa846e438 /src/backend/access/transam/xlog.c | |
parent | 6af082723277eeca74f2da65e7759666bf7c7f9c (diff) | |
download | postgresql-a448e49bcbe40fb72e1ed85af910dd216d45bad8.tar.gz postgresql-a448e49bcbe40fb72e1ed85af910dd216d45bad8.zip |
Revert 56-bit relfilenode change and follow-up commits.
There are still some alignment-related failures in the buildfarm,
which might or might not be able to be fixed quickly, but I've also
just realized that it increased the size of many WAL records by 4 bytes
because a block reference contains a RelFileLocator. The effect of that
hasn't been studied or discussed, so revert for now.
Diffstat (limited to 'src/backend/access/transam/xlog.c')
-rw-r--r-- | src/backend/access/transam/xlog.c | 60 |
1 files changed, 0 insertions, 60 deletions
diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index 35fac945cb1..00992a11b9e 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -4712,7 +4712,6 @@ BootStrapXLOG(void) checkPoint.nextXid = FullTransactionIdFromEpochAndXid(0, FirstNormalTransactionId); checkPoint.nextOid = FirstGenbkiObjectId; - checkPoint.nextRelFileNumber = FirstNormalRelFileNumber; checkPoint.nextMulti = FirstMultiXactId; checkPoint.nextMultiOffset = 0; checkPoint.oldestXid = FirstNormalTransactionId; @@ -4726,11 +4725,7 @@ BootStrapXLOG(void) ShmemVariableCache->nextXid = checkPoint.nextXid; ShmemVariableCache->nextOid = checkPoint.nextOid; - ShmemVariableCache->nextRelFileNumber = checkPoint.nextRelFileNumber; ShmemVariableCache->oidCount = 0; - ShmemVariableCache->loggedRelFileNumber = checkPoint.nextRelFileNumber; - ShmemVariableCache->flushedRelFileNumber = checkPoint.nextRelFileNumber; - ShmemVariableCache->loggedRelFileNumberRecPtr = InvalidXLogRecPtr; MultiXactSetNextMXact(checkPoint.nextMulti, checkPoint.nextMultiOffset); AdvanceOldestClogXid(checkPoint.oldestXid); SetTransactionIdLimit(checkPoint.oldestXid, checkPoint.oldestXidDB); @@ -5196,10 +5191,7 @@ StartupXLOG(void) /* initialize shared memory variables from the checkpoint record */ ShmemVariableCache->nextXid = checkPoint.nextXid; ShmemVariableCache->nextOid = checkPoint.nextOid; - ShmemVariableCache->nextRelFileNumber = checkPoint.nextRelFileNumber; ShmemVariableCache->oidCount = 0; - ShmemVariableCache->loggedRelFileNumber = checkPoint.nextRelFileNumber; - ShmemVariableCache->flushedRelFileNumber = checkPoint.nextRelFileNumber; MultiXactSetNextMXact(checkPoint.nextMulti, checkPoint.nextMultiOffset); AdvanceOldestClogXid(checkPoint.oldestXid); SetTransactionIdLimit(checkPoint.oldestXid, checkPoint.oldestXidDB); @@ -6671,24 +6663,6 @@ CreateCheckPoint(int flags) checkPoint.nextOid += ShmemVariableCache->oidCount; LWLockRelease(OidGenLock); - /* - * If this is a shutdown checkpoint then we can safely start allocating - * relfilenumber from the nextRelFileNumber value after the restart because - * no one one else can use the relfilenumber beyond that number before the - * shutdown. OTOH, if it is a normal checkpoint then if there is a crash - * after this point then we might end up reusing the same relfilenumbers - * after the restart so we need to set the nextRelFileNumber to the already - * logged relfilenumber as no one will use number beyond this limit without - * logging again. - */ - LWLockAcquire(RelFileNumberGenLock, LW_SHARED); - if (shutdown) - checkPoint.nextRelFileNumber = ShmemVariableCache->nextRelFileNumber; - else - checkPoint.nextRelFileNumber = ShmemVariableCache->loggedRelFileNumber; - - LWLockRelease(RelFileNumberGenLock); - MultiXactGetCheckptMulti(shutdown, &checkPoint.nextMulti, &checkPoint.nextMultiOffset, @@ -7567,24 +7541,6 @@ XLogPutNextOid(Oid nextOid) } /* - * Similar to the XLogPutNextOid but instead of writing NEXTOID log record it - * writes a NEXT_RELFILENUMBER log record. It also returns the XLogRecPtr of - * the currently logged relfilenumber record, so that the caller can flush it - * at the appropriate time. - */ -XLogRecPtr -LogNextRelFileNumber(RelFileNumber nextrelnumber) -{ - XLogRecPtr recptr; - - XLogBeginInsert(); - XLogRegisterData((char *) (&nextrelnumber), sizeof(RelFileNumber)); - recptr = XLogInsert(RM_XLOG_ID, XLOG_NEXT_RELFILENUMBER); - - return recptr; -} - -/* * Write an XLOG SWITCH record. * * Here we just blindly issue an XLogInsert request for the record. @@ -7799,17 +7755,6 @@ xlog_redo(XLogReaderState *record) ShmemVariableCache->oidCount = 0; LWLockRelease(OidGenLock); } - if (info == XLOG_NEXT_RELFILENUMBER) - { - RelFileNumber nextRelFileNumber; - - memcpy(&nextRelFileNumber, XLogRecGetData(record), sizeof(RelFileNumber)); - LWLockAcquire(RelFileNumberGenLock, LW_EXCLUSIVE); - ShmemVariableCache->nextRelFileNumber = nextRelFileNumber; - ShmemVariableCache->loggedRelFileNumber = nextRelFileNumber; - ShmemVariableCache->flushedRelFileNumber = nextRelFileNumber; - LWLockRelease(RelFileNumberGenLock); - } else if (info == XLOG_CHECKPOINT_SHUTDOWN) { CheckPoint checkPoint; @@ -7824,11 +7769,6 @@ xlog_redo(XLogReaderState *record) ShmemVariableCache->nextOid = checkPoint.nextOid; ShmemVariableCache->oidCount = 0; LWLockRelease(OidGenLock); - LWLockAcquire(RelFileNumberGenLock, LW_EXCLUSIVE); - ShmemVariableCache->nextRelFileNumber = checkPoint.nextRelFileNumber; - ShmemVariableCache->loggedRelFileNumber = checkPoint.nextRelFileNumber; - ShmemVariableCache->flushedRelFileNumber = checkPoint.nextRelFileNumber; - LWLockRelease(RelFileNumberGenLock); MultiXactSetNextMXact(checkPoint.nextMulti, checkPoint.nextMultiOffset); |