From 254a38334003a9978cf46bb4e2b8634f1d1c26f1 Mon Sep 17 00:00:00 2001 From: Maxim Orlov Date: Wed, 23 Mar 2022 13:16:26 +0300 Subject: [PATCH v47 4/8] Use 64-bit pages representation in SLRU callers. Previously SLRU page counters were changed to unsigned 64-bit. As a next separate step to making XID's 64-bit, we switch internal page counters to 64-bit in SLRU callers: clog, mxact, commit_ts etc. This patch still doesn't change xid's representation but is a requirement to do so. Author: Alexander Korotkov Author: Teodor Sigaev Author: Nikita Glukhov Author: Maxim Orlov Author: Pavel Borisov Author: Yura Sokolov Author: Aleksander Alekseev Reviewed-by: Aleksander Alekseev Discussion: https://postgr.es/m/CACG%3DezZe1NQSCnfHOr78AtAZxJZeCvxrts0ygrxYwe%3DpyyjVWA%40mail.gmail.com Discussion: https://postgr.es/m/CAJ7c6TPDOYBYrnCAeyndkBktO0WG2xSdYduTF0nxq%2BvfkmTF5Q%40mail.gmail.com --- src/backend/access/rmgrdesc/clogdesc.c | 11 ++--- src/backend/access/rmgrdesc/committsdesc.c | 11 ++--- src/backend/access/rmgrdesc/mxactdesc.c | 6 +-- src/backend/access/transam/clog.c | 47 ++++++++++----------- src/backend/access/transam/commit_ts.c | 33 +++++++-------- src/backend/access/transam/multixact.c | 44 +++++++++---------- src/backend/access/transam/slru.c | 8 +--- src/backend/access/transam/subtrans.c | 16 +++---- src/bin/pg_verifybackup/t/003_corruption.pl | 2 +- src/include/access/commit_ts.h | 2 +- src/include/storage/proc.h | 2 +- 11 files changed, 89 insertions(+), 93 deletions(-) diff --git a/src/backend/access/rmgrdesc/clogdesc.c b/src/backend/access/rmgrdesc/clogdesc.c index bbb5910633..3555daa04b 100644 --- a/src/backend/access/rmgrdesc/clogdesc.c +++ b/src/backend/access/rmgrdesc/clogdesc.c @@ -25,18 +25,19 @@ clog_desc(StringInfo buf, XLogReaderState *record) if (info == CLOG_ZEROPAGE) { - int pageno; + int64 pageno; - memcpy(&pageno, rec, sizeof(int)); - appendStringInfo(buf, "page %d", pageno); + memcpy(&pageno, rec, sizeof(pageno)); + appendStringInfo(buf, "page %lld", (long long) pageno); } else if (info == CLOG_TRUNCATE) { xl_clog_truncate xlrec; memcpy(&xlrec, rec, sizeof(xl_clog_truncate)); - appendStringInfo(buf, "page %d; oldestXact %llu", - xlrec.pageno, (unsigned long long) xlrec.oldestXact); + appendStringInfo(buf, "page %lld; oldestXact %llu", + (long long) xlrec.pageno, + (unsigned long long) xlrec.oldestXact); } } diff --git a/src/backend/access/rmgrdesc/committsdesc.c b/src/backend/access/rmgrdesc/committsdesc.c index 4b2e9bc2ff..c3db0f5e47 100644 --- a/src/backend/access/rmgrdesc/committsdesc.c +++ b/src/backend/access/rmgrdesc/committsdesc.c @@ -26,17 +26,18 @@ commit_ts_desc(StringInfo buf, XLogReaderState *record) if (info == COMMIT_TS_ZEROPAGE) { - int pageno; + int64 pageno; - memcpy(&pageno, rec, sizeof(int)); - appendStringInfo(buf, "%d", pageno); + memcpy(&pageno, rec, sizeof(pageno)); + appendStringInfo(buf, "%lld", (long long) pageno); } else if (info == COMMIT_TS_TRUNCATE) { xl_commit_ts_truncate *trunc = (xl_commit_ts_truncate *) rec; - appendStringInfo(buf, "pageno %d, oldestXid %llu", - trunc->pageno, (unsigned long long) trunc->oldestXid); + appendStringInfo(buf, "pageno %lld, oldestXid %llu", + (long long) trunc->pageno, + (unsigned long long) trunc->oldestXid); } } diff --git a/src/backend/access/rmgrdesc/mxactdesc.c b/src/backend/access/rmgrdesc/mxactdesc.c index 4cf8a9a4b1..950f9269f7 100644 --- a/src/backend/access/rmgrdesc/mxactdesc.c +++ b/src/backend/access/rmgrdesc/mxactdesc.c @@ -55,10 +55,10 @@ multixact_desc(StringInfo buf, XLogReaderState *record) if (info == XLOG_MULTIXACT_ZERO_OFF_PAGE || info == XLOG_MULTIXACT_ZERO_MEM_PAGE) { - int pageno; + int64 pageno; - memcpy(&pageno, rec, sizeof(int)); - appendStringInfo(buf, "%d", pageno); + memcpy(&pageno, rec, sizeof(pageno)); + appendStringInfo(buf, "%lld", (long long) pageno); } else if (info == XLOG_MULTIXACT_CREATE_ID) { diff --git a/src/backend/access/transam/clog.c b/src/backend/access/transam/clog.c index 3d06f7c82a..1f621aba70 100644 --- a/src/backend/access/transam/clog.c +++ b/src/backend/access/transam/clog.c @@ -89,24 +89,24 @@ static SlruCtlData XactCtlData; #define XactCtl (&XactCtlData) -static int ZeroCLOGPage(int pageno, bool writeXlog); +static int ZeroCLOGPage(int64 pageno, bool writeXlog); static bool CLOGPagePrecedes(int64 page1, int64 page2); -static void WriteZeroPageXlogRec(int pageno); -static void WriteTruncateXlogRec(int pageno, TransactionId oldestXact, +static void WriteZeroPageXlogRec(int64 pageno); +static void WriteTruncateXlogRec(int64 pageno, TransactionId oldestXact, Oid oldestXactDb); static void TransactionIdSetPageStatus(TransactionId xid, int nsubxids, TransactionId *subxids, XidStatus status, - XLogRecPtr lsn, int pageno, + XLogRecPtr lsn, int64 pageno, bool all_xact_same_page); static void TransactionIdSetStatusBit(TransactionId xid, XidStatus status, XLogRecPtr lsn, int slotno); static void set_status_by_pages(int nsubxids, TransactionId *subxids, XidStatus status, XLogRecPtr lsn); static bool TransactionGroupUpdateXidStatus(TransactionId xid, - XidStatus status, XLogRecPtr lsn, int pageno); + XidStatus status, XLogRecPtr lsn, int64 pageno); static void TransactionIdSetPageStatusInternal(TransactionId xid, int nsubxids, TransactionId *subxids, XidStatus status, - XLogRecPtr lsn, int pageno); + XLogRecPtr lsn, int64 pageno); /* @@ -164,7 +164,7 @@ void TransactionIdSetTreeStatus(TransactionId xid, int nsubxids, TransactionId *subxids, XidStatus status, XLogRecPtr lsn) { - int pageno = TransactionIdToPage(xid); /* get page of parent */ + int64 pageno = TransactionIdToPage(xid); /* get page of parent */ int i; Assert(status == TRANSACTION_STATUS_COMMITTED || @@ -238,7 +238,7 @@ static void set_status_by_pages(int nsubxids, TransactionId *subxids, XidStatus status, XLogRecPtr lsn) { - int pageno = TransactionIdToPage(subxids[0]); + int64 pageno = TransactionIdToPage(subxids[0]); int offset = 0; int i = 0; @@ -247,7 +247,7 @@ set_status_by_pages(int nsubxids, TransactionId *subxids, while (i < nsubxids) { int num_on_page = 0; - int nextpageno; + int64 nextpageno; do { @@ -273,7 +273,7 @@ set_status_by_pages(int nsubxids, TransactionId *subxids, static void TransactionIdSetPageStatus(TransactionId xid, int nsubxids, TransactionId *subxids, XidStatus status, - XLogRecPtr lsn, int pageno, + XLogRecPtr lsn, int64 pageno, bool all_xact_same_page) { /* Can't use group update when PGPROC overflows. */ @@ -339,7 +339,7 @@ TransactionIdSetPageStatus(TransactionId xid, int nsubxids, static void TransactionIdSetPageStatusInternal(TransactionId xid, int nsubxids, TransactionId *subxids, XidStatus status, - XLogRecPtr lsn, int pageno) + XLogRecPtr lsn, int64 pageno) { int slotno; int i; @@ -413,7 +413,7 @@ TransactionIdSetPageStatusInternal(TransactionId xid, int nsubxids, */ static bool TransactionGroupUpdateXidStatus(TransactionId xid, XidStatus status, - XLogRecPtr lsn, int pageno) + XLogRecPtr lsn, int64 pageno) { volatile PROC_HDR *procglobal = ProcGlobal; PGPROC *proc = MyProc; @@ -639,7 +639,7 @@ TransactionIdSetStatusBit(TransactionId xid, XidStatus status, XLogRecPtr lsn, i XidStatus TransactionIdGetStatus(TransactionId xid, XLogRecPtr *lsn) { - int pageno = TransactionIdToPage(xid); + int64 pageno = TransactionIdToPage(xid); int byteno = TransactionIdToByte(xid); int bshift = TransactionIdToBIndex(xid) * CLOG_BITS_PER_XACT; int slotno; @@ -736,7 +736,7 @@ BootStrapCLOG(void) * Control lock must be held at entry, and will be held at exit. */ static int -ZeroCLOGPage(int pageno, bool writeXlog) +ZeroCLOGPage(int64 pageno, bool writeXlog) { int slotno; @@ -756,7 +756,7 @@ void StartupCLOG(void) { TransactionId xid = XidFromFullTransactionId(ShmemVariableCache->nextXid); - int pageno = TransactionIdToPage(xid); + int64 pageno = TransactionIdToPage(xid); LWLockAcquire(XactSLRULock, LW_EXCLUSIVE); @@ -775,7 +775,7 @@ void TrimCLOG(void) { TransactionId xid = XidFromFullTransactionId(ShmemVariableCache->nextXid); - int pageno = TransactionIdToPage(xid); + int64 pageno = TransactionIdToPage(xid); LWLockAcquire(XactSLRULock, LW_EXCLUSIVE); @@ -840,7 +840,7 @@ CheckPointCLOG(void) void ExtendCLOG(TransactionId newestXact) { - int pageno; + int64 pageno; /* * No work except at first XID of a page. But beware: just after @@ -879,7 +879,7 @@ ExtendCLOG(TransactionId newestXact) void TruncateCLOG(TransactionId oldestXact, Oid oldestxid_datoid) { - int cutoffPage; + int64 cutoffPage; /* * The cutoff point is the start of the segment containing oldestXact. We @@ -946,15 +946,14 @@ CLOGPagePrecedes(int64 page1, int64 page2) TransactionIdPrecedes(xid1, xid2 + CLOG_XACTS_PER_PAGE - 1)); } - /* * Write a ZEROPAGE xlog record */ static void -WriteZeroPageXlogRec(int pageno) +WriteZeroPageXlogRec(int64 pageno) { XLogBeginInsert(); - XLogRegisterData((char *) (&pageno), sizeof(int)); + XLogRegisterData((char *) (&pageno), sizeof(pageno)); (void) XLogInsert(RM_CLOG_ID, CLOG_ZEROPAGE); } @@ -965,7 +964,7 @@ WriteZeroPageXlogRec(int pageno) * in TruncateCLOG(). */ static void -WriteTruncateXlogRec(int pageno, TransactionId oldestXact, Oid oldestXactDb) +WriteTruncateXlogRec(int64 pageno, TransactionId oldestXact, Oid oldestXactDb) { XLogRecPtr recptr; xl_clog_truncate xlrec; @@ -993,10 +992,10 @@ clog_redo(XLogReaderState *record) if (info == CLOG_ZEROPAGE) { - int pageno; + int64 pageno; int slotno; - memcpy(&pageno, XLogRecGetData(record), sizeof(int)); + memcpy(&pageno, XLogRecGetData(record), sizeof(pageno)); LWLockAcquire(XactSLRULock, LW_EXCLUSIVE); diff --git a/src/backend/access/transam/commit_ts.c b/src/backend/access/transam/commit_ts.c index d978226bfb..b91097ce0e 100644 --- a/src/backend/access/transam/commit_ts.c +++ b/src/backend/access/transam/commit_ts.c @@ -103,16 +103,16 @@ bool track_commit_timestamp; static void SetXidCommitTsInPage(TransactionId xid, int nsubxids, TransactionId *subxids, TimestampTz ts, - RepOriginId nodeid, int pageno); + RepOriginId nodeid, int64 pageno); static void TransactionIdSetCommitTs(TransactionId xid, TimestampTz ts, RepOriginId nodeid, int slotno); static void error_commit_ts_disabled(void); -static int ZeroCommitTsPage(int pageno, bool writeXlog); +static int ZeroCommitTsPage(int64 pageno, bool writeXlog); static bool CommitTsPagePrecedes(int64 page1, int64 page2); static void ActivateCommitTs(void); static void DeactivateCommitTs(void); -static void WriteZeroPageXlogRec(int pageno); -static void WriteTruncateXlogRec(int pageno, TransactionId oldestXid); +static void WriteZeroPageXlogRec(int64 pageno); +static void WriteTruncateXlogRec(int64 pageno, TransactionId oldestXid); /* * TransactionTreeSetCommitTsData @@ -170,7 +170,7 @@ TransactionTreeSetCommitTsData(TransactionId xid, int nsubxids, i = 0; for (;;) { - int pageno = TransactionIdToCTsPage(headxid); + int64 pageno = TransactionIdToCTsPage(headxid); int j; for (j = i; j < nsubxids; j++) @@ -214,7 +214,7 @@ TransactionTreeSetCommitTsData(TransactionId xid, int nsubxids, static void SetXidCommitTsInPage(TransactionId xid, int nsubxids, TransactionId *subxids, TimestampTz ts, - RepOriginId nodeid, int pageno) + RepOriginId nodeid, int64 pageno) { int slotno; int i; @@ -266,7 +266,7 @@ bool TransactionIdGetCommitTsData(TransactionId xid, TimestampTz *ts, RepOriginId *nodeid) { - int pageno = TransactionIdToCTsPage(xid); + int64 pageno = TransactionIdToCTsPage(xid); int entryno = TransactionIdToCTsEntry(xid); int slotno; CommitTimestampEntry entry; @@ -588,7 +588,7 @@ BootStrapCommitTs(void) * Control lock must be held at entry, and will be held at exit. */ static int -ZeroCommitTsPage(int pageno, bool writeXlog) +ZeroCommitTsPage(int64 pageno, bool writeXlog) { int slotno; @@ -681,7 +681,7 @@ static void ActivateCommitTs(void) { TransactionId xid; - int pageno; + int64 pageno; /* If we've done this already, there's nothing to do */ LWLockAcquire(CommitTsLock, LW_EXCLUSIVE); @@ -814,7 +814,7 @@ CheckPointCommitTs(void) void ExtendCommitTs(TransactionId newestXact) { - int pageno; + int64 pageno; /* * Nothing to do if module not enabled. Note we do an unlocked read of @@ -852,7 +852,7 @@ ExtendCommitTs(TransactionId newestXact) void TruncateCommitTs(TransactionId oldestXact) { - int cutoffPage; + int64 cutoffPage; /* * The cutoff point is the start of the segment containing oldestXact. We @@ -951,15 +951,14 @@ CommitTsPagePrecedes(int64 page1, int64 page2) TransactionIdPrecedes(xid1, xid2 + COMMIT_TS_XACTS_PER_PAGE - 1)); } - /* * Write a ZEROPAGE xlog record */ static void -WriteZeroPageXlogRec(int pageno) +WriteZeroPageXlogRec(int64 pageno) { XLogBeginInsert(); - XLogRegisterData((char *) (&pageno), sizeof(int)); + XLogRegisterData((char *) (&pageno), sizeof(pageno)); (void) XLogInsert(RM_COMMIT_TS_ID, COMMIT_TS_ZEROPAGE); } @@ -967,7 +966,7 @@ WriteZeroPageXlogRec(int pageno) * Write a TRUNCATE xlog record */ static void -WriteTruncateXlogRec(int pageno, TransactionId oldestXid) +WriteTruncateXlogRec(int64 pageno, TransactionId oldestXid) { xl_commit_ts_truncate xlrec; @@ -992,10 +991,10 @@ commit_ts_redo(XLogReaderState *record) if (info == COMMIT_TS_ZEROPAGE) { - int pageno; + int64 pageno; int slotno; - memcpy(&pageno, XLogRecGetData(record), sizeof(int)); + memcpy(&pageno, XLogRecGetData(record), sizeof(pageno)); LWLockAcquire(CommitTsSLRULock, LW_EXCLUSIVE); diff --git a/src/backend/access/transam/multixact.c b/src/backend/access/transam/multixact.c index ef4bd47eed..f553707291 100644 --- a/src/backend/access/transam/multixact.c +++ b/src/backend/access/transam/multixact.c @@ -353,8 +353,8 @@ static void mXactCachePut(MultiXactId multi, int nmembers, static char *mxstatus_to_string(MultiXactStatus status); /* management of SLRU infrastructure */ -static int ZeroMultiXactOffsetPage(int pageno, bool writeXlog); -static int ZeroMultiXactMemberPage(int pageno, bool writeXlog); +static int ZeroMultiXactOffsetPage(int64 pageno, bool writeXlog); +static int ZeroMultiXactMemberPage(int64 pageno, bool writeXlog); static bool MultiXactOffsetPagePrecedes(int64 page1, int64 page2); static bool MultiXactMemberPagePrecedes(int64 page1, int64 page2); static bool MultiXactOffsetPrecedes(MultiXactOffset offset1, @@ -365,7 +365,7 @@ static bool MultiXactOffsetWouldWrap(MultiXactOffset boundary, MultiXactOffset start, uint32 distance); static bool SetOffsetVacuumLimit(bool is_startup); static bool find_multixact_start(MultiXactId multi, MultiXactOffset *result); -static void WriteMZeroPageXlogRec(int pageno, uint8 info); +static void WriteMZeroPageXlogRec(int64 pageno, uint8 info); static void WriteMTruncateXlogRec(Oid oldestMultiDB, MultiXactId startTruncOff, MultiXactId endTruncOff, @@ -866,8 +866,8 @@ static void RecordNewMultiXact(MultiXactId multi, MultiXactOffset offset, int nmembers, MultiXactMember *members) { - int pageno; - int prev_pageno; + int64 pageno; + int64 prev_pageno; int entryno; int slotno; MultiXactOffset *offptr; @@ -1228,8 +1228,8 @@ int GetMultiXactIdMembers(MultiXactId multi, MultiXactMember **members, bool from_pgupgrade, bool isLockOnly) { - int pageno; - int prev_pageno; + int64 pageno; + int64 prev_pageno; int entryno; int slotno; MultiXactOffset *offptr; @@ -1937,7 +1937,7 @@ BootStrapMultiXact(void) * Control lock must be held at entry, and will be held at exit. */ static int -ZeroMultiXactOffsetPage(int pageno, bool writeXlog) +ZeroMultiXactOffsetPage(int64 pageno, bool writeXlog) { int slotno; @@ -1953,7 +1953,7 @@ ZeroMultiXactOffsetPage(int pageno, bool writeXlog) * Ditto, for MultiXactMember */ static int -ZeroMultiXactMemberPage(int pageno, bool writeXlog) +ZeroMultiXactMemberPage(int64 pageno, bool writeXlog) { int slotno; @@ -1983,7 +1983,7 @@ ZeroMultiXactMemberPage(int pageno, bool writeXlog) static void MaybeExtendOffsetSlru(void) { - int pageno; + int64 pageno; pageno = MultiXactIdToOffsetPage(MultiXactState->nextMXact); @@ -2018,7 +2018,7 @@ StartupMultiXact(void) { MultiXactId multi = MultiXactState->nextMXact; MultiXactOffset offset = MultiXactState->nextOffset; - int pageno; + int64 pageno; /* * Initialize offset's idea of the latest page number. @@ -2043,7 +2043,7 @@ TrimMultiXact(void) MultiXactOffset offset; MultiXactId oldestMXact; Oid oldestMXactDB; - int pageno; + int64 pageno; int entryno; int flagsoff; @@ -2414,7 +2414,7 @@ MultiXactAdvanceOldest(MultiXactId oldestMulti, Oid oldestMultiDB) static void ExtendMultiXactOffset(MultiXactId multi) { - int pageno; + int64 pageno; /* * No work except at first MultiXactId of a page. But beware: just after @@ -2463,7 +2463,7 @@ ExtendMultiXactMember(MultiXactOffset offset, int nmembers) flagsbit = MXOffsetToFlagsBitShift(offset); if (flagsoff == 0 && flagsbit == 0) { - int pageno; + int64 pageno; pageno = MXOffsetToMemberPage(offset); @@ -2746,7 +2746,7 @@ static bool find_multixact_start(MultiXactId multi, MultiXactOffset *result) { MultiXactOffset offset; - int pageno; + int64 pageno; int entryno; int slotno; MultiXactOffset *offptr; @@ -3206,10 +3206,10 @@ MultiXactOffsetPrecedes(MultiXactOffset offset1, MultiXactOffset offset2) * OFFSETs page (info shows which) */ static void -WriteMZeroPageXlogRec(int pageno, uint8 info) +WriteMZeroPageXlogRec(int64 pageno, uint8 info) { XLogBeginInsert(); - XLogRegisterData((char *) (&pageno), sizeof(int)); + XLogRegisterData((char *) (&pageno), sizeof(pageno)); (void) XLogInsert(RM_MULTIXACT_ID, info); } @@ -3254,10 +3254,10 @@ multixact_redo(XLogReaderState *record) if (info == XLOG_MULTIXACT_ZERO_OFF_PAGE) { - int pageno; + int64 pageno; int slotno; - memcpy(&pageno, XLogRecGetData(record), sizeof(int)); + memcpy(&pageno, XLogRecGetData(record), sizeof(pageno)); LWLockAcquire(MultiXactOffsetSLRULock, LW_EXCLUSIVE); @@ -3269,10 +3269,10 @@ multixact_redo(XLogReaderState *record) } else if (info == XLOG_MULTIXACT_ZERO_MEM_PAGE) { - int pageno; + int64 pageno; int slotno; - memcpy(&pageno, XLogRecGetData(record), sizeof(int)); + memcpy(&pageno, XLogRecGetData(record), sizeof(pageno)); LWLockAcquire(MultiXactMemberSLRULock, LW_EXCLUSIVE); @@ -3314,7 +3314,7 @@ multixact_redo(XLogReaderState *record) else if (info == XLOG_MULTIXACT_TRUNCATE_ID) { xl_multixact_truncate xlrec; - int pageno; + int64 pageno; memcpy(&xlrec, XLogRecGetData(record), SizeOfMultiXactTruncate); diff --git a/src/backend/access/transam/slru.c b/src/backend/access/transam/slru.c index ea66084410..9e765c6c28 100644 --- a/src/backend/access/transam/slru.c +++ b/src/backend/access/transam/slru.c @@ -63,11 +63,7 @@ static int inline SlruFileName(SlruCtl ctl, char *path, int64 segno) { - /* - * Since we do not have 64 bit XIDs yet, make sure have no overflow here. - */ - Assert(segno <= PG_INT32_MAX); - return snprintf(path, MAXPGPATH, "%s/%04X", ctl->Dir, (int) segno); + return snprintf(path, MAXPGPATH, "%s/%012llX", ctl->Dir, (long long) segno); } /* @@ -1583,7 +1579,7 @@ SlruScanDirectory(SlruCtl ctl, SlruScanCallback callback, void *data) len = strlen(clde->d_name); - if ((len == 4 || len == 5 || len == 6) && + if ((len == 12 || len == 13 || len == 14) && strspn(clde->d_name, "0123456789ABCDEF") == len) { segno = (int) strtol(clde->d_name, NULL, 16); diff --git a/src/backend/access/transam/subtrans.c b/src/backend/access/transam/subtrans.c index 9b057a6b04..e2e20ed06c 100644 --- a/src/backend/access/transam/subtrans.c +++ b/src/backend/access/transam/subtrans.c @@ -63,7 +63,7 @@ static SlruCtlData SubTransCtlData; #define SubTransCtl (&SubTransCtlData) -static int ZeroSUBTRANSPage(int pageno); +static int ZeroSUBTRANSPage(int64 pageno); static bool SubTransPagePrecedes(int64 page1, int64 page2); @@ -73,7 +73,7 @@ static bool SubTransPagePrecedes(int64 page1, int64 page2); void SubTransSetParent(TransactionId xid, TransactionId parent) { - int pageno = TransactionIdToPage(xid); + int64 pageno = TransactionIdToPage(xid); int entryno = TransactionIdToEntry(xid); int slotno; TransactionId *ptr; @@ -108,7 +108,7 @@ SubTransSetParent(TransactionId xid, TransactionId parent) TransactionId SubTransGetParent(TransactionId xid) { - int pageno = TransactionIdToPage(xid); + int64 pageno = TransactionIdToPage(xid); int entryno = TransactionIdToEntry(xid); int slotno; TransactionId *ptr; @@ -234,7 +234,7 @@ BootStrapSUBTRANS(void) * Control lock must be held at entry, and will be held at exit. */ static int -ZeroSUBTRANSPage(int pageno) +ZeroSUBTRANSPage(int64 pageno) { return SimpleLruZeroPage(SubTransCtl, pageno); } @@ -250,8 +250,8 @@ void StartupSUBTRANS(TransactionId oldestActiveXID) { FullTransactionId nextXid; - int startPage; - int endPage; + int64 startPage; + int64 endPage; /* * Since we don't expect pg_subtrans to be valid across crashes, we @@ -308,7 +308,7 @@ CheckPointSUBTRANS(void) void ExtendSUBTRANS(TransactionId newestXact) { - int pageno; + int64 pageno; /* * No work except at first XID of a page. But beware: just after @@ -338,7 +338,7 @@ ExtendSUBTRANS(TransactionId newestXact) void TruncateSUBTRANS(TransactionId oldestXact) { - int cutoffPage; + int64 cutoffPage; /* * The cutoff point is the start of the segment containing oldestXact. We diff --git a/src/bin/pg_verifybackup/t/003_corruption.pl b/src/bin/pg_verifybackup/t/003_corruption.pl index 3dba7d8a69..f1ceb4a4bd 100644 --- a/src/bin/pg_verifybackup/t/003_corruption.pl +++ b/src/bin/pg_verifybackup/t/003_corruption.pl @@ -174,7 +174,7 @@ sub mutilate_extra_tablespace_file sub mutilate_missing_file { my ($backup_path) = @_; - my $pathname = "$backup_path/pg_xact/0000"; + my $pathname = "$backup_path/pg_xact/000000000000"; unlink($pathname) || die "$pathname: $!"; return; } diff --git a/src/include/access/commit_ts.h b/src/include/access/commit_ts.h index 7662f8e1a9..d2cfb02e14 100644 --- a/src/include/access/commit_ts.h +++ b/src/include/access/commit_ts.h @@ -60,7 +60,7 @@ typedef struct xl_commit_ts_set typedef struct xl_commit_ts_truncate { - int pageno; + int64 pageno; TransactionId oldestXid; } xl_commit_ts_truncate; diff --git a/src/include/storage/proc.h b/src/include/storage/proc.h index 91824b4691..fdc18f8180 100644 --- a/src/include/storage/proc.h +++ b/src/include/storage/proc.h @@ -277,7 +277,7 @@ struct PGPROC TransactionId clogGroupMemberXid; /* transaction id of clog group member */ XidStatus clogGroupMemberXidStatus; /* transaction status of clog * group member */ - int clogGroupMemberPage; /* clog page corresponding to + int64 clogGroupMemberPage; /* clog page corresponding to * transaction id of clog group member */ XLogRecPtr clogGroupMemberLsn; /* WAL location of commit record for clog * group member */ -- 2.37.0 (Apple Git-136)