pg.ddx.io pgsql-hackers@postgresql.org mailing list archive
help / color / mirror / Atom feed From: Aleksander Alekseev <aleksander@timescale.com>
To: Maxim Orlov <orlovmg@gmail.com>
Cc: Postgres hackers <pgsql-hackers@lists.postgresql.org>
Cc: Pavel Borisov <pashkin.elfe@gmail.com>
Cc: Peter Eisentraut <peter.eisentraut@enterprisedb.com>
Cc: Japin Li <japinli@hotmail.com>
Cc: Alexander Korotkov <aekorotkov@gmail.com>
Cc: Kyotaro Horiguchi <horikyota.ntt@gmail.com>
Cc: Ilya Anfimov <ilan@tzirechnoy.com>
Subject: Re: XID formatting and SLRU refactorings (was: Add 64-bit XIDs into PostgreSQL 15)
Date: Tue, 26 Apr 2022 15:55:16 +0300
Message-ID: <CAJ7c6TONjAzfPy44rOBFc0ydZVmnvHhNeGfeRwZ2t5qcB9D_dQ@mail.gmail.com> (raw )
In-Reply-To: <CACG=ezZFHdYhTuSZX5=5+vZvfxgtJawQgzsPhu9cEZnb7vSzGw@mail.gmail.com >
References: <CAJ7c6TPDOYBYrnCAeyndkBktO0WG2xSdYduTF0nxq+vfkmTF5Q@mail.gmail.com >
<CACG=ezaA2J7M+xoA=7jM4SifAsdVt_p7XLRFQS-Tv=nQDJ2p_w@mail.gmail.com >
<MEYP282MB16691EBC0386973FCD862FAEB6189@MEYP282MB1669.AUSP282.PROD.OUTLOOK.COM >
<CACG=ezZF8o0jZdw-uVRf1hic5fs9R+xXvM-Yy59vRpxG==QeLQ@mail.gmail.com >
<131006ee-d309-f77e-7d3e-db8e9d76aeef@enterprisedb.com >
<CALT9ZEEf1uywYN+VaRuSwNMGE5=eFOy7ZTwtP2g+W9oJDszqQw@mail.gmail.com >
<CALT9ZEG8Cbcy0cS0QYGpyDo_QTGTMTAKvsiVZpsM_Y=cpGOxyw@mail.gmail.com >
<CACG=ezY4CU8amnG_FvO8bQMwEiQZDroF1592ZHFEjvB8=QjG=w@mail.gmail.com >
<CALT9ZEF25j2DBT7hA52rTRLJtxPb6wiGvauMfT+DFQRGzOLzOw@mail.gmail.com >
<CACG=ezYs99WRjW8XfjWDzsQPtK6HLjVQFSJ5e-krQBRLyUHk0g@mail.gmail.com >
<CACG=ezY10qUtZszJ+sv3cOzrVKZRvFFwbB1hMRBvN4T4BoM9xA@mail.gmail.com >
<CAJ7c6TO9+_G6MXsRxoxC2Luo65M3Tp+A860QCvhO6_d-6OBKYQ@mail.gmail.com >
<6e24403a-0afb-f053-60b8-3b983266454c@enterprisedb.com >
<CAJ7c6TMZWP0K5WJGscL=9R_-zFsGpkUJ_RaPCWB81=R2=x0NFg@mail.gmail.com >
<220fab30-dff0-b055-f803-4338219f1021@enterprisedb.com >
<CAJ7c6TONjfwZds0DkP0cKZnGc9s+SWRkFkiYjE_O1fXTweuM6Q@mail.gmail.com >
<CACG=ezb3uLMQgYR4P07RQrcqj-Lmb6FO0ots6TnG8VKd-tqqnw@mail.gmail.com >
<CACG=ezZFHdYhTuSZX5=5+vZvfxgtJawQgzsPhu9cEZnb7vSzGw@mail.gmail.com >
Hi hackers,
> here is the rebased v32 version of the patch.
The patchset rotted a bit. Here is a rebased version.
--
Best regards,
Aleksander Alekseev
Attachments: download all (3 files, .tar.gz)
v33-0001-Use-64-bit-numbering-of-SLRU-pages.patch (application/octet-stream, 24.5K) download
From 27dcbdbd4049df9ee77c1cf857187bfc545ab427 Mon Sep 17 00:00:00 2001
From: Maxim Orlov <m.orlov@postgrespro.ru>
Date: Fri, 11 Mar 2022 11:36:34 +0300
Subject: [PATCH v33 1/3] Use 64-bit numbering of SLRU pages.
Having 64-bit numbering of SLRU pages is a requirement for using 64-bit XIDs.
This is part of transition to 64bit XIDs. It does not affect XID length and
format.
Author: Alexander Korotkov <aekorotkov@gmail.com>
Author: Teodor Sigaev <teodor@sigaev.ru>
Author: Nikita Glukhov <n.gluhov@postgrespro.ru>
Author: Maxim Orlov <orlovmg@gmail.com>
Author: Pavel Borisov <pashkin.elfe@gmail.com>
Author: Yura Sokolov <y.sokolov@postgrespro.ru> <funny.falcon@gmail.com>
Author: Aleksander Alekseev <aleksander@timescale.com>
Reviewed-by: Aleksander Alekseev <aleksander@timescale.com>
Discussion: https://postgr.es/m/CACG%3DezZe1NQSCnfHOr78AtAZxJZeCvxrts0ygrxYwe%3DpyyjVWA%40mail.gmail.com
Discussion: https://postgr.es/m/CAJ7c6TPDOYBYrnCAeyndkBktO0WG2xSdYduTF0nxq%2BvfkmTF5Q%40mail.gmail.com
---
src/backend/access/transam/clog.c | 4 +-
src/backend/access/transam/commit_ts.c | 4 +-
src/backend/access/transam/multixact.c | 12 ++--
src/backend/access/transam/slru.c | 98 ++++++++++++++------------
src/backend/access/transam/subtrans.c | 4 +-
src/backend/commands/async.c | 18 ++---
src/backend/storage/lmgr/predicate.c | 10 +--
src/include/access/slru.h | 24 +++----
src/include/storage/sync.h | 2 +-
9 files changed, 93 insertions(+), 83 deletions(-)
diff --git a/src/backend/access/transam/clog.c b/src/backend/access/transam/clog.c
index 3d9088a704..e03c167a27 100644
--- a/src/backend/access/transam/clog.c
+++ b/src/backend/access/transam/clog.c
@@ -90,7 +90,7 @@ static SlruCtlData XactCtlData;
static int ZeroCLOGPage(int pageno, bool writeXlog);
-static bool CLOGPagePrecedes(int page1, int page2);
+static bool CLOGPagePrecedes(int64 page1, int64 page2);
static void WriteZeroPageXlogRec(int pageno);
static void WriteTruncateXlogRec(int pageno, TransactionId oldestXact,
Oid oldestXactDb);
@@ -932,7 +932,7 @@ TruncateCLOG(TransactionId oldestXact, Oid oldestxid_datoid)
* don't optimize that edge case.
*/
static bool
-CLOGPagePrecedes(int page1, int page2)
+CLOGPagePrecedes(int64 page1, int64 page2)
{
TransactionId xid1;
TransactionId xid2;
diff --git a/src/backend/access/transam/commit_ts.c b/src/backend/access/transam/commit_ts.c
index 20950eb1e4..76dfd2b13b 100644
--- a/src/backend/access/transam/commit_ts.c
+++ b/src/backend/access/transam/commit_ts.c
@@ -111,7 +111,7 @@ 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 bool CommitTsPagePrecedes(int page1, int page2);
+static bool CommitTsPagePrecedes(int64 page1, int64 page2);
static void ActivateCommitTs(void);
static void DeactivateCommitTs(void);
static void WriteZeroPageXlogRec(int pageno);
@@ -939,7 +939,7 @@ AdvanceOldestCommitTsXid(TransactionId oldestXact)
* oldestXact=N+2.1, it would be precious at oldestXact=N+2.9.
*/
static bool
-CommitTsPagePrecedes(int page1, int page2)
+CommitTsPagePrecedes(int64 page1, int64 page2)
{
TransactionId xid1;
TransactionId xid2;
diff --git a/src/backend/access/transam/multixact.c b/src/backend/access/transam/multixact.c
index 8f7d12950e..69ff2d111b 100644
--- a/src/backend/access/transam/multixact.c
+++ b/src/backend/access/transam/multixact.c
@@ -355,8 +355,8 @@ 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 bool MultiXactOffsetPagePrecedes(int page1, int page2);
-static bool MultiXactMemberPagePrecedes(int page1, int page2);
+static bool MultiXactOffsetPagePrecedes(int64 page1, int64 page2);
+static bool MultiXactMemberPagePrecedes(int64 page1, int64 page2);
static bool MultiXactOffsetPrecedes(MultiXactOffset offset1,
MultiXactOffset offset2);
static void ExtendMultiXactOffset(MultiXactId multi);
@@ -2857,7 +2857,7 @@ MultiXactMemberFreezeThreshold(void)
typedef struct mxtruncinfo
{
- int earliestExistingPage;
+ int64 earliestExistingPage;
} mxtruncinfo;
/*
@@ -2865,7 +2865,7 @@ typedef struct mxtruncinfo
* This callback determines the earliest existing page number.
*/
static bool
-SlruScanDirCbFindEarliest(SlruCtl ctl, char *filename, int segpage, void *data)
+SlruScanDirCbFindEarliest(SlruCtl ctl, char *filename, int64 segpage, void *data)
{
mxtruncinfo *trunc = (mxtruncinfo *) data;
@@ -3116,7 +3116,7 @@ TruncateMultiXact(MultiXactId newOldestMulti, Oid newOldestMultiDB)
* translational symmetry.
*/
static bool
-MultiXactOffsetPagePrecedes(int page1, int page2)
+MultiXactOffsetPagePrecedes(int64 page1, int64 page2)
{
MultiXactId multi1;
MultiXactId multi2;
@@ -3136,7 +3136,7 @@ MultiXactOffsetPagePrecedes(int page1, int page2)
* purposes. There is no "invalid offset number" so use the numbers verbatim.
*/
static bool
-MultiXactMemberPagePrecedes(int page1, int page2)
+MultiXactMemberPagePrecedes(int64 page1, int64 page2)
{
MultiXactOffset offset1;
MultiXactOffset offset2;
diff --git a/src/backend/access/transam/slru.c b/src/backend/access/transam/slru.c
index b65cb49d7f..faf561f225 100644
--- a/src/backend/access/transam/slru.c
+++ b/src/backend/access/transam/slru.c
@@ -60,8 +60,15 @@
#include "storage/fd.h"
#include "storage/shmem.h"
-#define SlruFileName(ctl, path, seg) \
- snprintf(path, MAXPGPATH, "%s/%04X", (ctl)->Dir, seg)
+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);
+}
/*
* During SimpleLruWriteAll(), we will usually not need to write more than one
@@ -75,7 +82,7 @@ typedef struct SlruWriteAllData
{
int num_files; /* # files actually open */
int fd[MAX_WRITEALL_BUFFERS]; /* their FD's */
- int segno[MAX_WRITEALL_BUFFERS]; /* their log seg#s */
+ int64 segno[MAX_WRITEALL_BUFFERS]; /* their log seg#s */
} SlruWriteAllData;
typedef struct SlruWriteAllData *SlruWriteAll;
@@ -138,20 +145,20 @@ static int slru_errno;
static void SimpleLruZeroLSNs(SlruCtl ctl, int slotno);
static void SimpleLruWaitIO(SlruCtl ctl, int slotno);
static void SlruInternalWritePage(SlruCtl ctl, int slotno, SlruWriteAll fdata);
-static bool SlruPhysicalReadPage(SlruCtl ctl, int pageno, int slotno);
-static bool SlruPhysicalWritePage(SlruCtl ctl, int pageno, int slotno,
+static bool SlruPhysicalReadPage(SlruCtl ctl, int64 pageno, int slotno);
+static bool SlruPhysicalWritePage(SlruCtl ctl, int64 pageno, int slotno,
SlruWriteAll fdata);
-static void SlruReportIOError(SlruCtl ctl, int pageno, TransactionId xid);
-static int SlruSelectLRUPage(SlruCtl ctl, int pageno);
+static void SlruReportIOError(SlruCtl ctl, int64 pageno, TransactionId xid);
+static int SlruSelectLRUPage(SlruCtl ctl, int64 pageno);
static bool SlruScanDirCbDeleteCutoff(SlruCtl ctl, char *filename,
- int segpage, void *data);
-static void SlruInternalDeleteSegment(SlruCtl ctl, int segno);
+ int64 segpage, void *data);
+static void SlruInternalDeleteSegment(SlruCtl ctl, int64 segno);
+
/*
* Initialization of shared memory
*/
-
Size
SimpleLruShmemSize(int nslots, int nlsns)
{
@@ -162,7 +169,7 @@ SimpleLruShmemSize(int nslots, int nlsns)
sz += MAXALIGN(nslots * sizeof(char *)); /* page_buffer[] */
sz += MAXALIGN(nslots * sizeof(SlruPageStatus)); /* page_status[] */
sz += MAXALIGN(nslots * sizeof(bool)); /* page_dirty[] */
- sz += MAXALIGN(nslots * sizeof(int)); /* page_number[] */
+ sz += MAXALIGN(nslots * sizeof(int64)); /* page_number[] */
sz += MAXALIGN(nslots * sizeof(int)); /* page_lru_count[] */
sz += MAXALIGN(nslots * sizeof(LWLockPadded)); /* buffer_locks[] */
@@ -225,8 +232,8 @@ SimpleLruInit(SlruCtl ctl, const char *name, int nslots, int nlsns,
offset += MAXALIGN(nslots * sizeof(SlruPageStatus));
shared->page_dirty = (bool *) (ptr + offset);
offset += MAXALIGN(nslots * sizeof(bool));
- shared->page_number = (int *) (ptr + offset);
- offset += MAXALIGN(nslots * sizeof(int));
+ shared->page_number = (int64 *) (ptr + offset);
+ offset += MAXALIGN(nslots * sizeof(int64));
shared->page_lru_count = (int *) (ptr + offset);
offset += MAXALIGN(nslots * sizeof(int));
@@ -277,7 +284,7 @@ SimpleLruInit(SlruCtl ctl, const char *name, int nslots, int nlsns,
* Control lock must be held at entry, and will be held at exit.
*/
int
-SimpleLruZeroPage(SlruCtl ctl, int pageno)
+SimpleLruZeroPage(SlruCtl ctl, int64 pageno)
{
SlruShared shared = ctl->shared;
int slotno;
@@ -392,7 +399,7 @@ SimpleLruWaitIO(SlruCtl ctl, int slotno)
* Control lock must be held at entry, and will be held at exit.
*/
int
-SimpleLruReadPage(SlruCtl ctl, int pageno, bool write_ok,
+SimpleLruReadPage(SlruCtl ctl, int64 pageno, bool write_ok,
TransactionId xid)
{
SlruShared shared = ctl->shared;
@@ -492,7 +499,7 @@ SimpleLruReadPage(SlruCtl ctl, int pageno, bool write_ok,
* It is unspecified whether the lock will be shared or exclusive.
*/
int
-SimpleLruReadPage_ReadOnly(SlruCtl ctl, int pageno, TransactionId xid)
+SimpleLruReadPage_ReadOnly(SlruCtl ctl, int64 pageno, TransactionId xid)
{
SlruShared shared = ctl->shared;
int slotno;
@@ -539,7 +546,7 @@ static void
SlruInternalWritePage(SlruCtl ctl, int slotno, SlruWriteAll fdata)
{
SlruShared shared = ctl->shared;
- int pageno = shared->page_number[slotno];
+ int64 pageno = shared->page_number[slotno];
bool ok;
/* If a write is in progress, wait for it to finish */
@@ -623,9 +630,9 @@ SimpleLruWritePage(SlruCtl ctl, int slotno)
* large enough to contain the given page.
*/
bool
-SimpleLruDoesPhysicalPageExist(SlruCtl ctl, int pageno)
+SimpleLruDoesPhysicalPageExist(SlruCtl ctl, int64 pageno)
{
- int segno = pageno / SLRU_PAGES_PER_SEGMENT;
+ int64 segno = pageno / SLRU_PAGES_PER_SEGMENT;
int rpageno = pageno % SLRU_PAGES_PER_SEGMENT;
int offset = rpageno * BLCKSZ;
char path[MAXPGPATH];
@@ -681,10 +688,10 @@ SimpleLruDoesPhysicalPageExist(SlruCtl ctl, int pageno)
* read/write operations. We could cache one virtual file pointer ...
*/
static bool
-SlruPhysicalReadPage(SlruCtl ctl, int pageno, int slotno)
+SlruPhysicalReadPage(SlruCtl ctl, int64 pageno, int slotno)
{
SlruShared shared = ctl->shared;
- int segno = pageno / SLRU_PAGES_PER_SEGMENT;
+ int64 segno = pageno / SLRU_PAGES_PER_SEGMENT;
int rpageno = pageno % SLRU_PAGES_PER_SEGMENT;
off_t offset = rpageno * BLCKSZ;
char path[MAXPGPATH];
@@ -753,10 +760,10 @@ SlruPhysicalReadPage(SlruCtl ctl, int pageno, int slotno)
* SimpleLruWriteAll.
*/
static bool
-SlruPhysicalWritePage(SlruCtl ctl, int pageno, int slotno, SlruWriteAll fdata)
+SlruPhysicalWritePage(SlruCtl ctl, int64 pageno, int slotno, SlruWriteAll fdata)
{
SlruShared shared = ctl->shared;
- int segno = pageno / SLRU_PAGES_PER_SEGMENT;
+ int64 segno = pageno / SLRU_PAGES_PER_SEGMENT;
int rpageno = pageno % SLRU_PAGES_PER_SEGMENT;
off_t offset = rpageno * BLCKSZ;
char path[MAXPGPATH];
@@ -928,9 +935,9 @@ SlruPhysicalWritePage(SlruCtl ctl, int pageno, int slotno, SlruWriteAll fdata)
* SlruPhysicalWritePage. Call this after cleaning up shared-memory state.
*/
static void
-SlruReportIOError(SlruCtl ctl, int pageno, TransactionId xid)
+SlruReportIOError(SlruCtl ctl, int64 pageno, TransactionId xid)
{
- int segno = pageno / SLRU_PAGES_PER_SEGMENT;
+ int64 segno = pageno / SLRU_PAGES_PER_SEGMENT;
int rpageno = pageno % SLRU_PAGES_PER_SEGMENT;
int offset = rpageno * BLCKSZ;
char path[MAXPGPATH];
@@ -962,7 +969,8 @@ SlruReportIOError(SlruCtl ctl, int pageno, TransactionId xid)
else
ereport(ERROR,
(errmsg("could not access status of transaction %u", xid),
- errdetail("Could not read from file \"%s\" at offset %d: read too few bytes.", path, offset)));
+ errdetail("Could not read from file \"%s\" at offset %d: read too few bytes.",
+ path, offset)));
break;
case SLRU_WRITE_FAILED:
if (errno)
@@ -1013,7 +1021,7 @@ SlruReportIOError(SlruCtl ctl, int pageno, TransactionId xid)
* Control lock must be held at entry, and will be held at exit.
*/
static int
-SlruSelectLRUPage(SlruCtl ctl, int pageno)
+SlruSelectLRUPage(SlruCtl ctl, int64 pageno)
{
SlruShared shared = ctl->shared;
@@ -1024,10 +1032,10 @@ SlruSelectLRUPage(SlruCtl ctl, int pageno)
int cur_count;
int bestvalidslot = 0; /* keep compiler quiet */
int best_valid_delta = -1;
- int best_valid_page_number = 0; /* keep compiler quiet */
+ int64 best_valid_page_number = 0; /* keep compiler quiet */
int bestinvalidslot = 0; /* keep compiler quiet */
int best_invalid_delta = -1;
- int best_invalid_page_number = 0; /* keep compiler quiet */
+ int64 best_invalid_page_number = 0; /* keep compiler quiet */
/* See if page already has a buffer assigned */
for (slotno = 0; slotno < shared->num_slots; slotno++)
@@ -1068,7 +1076,7 @@ SlruSelectLRUPage(SlruCtl ctl, int pageno)
for (slotno = 0; slotno < shared->num_slots; slotno++)
{
int this_delta;
- int this_page_number;
+ int64 this_page_number;
if (shared->page_status[slotno] == SLRU_PAGE_EMPTY)
return slotno;
@@ -1158,7 +1166,7 @@ SimpleLruWriteAll(SlruCtl ctl, bool allow_redirtied)
SlruShared shared = ctl->shared;
SlruWriteAllData fdata;
int slotno;
- int pageno = 0;
+ int64 pageno = 0;
int i;
bool ok;
@@ -1223,7 +1231,7 @@ SimpleLruWriteAll(SlruCtl ctl, bool allow_redirtied)
* after it has accrued freshly-written data.
*/
void
-SimpleLruTruncate(SlruCtl ctl, int cutoffPage)
+SimpleLruTruncate(SlruCtl ctl, int64 cutoffPage)
{
SlruShared shared = ctl->shared;
int slotno;
@@ -1301,7 +1309,7 @@ restart:;
* they either can't yet contain anything, or have already been cleaned out.
*/
static void
-SlruInternalDeleteSegment(SlruCtl ctl, int segno)
+SlruInternalDeleteSegment(SlruCtl ctl, int64 segno)
{
char path[MAXPGPATH];
@@ -1324,7 +1332,7 @@ SlruInternalDeleteSegment(SlruCtl ctl, int segno)
* Delete an individual SLRU segment, identified by the segment number.
*/
void
-SlruDeleteSegment(SlruCtl ctl, int segno)
+SlruDeleteSegment(SlruCtl ctl, int64 segno)
{
SlruShared shared = ctl->shared;
int slotno;
@@ -1388,9 +1396,9 @@ restart:
* first>=cutoff && last>=cutoff: no; every page of this segment is too young
*/
static bool
-SlruMayDeleteSegment(SlruCtl ctl, int segpage, int cutoffPage)
+SlruMayDeleteSegment(SlruCtl ctl, int64 segpage, int64 cutoffPage)
{
- int seg_last_page = segpage + SLRU_PAGES_PER_SEGMENT - 1;
+ int64 seg_last_page = segpage + SLRU_PAGES_PER_SEGMENT - 1;
Assert(segpage % SLRU_PAGES_PER_SEGMENT == 0);
@@ -1404,7 +1412,7 @@ SlruPagePrecedesTestOffset(SlruCtl ctl, int per_page, uint32 offset)
{
TransactionId lhs,
rhs;
- int newestPage,
+ int64 newestPage,
oldestPage;
TransactionId newestXact,
oldestXact;
@@ -1497,9 +1505,10 @@ SlruPagePrecedesUnitTests(SlruCtl ctl, int per_page)
* one containing the page passed as "data".
*/
bool
-SlruScanDirCbReportPresence(SlruCtl ctl, char *filename, int segpage, void *data)
+SlruScanDirCbReportPresence(SlruCtl ctl, char *filename, int64 segpage,
+ void *data)
{
- int cutoffPage = *(int *) data;
+ int64 cutoffPage = *(int64 *) data;
if (SlruMayDeleteSegment(ctl, segpage, cutoffPage))
return true; /* found one; don't iterate any more */
@@ -1512,9 +1521,10 @@ SlruScanDirCbReportPresence(SlruCtl ctl, char *filename, int segpage, void *data
* This callback deletes segments prior to the one passed in as "data".
*/
static bool
-SlruScanDirCbDeleteCutoff(SlruCtl ctl, char *filename, int segpage, void *data)
+SlruScanDirCbDeleteCutoff(SlruCtl ctl, char *filename, int64 segpage,
+ void *data)
{
- int cutoffPage = *(int *) data;
+ int64 cutoffPage = *(int64 *) data;
if (SlruMayDeleteSegment(ctl, segpage, cutoffPage))
SlruInternalDeleteSegment(ctl, segpage / SLRU_PAGES_PER_SEGMENT);
@@ -1527,7 +1537,7 @@ SlruScanDirCbDeleteCutoff(SlruCtl ctl, char *filename, int segpage, void *data)
* This callback deletes all segments.
*/
bool
-SlruScanDirCbDeleteAll(SlruCtl ctl, char *filename, int segpage, void *data)
+SlruScanDirCbDeleteAll(SlruCtl ctl, char *filename, int64 segpage, void *data)
{
SlruInternalDeleteSegment(ctl, segpage / SLRU_PAGES_PER_SEGMENT);
@@ -1555,8 +1565,8 @@ SlruScanDirectory(SlruCtl ctl, SlruScanCallback callback, void *data)
bool retval = false;
DIR *cldir;
struct dirent *clde;
- int segno;
- int segpage;
+ int64 segno;
+ int64 segpage;
cldir = AllocateDir(ctl->Dir);
while ((clde = ReadDir(cldir, ctl->Dir)) != NULL)
diff --git a/src/backend/access/transam/subtrans.c b/src/backend/access/transam/subtrans.c
index 7240454ca4..de09068395 100644
--- a/src/backend/access/transam/subtrans.c
+++ b/src/backend/access/transam/subtrans.c
@@ -72,7 +72,7 @@ static SlruCtlData SubTransCtlData;
static int ZeroSUBTRANSPage(int pageno);
-static bool SubTransPagePrecedes(int page1, int page2);
+static bool SubTransPagePrecedes(int64 page1, int64 page2);
/*
@@ -377,7 +377,7 @@ TruncateSUBTRANS(TransactionId oldestXact)
* Analogous to CLOGPagePrecedes().
*/
static bool
-SubTransPagePrecedes(int page1, int page2)
+SubTransPagePrecedes(int64 page1, int64 page2)
{
TransactionId xid1;
TransactionId xid2;
diff --git a/src/backend/commands/async.c b/src/backend/commands/async.c
index 3e1b92df03..056dca8e47 100644
--- a/src/backend/commands/async.c
+++ b/src/backend/commands/async.c
@@ -196,7 +196,7 @@ typedef struct AsyncQueueEntry
*/
typedef struct QueuePosition
{
- int page; /* SLRU page number */
+ int64 page; /* SLRU page number */
int offset; /* byte offset within page */
} QueuePosition;
@@ -443,8 +443,8 @@ static bool tryAdvanceTail = false;
bool Trace_notify = false;
/* local function prototypes */
-static int asyncQueuePageDiff(int p, int q);
-static bool asyncQueuePagePrecedes(int p, int q);
+static int64 asyncQueuePageDiff(int64 p, int64 q);
+static bool asyncQueuePagePrecedes(int64 p, int64 q);
static void queue_listen(ListenActionKind action, const char *channel);
static void Async_UnlistenOnExit(int code, Datum arg);
static void Exec_ListenPreCommit(void);
@@ -477,10 +477,10 @@ static void ClearPendingActionsAndNotifies(void);
* Compute the difference between two queue page numbers (i.e., p - q),
* accounting for wraparound.
*/
-static int
-asyncQueuePageDiff(int p, int q)
+static int64
+asyncQueuePageDiff(int64 p, int64 q)
{
- int diff;
+ int64 diff;
/*
* We have to compare modulo (QUEUE_MAX_PAGE+1)/2. Both inputs should be
@@ -504,7 +504,7 @@ asyncQueuePageDiff(int p, int q)
* extant page, we need not assess entries within a page.
*/
static bool
-asyncQueuePagePrecedes(int p, int q)
+asyncQueuePagePrecedes(int64 p, int64 q)
{
return asyncQueuePageDiff(p, q) < 0;
}
@@ -1336,7 +1336,7 @@ asyncQueueIsFull(void)
static bool
asyncQueueAdvance(volatile QueuePosition *position, int entryLength)
{
- int pageno = QUEUE_POS_PAGE(*position);
+ int64 pageno = QUEUE_POS_PAGE(*position);
int offset = QUEUE_POS_OFFSET(*position);
bool pageJump = false;
@@ -1409,7 +1409,7 @@ asyncQueueAddEntries(ListCell *nextNotify)
{
AsyncQueueEntry qe;
QueuePosition queue_head;
- int pageno;
+ int64 pageno;
int offset;
int slotno;
diff --git a/src/backend/storage/lmgr/predicate.c b/src/backend/storage/lmgr/predicate.c
index 25e7e4e37b..bea5d810e0 100644
--- a/src/backend/storage/lmgr/predicate.c
+++ b/src/backend/storage/lmgr/predicate.c
@@ -438,7 +438,7 @@ static void SetPossibleUnsafeConflict(SERIALIZABLEXACT *roXact, SERIALIZABLEXACT
static void ReleaseRWConflict(RWConflict conflict);
static void FlagSxactUnsafe(SERIALIZABLEXACT *sxact);
-static bool SerialPagePrecedesLogically(int page1, int page2);
+static bool SerialPagePrecedesLogically(int64 page1, int64 page2);
static void SerialInit(void);
static void SerialAdd(TransactionId xid, SerCommitSeqNo minConflictCommitSeqNo);
static SerCommitSeqNo SerialGetMinConflictCommitSeqNo(TransactionId xid);
@@ -788,7 +788,7 @@ FlagSxactUnsafe(SERIALIZABLEXACT *sxact)
* Analogous to CLOGPagePrecedes().
*/
static bool
-SerialPagePrecedesLogically(int page1, int page2)
+SerialPagePrecedesLogically(int64 page1, int64 page2)
{
TransactionId xid1;
TransactionId xid2;
@@ -808,7 +808,7 @@ SerialPagePrecedesLogicallyUnitTests(void)
{
int per_page = SERIAL_ENTRIESPERPAGE,
offset = per_page / 2;
- int newestPage,
+ int64 newestPage,
oldestPage,
headPage,
targetPage;
@@ -906,9 +906,9 @@ static void
SerialAdd(TransactionId xid, SerCommitSeqNo minConflictCommitSeqNo)
{
TransactionId tailXid;
- int targetPage;
+ int64 targetPage;
int slotno;
- int firstZeroPage;
+ int64 firstZeroPage;
bool isNewPage;
Assert(TransactionIdIsValid(xid));
diff --git a/src/include/access/slru.h b/src/include/access/slru.h
index 130c41c863..4f5a324da2 100644
--- a/src/include/access/slru.h
+++ b/src/include/access/slru.h
@@ -64,7 +64,7 @@ typedef struct SlruSharedData
char **page_buffer;
SlruPageStatus *page_status;
bool *page_dirty;
- int *page_number;
+ int64 *page_number;
int *page_lru_count;
LWLockPadded *buffer_locks;
@@ -95,7 +95,7 @@ typedef struct SlruSharedData
* this is not critical data, since we use it only to avoid swapping out
* the latest page.
*/
- int latest_page_number;
+ int64 latest_page_number;
/* SLRU's index for statistics purposes (might not be unique) */
int slru_stats_idx;
@@ -127,7 +127,7 @@ typedef struct SlruCtlData
* the behavior of this callback has no functional implications.) Use
* SlruPagePrecedesUnitTests() in SLRUs meeting its criteria.
*/
- bool (*PagePrecedes) (int, int);
+ bool (*PagePrecedes) (int64, int64);
/*
* Dir is set during SimpleLruInit and does not change thereafter. Since
@@ -143,10 +143,10 @@ extern Size SimpleLruShmemSize(int nslots, int nlsns);
extern void SimpleLruInit(SlruCtl ctl, const char *name, int nslots, int nlsns,
LWLock *ctllock, const char *subdir, int tranche_id,
SyncRequestHandler sync_handler);
-extern int SimpleLruZeroPage(SlruCtl ctl, int pageno);
-extern int SimpleLruReadPage(SlruCtl ctl, int pageno, bool write_ok,
+extern int SimpleLruZeroPage(SlruCtl ctl, int64 pageno);
+extern int SimpleLruReadPage(SlruCtl ctl, int64 pageno, bool write_ok,
TransactionId xid);
-extern int SimpleLruReadPage_ReadOnly(SlruCtl ctl, int pageno,
+extern int SimpleLruReadPage_ReadOnly(SlruCtl ctl, int64 pageno,
TransactionId xid);
extern void SimpleLruWritePage(SlruCtl ctl, int slotno);
extern void SimpleLruWriteAll(SlruCtl ctl, bool allow_redirtied);
@@ -155,20 +155,20 @@ extern void SlruPagePrecedesUnitTests(SlruCtl ctl, int per_page);
#else
#define SlruPagePrecedesUnitTests(ctl, per_page) do {} while (0)
#endif
-extern void SimpleLruTruncate(SlruCtl ctl, int cutoffPage);
-extern bool SimpleLruDoesPhysicalPageExist(SlruCtl ctl, int pageno);
+extern void SimpleLruTruncate(SlruCtl ctl, int64 cutoffPage);
+extern bool SimpleLruDoesPhysicalPageExist(SlruCtl ctl, int64 pageno);
-typedef bool (*SlruScanCallback) (SlruCtl ctl, char *filename, int segpage,
+typedef bool (*SlruScanCallback) (SlruCtl ctl, char *filename, int64 segpage,
void *data);
extern bool SlruScanDirectory(SlruCtl ctl, SlruScanCallback callback, void *data);
-extern void SlruDeleteSegment(SlruCtl ctl, int segno);
+extern void SlruDeleteSegment(SlruCtl ctl, int64 segno);
extern int SlruSyncFileTag(SlruCtl ctl, const FileTag *ftag, char *path);
/* SlruScanDirectory public callbacks */
extern bool SlruScanDirCbReportPresence(SlruCtl ctl, char *filename,
- int segpage, void *data);
-extern bool SlruScanDirCbDeleteAll(SlruCtl ctl, char *filename, int segpage,
+ int64 segpage, void *data);
+extern bool SlruScanDirCbDeleteAll(SlruCtl ctl, char *filename, int64 segpage,
void *data);
#endif /* SLRU_H */
diff --git a/src/include/storage/sync.h b/src/include/storage/sync.h
index 9737e1eb67..35fc1dff1a 100644
--- a/src/include/storage/sync.h
+++ b/src/include/storage/sync.h
@@ -52,7 +52,7 @@ typedef struct FileTag
int16 handler; /* SyncRequestHandler value, saving space */
int16 forknum; /* ForkNumber, saving space */
RelFileNode rnode;
- uint32 segno;
+ uint64 segno;
} FileTag;
extern void InitSync(void);
--
2.35.1
v33-0003-Use-64-bit-FullTransactionId-instead-of-Epoch-xi.patch (application/octet-stream, 18.7K) download
From 3803771295ce219f294a077c9f7c9e34dc3e4713 Mon Sep 17 00:00:00 2001
From: Maxim Orlov <m.orlov@postgrespro.ru>
Date: Fri, 25 Mar 2022 12:36:24 +0300
Subject: [PATCH v33 3/3] Use 64-bit FullTransactionId instead of Epoch:xid
NextXid in controldata is now compatible with old format Epoch:xid and the new
one. This is next step to make XIDs 64-bit.
Author: Alexander Korotkov <aekorotkov@gmail.com>
Author: Teodor Sigaev <teodor@sigaev.ru>
Author: Nikita Glukhov <n.gluhov@postgrespro.ru>
Author: Maxim Orlov <orlovmg@gmail.com>
Author: Pavel Borisov <pashkin.elfe@gmail.com>
Author: Yura Sokolov <y.sokolov@postgrespro.ru> <funny.falcon@gmail.com>
Author: Aleksander Alekseev <aleksander@timescale.com>
Reviewed-by: Aleksander Alekseev <aleksander@timescale.com>
Discussion: https://postgr.es/m/CACG%3DezZe1NQSCnfHOr78AtAZxJZeCvxrts0ygrxYwe%3DpyyjVWA%40mail.gmail.com
Discussion: https://postgr.es/m/CAJ7c6TPDOYBYrnCAeyndkBktO0WG2xSdYduTF0nxq%2BvfkmTF5Q%40mail.gmail.com
---
contrib/amcheck/verify_heapam.c | 75 ++++++++++---------------
contrib/pageinspect/btreefuncs.c | 5 +-
src/backend/access/rmgrdesc/gistdesc.c | 10 ++--
src/backend/access/rmgrdesc/nbtdesc.c | 10 ++--
src/backend/access/rmgrdesc/xlogdesc.c | 5 +-
src/backend/utils/misc/pg_controldata.c | 5 +-
src/bin/pg_controldata/pg_controldata.c | 5 +-
src/bin/pg_upgrade/controldata.c | 32 +++++++++--
8 files changed, 73 insertions(+), 74 deletions(-)
diff --git a/contrib/amcheck/verify_heapam.c b/contrib/amcheck/verify_heapam.c
index 20a3733e7d..4a87a8fa42 100644
--- a/contrib/amcheck/verify_heapam.c
+++ b/contrib/amcheck/verify_heapam.c
@@ -743,24 +743,21 @@ check_tuple_visibility(HeapCheckContext *ctx)
break;
case XID_IN_FUTURE:
report_corruption(ctx,
- psprintf("xmin %llu equals or exceeds next valid transaction ID %u:%llu",
+ psprintf("xmin %llu equals or exceeds next valid transaction ID %llu",
(unsigned long long) xmin,
- EpochFromFullTransactionId(ctx->next_fxid),
- (unsigned long long) XidFromFullTransactionId(ctx->next_fxid)));
+ (unsigned long long) U64FromFullTransactionId(ctx->next_fxid)));
return false;
case XID_PRECEDES_CLUSTERMIN:
report_corruption(ctx,
- psprintf("xmin %llu precedes oldest valid transaction ID %u:%llu",
+ psprintf("xmin %llu precedes oldest valid transaction ID %llu",
(unsigned long long) xmin,
- EpochFromFullTransactionId(ctx->oldest_fxid),
- (unsigned long long) XidFromFullTransactionId(ctx->oldest_fxid)));
+ (unsigned long long) U64FromFullTransactionId(ctx->oldest_fxid)));
return false;
case XID_PRECEDES_RELMIN:
report_corruption(ctx,
- psprintf("xmin %llu precedes relation freeze threshold %u:%llu",
+ psprintf("xmin %llu precedes relation freeze threshold %llu",
(unsigned long long) xmin,
- EpochFromFullTransactionId(ctx->relfrozenfxid),
- (unsigned long long) XidFromFullTransactionId(ctx->relfrozenfxid)));
+ (unsigned long long) U64FromFullTransactionId(ctx->relfrozenfxid)));
return false;
}
@@ -784,24 +781,21 @@ check_tuple_visibility(HeapCheckContext *ctx)
return false;
case XID_IN_FUTURE:
report_corruption(ctx,
- psprintf("old-style VACUUM FULL transaction ID %llu for moved off tuple equals or exceeds next valid transaction ID %u:%llu",
+ psprintf("old-style VACUUM FULL transaction ID %llu for moved off tuple equals or exceeds next valid transaction ID %llu",
(unsigned long long) xvac,
- EpochFromFullTransactionId(ctx->next_fxid),
- (unsigned long long) XidFromFullTransactionId(ctx->next_fxid)));
+ (unsigned long long) U64FromFullTransactionId(ctx->next_fxid)));
return false;
case XID_PRECEDES_RELMIN:
report_corruption(ctx,
- psprintf("old-style VACUUM FULL transaction ID %llu for moved off tuple precedes relation freeze threshold %u:%llu",
+ psprintf("old-style VACUUM FULL transaction ID %llu for moved off tuple precedes relation freeze threshold %llu",
(unsigned long long) xvac,
- EpochFromFullTransactionId(ctx->relfrozenfxid),
- (unsigned long long) XidFromFullTransactionId(ctx->relfrozenfxid)));
+ (unsigned long long) U64FromFullTransactionId(ctx->relfrozenfxid)));
return false;
case XID_PRECEDES_CLUSTERMIN:
report_corruption(ctx,
- psprintf("old-style VACUUM FULL transaction ID %llu for moved off tuple precedes oldest valid transaction ID %u:%llu",
+ psprintf("old-style VACUUM FULL transaction ID %llu for moved off tuple precedes oldest valid transaction ID %llu",
(unsigned long long) xvac,
- EpochFromFullTransactionId(ctx->oldest_fxid),
- (unsigned long long) XidFromFullTransactionId(ctx->oldest_fxid)));
+ (unsigned long long) U64FromFullTransactionId(ctx->oldest_fxid)));
return false;
case XID_BOUNDS_OK:
break;
@@ -853,24 +847,21 @@ check_tuple_visibility(HeapCheckContext *ctx)
return false;
case XID_IN_FUTURE:
report_corruption(ctx,
- psprintf("old-style VACUUM FULL transaction ID %llu for moved in tuple equals or exceeds next valid transaction ID %u:%llu",
+ psprintf("old-style VACUUM FULL transaction ID %llu for moved in tuple equals or exceeds next valid transaction ID %llu",
(unsigned long long) xvac,
- EpochFromFullTransactionId(ctx->next_fxid),
- (unsigned long long) XidFromFullTransactionId(ctx->next_fxid)));
+ (unsigned long long) U64FromFullTransactionId(ctx->next_fxid)));
return false;
case XID_PRECEDES_RELMIN:
report_corruption(ctx,
- psprintf("old-style VACUUM FULL transaction ID %llu for moved in tuple precedes relation freeze threshold %u:%llu",
+ psprintf("old-style VACUUM FULL transaction ID %llu for moved in tuple precedes relation freeze threshold %llu",
(unsigned long long) xvac,
- EpochFromFullTransactionId(ctx->relfrozenfxid),
- (unsigned long long) XidFromFullTransactionId(ctx->relfrozenfxid)));
+ (unsigned long long) U64FromFullTransactionId(ctx->relfrozenfxid)));
return false;
case XID_PRECEDES_CLUSTERMIN:
report_corruption(ctx,
- psprintf("old-style VACUUM FULL transaction ID %llu for moved in tuple precedes oldest valid transaction ID %u:%llu",
+ psprintf("old-style VACUUM FULL transaction ID %llu for moved in tuple precedes oldest valid transaction ID %llu",
(unsigned long long) xvac,
- EpochFromFullTransactionId(ctx->oldest_fxid),
- (unsigned long long) XidFromFullTransactionId(ctx->oldest_fxid)));
+ (unsigned long long) U64FromFullTransactionId(ctx->oldest_fxid)));
return false;
case XID_BOUNDS_OK:
break;
@@ -1016,24 +1007,21 @@ check_tuple_visibility(HeapCheckContext *ctx)
return true;
case XID_IN_FUTURE:
report_corruption(ctx,
- psprintf("update xid %llu equals or exceeds next valid transaction ID %u:%llu",
+ psprintf("update xid %llu equals or exceeds next valid transaction ID %llu",
(unsigned long long) xmax,
- EpochFromFullTransactionId(ctx->next_fxid),
- (unsigned long long) XidFromFullTransactionId(ctx->next_fxid)));
+ (unsigned long long) U64FromFullTransactionId(ctx->next_fxid)));
return true;
case XID_PRECEDES_RELMIN:
report_corruption(ctx,
- psprintf("update xid %llu precedes relation freeze threshold %u:%llu",
+ psprintf("update xid %llu precedes relation freeze threshold %llu",
(unsigned long long) xmax,
- EpochFromFullTransactionId(ctx->relfrozenfxid),
- (unsigned long long) XidFromFullTransactionId(ctx->relfrozenfxid)));
+ (unsigned long long) U64FromFullTransactionId(ctx->relfrozenfxid)));
return true;
case XID_PRECEDES_CLUSTERMIN:
report_corruption(ctx,
- psprintf("update xid %llu precedes oldest valid transaction ID %u:%llu",
+ psprintf("update xid %llu precedes oldest valid transaction ID %llu",
(unsigned long long) xmax,
- EpochFromFullTransactionId(ctx->oldest_fxid),
- (unsigned long long) XidFromFullTransactionId(ctx->oldest_fxid)));
+ (unsigned long long) U64FromFullTransactionId(ctx->oldest_fxid)));
return true;
case XID_BOUNDS_OK:
break;
@@ -1078,24 +1066,21 @@ check_tuple_visibility(HeapCheckContext *ctx)
{
case XID_IN_FUTURE:
report_corruption(ctx,
- psprintf("xmax %llu equals or exceeds next valid transaction ID %u:%llu",
+ psprintf("xmax %llu equals or exceeds next valid transaction ID %llu",
(unsigned long long) xmax,
- EpochFromFullTransactionId(ctx->next_fxid),
- (unsigned long long) XidFromFullTransactionId(ctx->next_fxid)));
+ (unsigned long long) U64FromFullTransactionId(ctx->next_fxid)));
return false; /* corrupt */
case XID_PRECEDES_RELMIN:
report_corruption(ctx,
- psprintf("xmax %llu precedes relation freeze threshold %u:%llu",
+ psprintf("xmax %llu precedes relation freeze threshold %llu",
(unsigned long long) xmax,
- EpochFromFullTransactionId(ctx->relfrozenfxid),
- (unsigned long long) XidFromFullTransactionId(ctx->relfrozenfxid)));
+ (unsigned long long) U64FromFullTransactionId(ctx->relfrozenfxid)));
return false; /* corrupt */
case XID_PRECEDES_CLUSTERMIN:
report_corruption(ctx,
- psprintf("xmax %llu precedes oldest valid transaction ID %u:%llu",
+ psprintf("xmax %llu precedes oldest valid transaction ID %llu",
(unsigned long long) xmax,
- EpochFromFullTransactionId(ctx->oldest_fxid),
- (unsigned long long) XidFromFullTransactionId(ctx->oldest_fxid)));
+ (unsigned long long) U64FromFullTransactionId(ctx->oldest_fxid)));
return false; /* corrupt */
case XID_BOUNDS_OK:
case XID_INVALID:
diff --git a/contrib/pageinspect/btreefuncs.c b/contrib/pageinspect/btreefuncs.c
index fbda52c2f0..33ef9f2f45 100644
--- a/contrib/pageinspect/btreefuncs.c
+++ b/contrib/pageinspect/btreefuncs.c
@@ -125,9 +125,8 @@ GetBTPageStatistics(BlockNumber blkno, Buffer buffer, BTPageStat *stat)
{
FullTransactionId safexid = BTPageGetDeleteXid(page);
- elog(DEBUG2, "deleted page from block %u has safexid %u:%llu",
- blkno, EpochFromFullTransactionId(safexid),
- (unsigned long long) XidFromFullTransactionId(safexid));
+ elog(DEBUG2, "deleted page from block %u has safexid %llu",
+ blkno, (unsigned long long) U64FromFullTransactionId(safexid));
}
else
elog(DEBUG2, "deleted page from block %u has safexid %u",
diff --git a/src/backend/access/rmgrdesc/gistdesc.c b/src/backend/access/rmgrdesc/gistdesc.c
index 1e89c97d6f..27f949a38d 100644
--- a/src/backend/access/rmgrdesc/gistdesc.c
+++ b/src/backend/access/rmgrdesc/gistdesc.c
@@ -26,11 +26,10 @@ out_gistxlogPageUpdate(StringInfo buf, gistxlogPageUpdate *xlrec)
static void
out_gistxlogPageReuse(StringInfo buf, gistxlogPageReuse *xlrec)
{
- appendStringInfo(buf, "rel %u/%u/%u; blk %u; latestRemovedXid %u:%llu",
+ appendStringInfo(buf, "rel %u/%u/%u; blk %u; latestRemovedXid %llu",
xlrec->node.spcNode, xlrec->node.dbNode,
xlrec->node.relNode, xlrec->block,
- EpochFromFullTransactionId(xlrec->latestRemovedFullXid),
- (unsigned long long) XidFromFullTransactionId(xlrec->latestRemovedFullXid));
+ (unsigned long long) U64FromFullTransactionId(xlrec->latestRemovedFullXid));
}
static void
@@ -51,9 +50,8 @@ out_gistxlogPageSplit(StringInfo buf, gistxlogPageSplit *xlrec)
static void
out_gistxlogPageDelete(StringInfo buf, gistxlogPageDelete *xlrec)
{
- appendStringInfo(buf, "deleteXid %u:%llu; downlink %u",
- EpochFromFullTransactionId(xlrec->deleteXid),
- (unsigned long long) XidFromFullTransactionId(xlrec->deleteXid),
+ appendStringInfo(buf, "deleteXid %llu; downlink %u",
+ (unsigned long long) U64FromFullTransactionId(xlrec->deleteXid),
xlrec->downlinkOffset);
}
diff --git a/src/backend/access/rmgrdesc/nbtdesc.c b/src/backend/access/rmgrdesc/nbtdesc.c
index a55b69dedf..cd980053ab 100644
--- a/src/backend/access/rmgrdesc/nbtdesc.c
+++ b/src/backend/access/rmgrdesc/nbtdesc.c
@@ -81,10 +81,9 @@ btree_desc(StringInfo buf, XLogReaderState *record)
{
xl_btree_unlink_page *xlrec = (xl_btree_unlink_page *) rec;
- appendStringInfo(buf, "left %u; right %u; level %u; safexid %u:%llu; ",
+ appendStringInfo(buf, "left %u; right %u; level %u; safexid %llu; ",
xlrec->leftsib, xlrec->rightsib, xlrec->level,
- EpochFromFullTransactionId(xlrec->safexid),
- (unsigned long long) XidFromFullTransactionId(xlrec->safexid));
+ (unsigned long long) U64FromFullTransactionId(xlrec->safexid));
appendStringInfo(buf, "leafleft %u; leafright %u; leaftopparent %u",
xlrec->leafleftsib, xlrec->leafrightsib,
xlrec->leaftopparent);
@@ -101,11 +100,10 @@ btree_desc(StringInfo buf, XLogReaderState *record)
{
xl_btree_reuse_page *xlrec = (xl_btree_reuse_page *) rec;
- appendStringInfo(buf, "rel %u/%u/%u; latestRemovedXid %u:%llu",
+ appendStringInfo(buf, "rel %u/%u/%u; latestRemovedXid %llu",
xlrec->node.spcNode, xlrec->node.dbNode,
xlrec->node.relNode,
- EpochFromFullTransactionId(xlrec->latestRemovedFullXid),
- (unsigned long long) XidFromFullTransactionId(xlrec->latestRemovedFullXid));
+ (unsigned long long) U64FromFullTransactionId(xlrec->latestRemovedFullXid));
break;
}
case XLOG_BTREE_META_CLEANUP:
diff --git a/src/backend/access/rmgrdesc/xlogdesc.c b/src/backend/access/rmgrdesc/xlogdesc.c
index c73e9df63f..db876c2777 100644
--- a/src/backend/access/rmgrdesc/xlogdesc.c
+++ b/src/backend/access/rmgrdesc/xlogdesc.c
@@ -45,7 +45,7 @@ xlog_desc(StringInfo buf, XLogReaderState *record)
CheckPoint *checkpoint = (CheckPoint *) rec;
appendStringInfo(buf, "redo %X/%X; "
- "tli %u; prev tli %u; fpw %s; xid %u:%llu; oid %u; multi %llu; offset %u; "
+ "tli %u; prev tli %u; fpw %s; xid %llu; oid %u; multi %llu; offset %u; "
"oldest xid %llu in DB %u; oldest multi %llu in DB %u; "
"oldest/newest commit timestamp xid: %llu/%llu; "
"oldest running xid %llu; %s",
@@ -53,8 +53,7 @@ xlog_desc(StringInfo buf, XLogReaderState *record)
checkpoint->ThisTimeLineID,
checkpoint->PrevTimeLineID,
checkpoint->fullPageWrites ? "true" : "false",
- EpochFromFullTransactionId(checkpoint->nextXid),
- (unsigned long long) XidFromFullTransactionId(checkpoint->nextXid),
+ (unsigned long long) U64FromFullTransactionId(checkpoint->nextXid),
checkpoint->nextOid,
(unsigned long long) checkpoint->nextMulti,
checkpoint->nextMultiOffset,
diff --git a/src/backend/utils/misc/pg_controldata.c b/src/backend/utils/misc/pg_controldata.c
index 88f6f33ef5..4ab4a0a701 100644
--- a/src/backend/utils/misc/pg_controldata.c
+++ b/src/backend/utils/misc/pg_controldata.c
@@ -164,9 +164,8 @@ pg_control_checkpoint(PG_FUNCTION_ARGS)
values[5] = BoolGetDatum(ControlFile->checkPointCopy.fullPageWrites);
nulls[5] = false;
- values[6] = CStringGetTextDatum(psprintf("%u:%llu",
- EpochFromFullTransactionId(ControlFile->checkPointCopy.nextXid),
- (unsigned long long) XidFromFullTransactionId(ControlFile->checkPointCopy.nextXid)));
+ values[6] = CStringGetTextDatum(psprintf("%llu",
+ (unsigned long long) U64FromFullTransactionId(ControlFile->checkPointCopy.nextXid)));
nulls[6] = false;
values[7] = ObjectIdGetDatum(ControlFile->checkPointCopy.nextOid);
diff --git a/src/bin/pg_controldata/pg_controldata.c b/src/bin/pg_controldata/pg_controldata.c
index 2c10322355..a8a46d5bf0 100644
--- a/src/bin/pg_controldata/pg_controldata.c
+++ b/src/bin/pg_controldata/pg_controldata.c
@@ -247,9 +247,8 @@ main(int argc, char *argv[])
ControlFile->checkPointCopy.PrevTimeLineID);
printf(_("Latest checkpoint's full_page_writes: %s\n"),
ControlFile->checkPointCopy.fullPageWrites ? _("on") : _("off"));
- printf(_("Latest checkpoint's NextXID: %u:%llu\n"),
- EpochFromFullTransactionId(ControlFile->checkPointCopy.nextXid),
- (unsigned long long) XidFromFullTransactionId(ControlFile->checkPointCopy.nextXid));
+ printf(_("Latest checkpoint's NextXID: %llu\n"),
+ (unsigned long long) U64FromFullTransactionId(ControlFile->checkPointCopy.nextXid));
printf(_("Latest checkpoint's NextOID: %u\n"),
ControlFile->checkPointCopy.nextOid);
printf(_("Latest checkpoint's NextMultiXactId: %llu\n"),
diff --git a/src/bin/pg_upgrade/controldata.c b/src/bin/pg_upgrade/controldata.c
index 41b8f69b8c..2b1b1a3435 100644
--- a/src/bin/pg_upgrade/controldata.c
+++ b/src/bin/pg_upgrade/controldata.c
@@ -8,6 +8,7 @@
*/
#include "postgres_fe.h"
+#include "access/transam.h"
#include <ctype.h>
@@ -263,13 +264,22 @@ get_control_data(ClusterInfo *cluster, bool live_check)
}
else if ((p = strstr(bufin, "Latest checkpoint's NextXID:")) != NULL)
{
+ FullTransactionId xid;
+
p = strchr(p, ':');
if (p == NULL || strlen(p) <= 1)
pg_fatal("%d: controldata retrieval problem\n", __LINE__);
p++; /* remove ':' char */
- cluster->controldata.chkpnt_nxtepoch = str2uint(p);
+
+ /*
+ * NextXID representation in controldata file changed from Epoch:Xid
+ * to 64-bit FullTransactionId representation as a part of making
+ * xids 64-bit in the future. Here we support both controldata
+ * formats.
+ */
+ xid.value = strtou64(p, NULL, 10);
/*
* Delimiter changed from '/' to ':' in 9.6. We don't test for
@@ -284,11 +294,23 @@ get_control_data(ClusterInfo *cluster, bool live_check)
else
p = NULL;
- if (p == NULL || strlen(p) <= 1)
- pg_fatal("%d: controldata retrieval problem\n", __LINE__);
+ if (p == NULL)
+ {
+ /* FullTransactionId representation */
+ cluster->controldata.chkpnt_nxtxid = XidFromFullTransactionId(xid);
+ cluster->controldata.chkpnt_nxtepoch = EpochFromFullTransactionId(xid);
+ }
+ else
+ {
+ if (strlen(p) <= 1)
+ pg_fatal("%d: controldata retrieval problem\n", __LINE__);
+
+ /* Epoch:Xid representation */
+ p++; /* remove '/' or ':' char */
+ cluster->controldata.chkpnt_nxtxid = str2uint(p);
+ cluster->controldata.chkpnt_nxtepoch = (TransactionId) XidFromFullTransactionId(xid);
+ }
- p++; /* remove '/' or ':' char */
- cluster->controldata.chkpnt_nxtxid = str2uint(p);
got_xid = true;
}
else if ((p = strstr(bufin, "Latest checkpoint's NextOID:")) != NULL)
--
2.35.1
v33-0002-Use-64-bit-format-to-output-XIDs.patch (application/octet-stream, 121.3K) download
From 3cb1e4f7c77922343d385828330038eaf6ace324 Mon Sep 17 00:00:00 2001
From: Maxim Orlov <m.orlov@postgrespro.ru>
Date: Fri, 25 Mar 2022 15:24:25 +0300
Subject: [PATCH v33 2/3] Use 64-bit format to output XIDs
Replace the %u formatting string for XIDs with %llu and cast to
unsigned long long. This is the part of a making XIDs 64-bit.
While actually XIDs are still 32-bit, this patch completely supports both
32 and 64-bit.
Author: Alexander Korotkov <aekorotkov@gmail.com>
Author: Teodor Sigaev <teodor@sigaev.ru>
Author: Nikita Glukhov <n.gluhov@postgrespro.ru>
Author: Maxim Orlov <orlovmg@gmail.com>
Author: Pavel Borisov <pashkin.elfe@gmail.com>
Author: Yura Sokolov <y.sokolov@postgrespro.ru> <funny.falcon@gmail.com>
Author: Aleksander Alekseev <aleksander@timescale.com>
Reviewed-by: Aleksander Alekseev <aleksander@timescale.com>
Discussion: https://postgr.es/m/CACG%3DezZe1NQSCnfHOr78AtAZxJZeCvxrts0ygrxYwe%3DpyyjVWA%40mail.gmail.com
Discussion: https://postgr.es/m/CAJ7c6TPDOYBYrnCAeyndkBktO0WG2xSdYduTF0nxq%2BvfkmTF5Q%40mail.gmail.com
---
contrib/amcheck/verify_heapam.c | 122 +++++++++---------
contrib/pageinspect/btreefuncs.c | 4 +-
contrib/pgrowlocks/pgrowlocks.c | 9 +-
contrib/test_decoding/test_decoding.c | 38 ++++--
src/backend/access/heap/heapam.c | 54 ++++----
src/backend/access/heap/heapam_handler.c | 4 +-
src/backend/access/heap/vacuumlazy.c | 12 +-
src/backend/access/rmgrdesc/clogdesc.c | 4 +-
src/backend/access/rmgrdesc/committsdesc.c | 4 +-
src/backend/access/rmgrdesc/gistdesc.c | 13 +-
src/backend/access/rmgrdesc/hashdesc.c | 4 +-
src/backend/access/rmgrdesc/heapdesc.c | 38 +++---
src/backend/access/rmgrdesc/mxactdesc.c | 10 +-
src/backend/access/rmgrdesc/nbtdesc.c | 13 +-
src/backend/access/rmgrdesc/spgdesc.c | 4 +-
src/backend/access/rmgrdesc/standbydesc.c | 15 ++-
src/backend/access/rmgrdesc/xactdesc.c | 10 +-
src/backend/access/rmgrdesc/xlogdesc.c | 22 ++--
src/backend/access/transam/commit_ts.c | 3 +-
src/backend/access/transam/multixact.c | 103 ++++++++-------
src/backend/access/transam/slru.c | 24 ++--
src/backend/access/transam/subtrans.c | 5 +-
src/backend/access/transam/transam.c | 8 +-
src/backend/access/transam/twophase.c | 40 +++---
src/backend/access/transam/xact.c | 16 ++-
src/backend/access/transam/xlogrecovery.c | 45 ++++---
src/backend/replication/logical/logical.c | 4 +-
.../replication/logical/reorderbuffer.c | 23 ++--
src/backend/replication/logical/snapbuild.c | 41 +++---
src/backend/replication/logical/worker.c | 30 +++--
src/backend/replication/walreceiver.c | 5 +-
src/backend/replication/walsender.c | 6 +-
src/backend/storage/ipc/procarray.c | 35 ++---
src/backend/storage/ipc/standby.c | 24 ++--
src/backend/storage/lmgr/predicate.c | 9 +-
src/backend/utils/adt/lockfuncs.c | 3 +-
src/backend/utils/error/csvlog.c | 5 +-
src/backend/utils/error/elog.c | 14 +-
src/backend/utils/error/jsonlog.c | 8 +-
src/backend/utils/misc/pg_controldata.c | 4 +-
src/backend/utils/time/snapmgr.c | 18 ++-
src/bin/pg_amcheck/t/004_verify_heapam.pl | 8 +-
src/bin/pg_controldata/pg_controldata.c | 32 ++---
src/bin/pg_dump/pg_dump.c | 17 ++-
src/bin/pg_resetwal/pg_resetwal.c | 66 +++++-----
src/bin/pg_upgrade/pg_upgrade.c | 46 +++----
src/bin/pg_waldump/pg_waldump.c | 4 +-
47 files changed, 566 insertions(+), 460 deletions(-)
diff --git a/contrib/amcheck/verify_heapam.c b/contrib/amcheck/verify_heapam.c
index e5f7355dcb..20a3733e7d 100644
--- a/contrib/amcheck/verify_heapam.c
+++ b/contrib/amcheck/verify_heapam.c
@@ -743,24 +743,24 @@ check_tuple_visibility(HeapCheckContext *ctx)
break;
case XID_IN_FUTURE:
report_corruption(ctx,
- psprintf("xmin %u equals or exceeds next valid transaction ID %u:%u",
- xmin,
+ psprintf("xmin %llu equals or exceeds next valid transaction ID %u:%llu",
+ (unsigned long long) xmin,
EpochFromFullTransactionId(ctx->next_fxid),
- XidFromFullTransactionId(ctx->next_fxid)));
+ (unsigned long long) XidFromFullTransactionId(ctx->next_fxid)));
return false;
case XID_PRECEDES_CLUSTERMIN:
report_corruption(ctx,
- psprintf("xmin %u precedes oldest valid transaction ID %u:%u",
- xmin,
+ psprintf("xmin %llu precedes oldest valid transaction ID %u:%llu",
+ (unsigned long long) xmin,
EpochFromFullTransactionId(ctx->oldest_fxid),
- XidFromFullTransactionId(ctx->oldest_fxid)));
+ (unsigned long long) XidFromFullTransactionId(ctx->oldest_fxid)));
return false;
case XID_PRECEDES_RELMIN:
report_corruption(ctx,
- psprintf("xmin %u precedes relation freeze threshold %u:%u",
- xmin,
+ psprintf("xmin %llu precedes relation freeze threshold %u:%llu",
+ (unsigned long long) xmin,
EpochFromFullTransactionId(ctx->relfrozenfxid),
- XidFromFullTransactionId(ctx->relfrozenfxid)));
+ (unsigned long long) XidFromFullTransactionId(ctx->relfrozenfxid)));
return false;
}
@@ -784,24 +784,24 @@ check_tuple_visibility(HeapCheckContext *ctx)
return false;
case XID_IN_FUTURE:
report_corruption(ctx,
- psprintf("old-style VACUUM FULL transaction ID %u for moved off tuple equals or exceeds next valid transaction ID %u:%u",
- xvac,
+ psprintf("old-style VACUUM FULL transaction ID %llu for moved off tuple equals or exceeds next valid transaction ID %u:%llu",
+ (unsigned long long) xvac,
EpochFromFullTransactionId(ctx->next_fxid),
- XidFromFullTransactionId(ctx->next_fxid)));
+ (unsigned long long) XidFromFullTransactionId(ctx->next_fxid)));
return false;
case XID_PRECEDES_RELMIN:
report_corruption(ctx,
- psprintf("old-style VACUUM FULL transaction ID %u for moved off tuple precedes relation freeze threshold %u:%u",
- xvac,
+ psprintf("old-style VACUUM FULL transaction ID %llu for moved off tuple precedes relation freeze threshold %u:%llu",
+ (unsigned long long) xvac,
EpochFromFullTransactionId(ctx->relfrozenfxid),
- XidFromFullTransactionId(ctx->relfrozenfxid)));
+ (unsigned long long) XidFromFullTransactionId(ctx->relfrozenfxid)));
return false;
case XID_PRECEDES_CLUSTERMIN:
report_corruption(ctx,
- psprintf("old-style VACUUM FULL transaction ID %u for moved off tuple precedes oldest valid transaction ID %u:%u",
- xvac,
+ psprintf("old-style VACUUM FULL transaction ID %llu for moved off tuple precedes oldest valid transaction ID %u:%llu",
+ (unsigned long long) xvac,
EpochFromFullTransactionId(ctx->oldest_fxid),
- XidFromFullTransactionId(ctx->oldest_fxid)));
+ (unsigned long long) XidFromFullTransactionId(ctx->oldest_fxid)));
return false;
case XID_BOUNDS_OK:
break;
@@ -811,13 +811,13 @@ check_tuple_visibility(HeapCheckContext *ctx)
{
case XID_IS_CURRENT_XID:
report_corruption(ctx,
- psprintf("old-style VACUUM FULL transaction ID %u for moved off tuple matches our current transaction ID",
- xvac));
+ psprintf("old-style VACUUM FULL transaction ID %llu for moved off tuple matches our current transaction ID",
+ (unsigned long long) xvac));
return false;
case XID_IN_PROGRESS:
report_corruption(ctx,
- psprintf("old-style VACUUM FULL transaction ID %u for moved off tuple appears to be in progress",
- xvac));
+ psprintf("old-style VACUUM FULL transaction ID %llu for moved off tuple appears to be in progress",
+ (unsigned long long) xvac));
return false;
case XID_COMMITTED:
@@ -853,24 +853,24 @@ check_tuple_visibility(HeapCheckContext *ctx)
return false;
case XID_IN_FUTURE:
report_corruption(ctx,
- psprintf("old-style VACUUM FULL transaction ID %u for moved in tuple equals or exceeds next valid transaction ID %u:%u",
- xvac,
+ psprintf("old-style VACUUM FULL transaction ID %llu for moved in tuple equals or exceeds next valid transaction ID %u:%llu",
+ (unsigned long long) xvac,
EpochFromFullTransactionId(ctx->next_fxid),
- XidFromFullTransactionId(ctx->next_fxid)));
+ (unsigned long long) XidFromFullTransactionId(ctx->next_fxid)));
return false;
case XID_PRECEDES_RELMIN:
report_corruption(ctx,
- psprintf("old-style VACUUM FULL transaction ID %u for moved in tuple precedes relation freeze threshold %u:%u",
- xvac,
+ psprintf("old-style VACUUM FULL transaction ID %llu for moved in tuple precedes relation freeze threshold %u:%llu",
+ (unsigned long long) xvac,
EpochFromFullTransactionId(ctx->relfrozenfxid),
- XidFromFullTransactionId(ctx->relfrozenfxid)));
+ (unsigned long long) XidFromFullTransactionId(ctx->relfrozenfxid)));
return false;
case XID_PRECEDES_CLUSTERMIN:
report_corruption(ctx,
- psprintf("old-style VACUUM FULL transaction ID %u for moved in tuple precedes oldest valid transaction ID %u:%u",
- xvac,
+ psprintf("old-style VACUUM FULL transaction ID %llu for moved in tuple precedes oldest valid transaction ID %u:%llu",
+ (unsigned long long) xvac,
EpochFromFullTransactionId(ctx->oldest_fxid),
- XidFromFullTransactionId(ctx->oldest_fxid)));
+ (unsigned long long) XidFromFullTransactionId(ctx->oldest_fxid)));
return false;
case XID_BOUNDS_OK:
break;
@@ -880,13 +880,13 @@ check_tuple_visibility(HeapCheckContext *ctx)
{
case XID_IS_CURRENT_XID:
report_corruption(ctx,
- psprintf("old-style VACUUM FULL transaction ID %u for moved in tuple matches our current transaction ID",
- xvac));
+ psprintf("old-style VACUUM FULL transaction ID %llu for moved in tuple matches our current transaction ID",
+ (unsigned long long) xvac));
return false;
case XID_IN_PROGRESS:
report_corruption(ctx,
- psprintf("old-style VACUUM FULL transaction ID %u for moved in tuple appears to be in progress",
- xvac));
+ psprintf("old-style VACUUM FULL transaction ID %llu for moved in tuple appears to be in progress",
+ (unsigned long long) xvac));
return false;
case XID_COMMITTED:
@@ -956,19 +956,21 @@ check_tuple_visibility(HeapCheckContext *ctx)
return true;
case XID_PRECEDES_RELMIN:
report_corruption(ctx,
- psprintf("multitransaction ID %u precedes relation minimum multitransaction ID threshold %u",
- xmax, ctx->relminmxid));
+ psprintf("multitransaction ID %llu precedes relation minimum multitransaction ID threshold %llu",
+ (unsigned long long) xmax,
+ (unsigned long long) ctx->relminmxid));
return true;
case XID_PRECEDES_CLUSTERMIN:
report_corruption(ctx,
- psprintf("multitransaction ID %u precedes oldest valid multitransaction ID threshold %u",
- xmax, ctx->oldest_mxact));
+ psprintf("multitransaction ID %llu precedes oldest valid multitransaction ID threshold %llu",
+ (unsigned long long) xmax,
+ (unsigned long long) ctx->oldest_mxact));
return true;
case XID_IN_FUTURE:
report_corruption(ctx,
- psprintf("multitransaction ID %u equals or exceeds next valid multitransaction ID %u",
- xmax,
- ctx->next_mxact));
+ psprintf("multitransaction ID %llu equals or exceeds next valid multitransaction ID %llu",
+ (unsigned long long) xmax,
+ (unsigned long long) ctx->next_mxact));
return true;
case XID_BOUNDS_OK:
break;
@@ -1014,24 +1016,24 @@ check_tuple_visibility(HeapCheckContext *ctx)
return true;
case XID_IN_FUTURE:
report_corruption(ctx,
- psprintf("update xid %u equals or exceeds next valid transaction ID %u:%u",
- xmax,
+ psprintf("update xid %llu equals or exceeds next valid transaction ID %u:%llu",
+ (unsigned long long) xmax,
EpochFromFullTransactionId(ctx->next_fxid),
- XidFromFullTransactionId(ctx->next_fxid)));
+ (unsigned long long) XidFromFullTransactionId(ctx->next_fxid)));
return true;
case XID_PRECEDES_RELMIN:
report_corruption(ctx,
- psprintf("update xid %u precedes relation freeze threshold %u:%u",
- xmax,
+ psprintf("update xid %llu precedes relation freeze threshold %u:%llu",
+ (unsigned long long) xmax,
EpochFromFullTransactionId(ctx->relfrozenfxid),
- XidFromFullTransactionId(ctx->relfrozenfxid)));
+ (unsigned long long) XidFromFullTransactionId(ctx->relfrozenfxid)));
return true;
case XID_PRECEDES_CLUSTERMIN:
report_corruption(ctx,
- psprintf("update xid %u precedes oldest valid transaction ID %u:%u",
- xmax,
+ psprintf("update xid %llu precedes oldest valid transaction ID %u:%llu",
+ (unsigned long long) xmax,
EpochFromFullTransactionId(ctx->oldest_fxid),
- XidFromFullTransactionId(ctx->oldest_fxid)));
+ (unsigned long long) XidFromFullTransactionId(ctx->oldest_fxid)));
return true;
case XID_BOUNDS_OK:
break;
@@ -1076,24 +1078,24 @@ check_tuple_visibility(HeapCheckContext *ctx)
{
case XID_IN_FUTURE:
report_corruption(ctx,
- psprintf("xmax %u equals or exceeds next valid transaction ID %u:%u",
- xmax,
+ psprintf("xmax %llu equals or exceeds next valid transaction ID %u:%llu",
+ (unsigned long long) xmax,
EpochFromFullTransactionId(ctx->next_fxid),
- XidFromFullTransactionId(ctx->next_fxid)));
+ (unsigned long long) XidFromFullTransactionId(ctx->next_fxid)));
return false; /* corrupt */
case XID_PRECEDES_RELMIN:
report_corruption(ctx,
- psprintf("xmax %u precedes relation freeze threshold %u:%u",
- xmax,
+ psprintf("xmax %llu precedes relation freeze threshold %u:%llu",
+ (unsigned long long) xmax,
EpochFromFullTransactionId(ctx->relfrozenfxid),
- XidFromFullTransactionId(ctx->relfrozenfxid)));
+ (unsigned long long) XidFromFullTransactionId(ctx->relfrozenfxid)));
return false; /* corrupt */
case XID_PRECEDES_CLUSTERMIN:
report_corruption(ctx,
- psprintf("xmax %u precedes oldest valid transaction ID %u:%u",
- xmax,
+ psprintf("xmax %llu precedes oldest valid transaction ID %u:%llu",
+ (unsigned long long) xmax,
EpochFromFullTransactionId(ctx->oldest_fxid),
- XidFromFullTransactionId(ctx->oldest_fxid)));
+ (unsigned long long) XidFromFullTransactionId(ctx->oldest_fxid)));
return false; /* corrupt */
case XID_BOUNDS_OK:
case XID_INVALID:
diff --git a/contrib/pageinspect/btreefuncs.c b/contrib/pageinspect/btreefuncs.c
index 62f2c1b315..fbda52c2f0 100644
--- a/contrib/pageinspect/btreefuncs.c
+++ b/contrib/pageinspect/btreefuncs.c
@@ -125,9 +125,9 @@ GetBTPageStatistics(BlockNumber blkno, Buffer buffer, BTPageStat *stat)
{
FullTransactionId safexid = BTPageGetDeleteXid(page);
- elog(DEBUG2, "deleted page from block %u has safexid %u:%u",
+ elog(DEBUG2, "deleted page from block %u has safexid %u:%llu",
blkno, EpochFromFullTransactionId(safexid),
- XidFromFullTransactionId(safexid));
+ (unsigned long long) XidFromFullTransactionId(safexid));
}
else
elog(DEBUG2, "deleted page from block %u has safexid %u",
diff --git a/contrib/pgrowlocks/pgrowlocks.c b/contrib/pgrowlocks/pgrowlocks.c
index 1d4d4965ac..ef89b84ec3 100644
--- a/contrib/pgrowlocks/pgrowlocks.c
+++ b/contrib/pgrowlocks/pgrowlocks.c
@@ -142,7 +142,8 @@ pgrowlocks(PG_FUNCTION_ARGS)
PointerGetDatum(&tuple->t_self));
values[Atnum_xmax] = palloc(NCHARS * sizeof(char));
- snprintf(values[Atnum_xmax], NCHARS, "%u", xmax);
+ snprintf(values[Atnum_xmax], NCHARS, "%llu",
+ (unsigned long long) xmax);
if (infomask & HEAP_XMAX_IS_MULTI)
{
MultiXactMember *members;
@@ -183,7 +184,8 @@ pgrowlocks(PG_FUNCTION_ARGS)
strcat(values[Atnum_modes], ",");
strcat(values[Atnum_pids], ",");
}
- snprintf(buf, NCHARS, "%u", members[j].xid);
+ snprintf(buf, NCHARS, "%llu",
+ (unsigned long long) members[j].xid);
strcat(values[Atnum_xids], buf);
switch (members[j].status)
{
@@ -224,7 +226,8 @@ pgrowlocks(PG_FUNCTION_ARGS)
values[Atnum_ismulti] = pstrdup("false");
values[Atnum_xids] = palloc(NCHARS * sizeof(char));
- snprintf(values[Atnum_xids], NCHARS, "{%u}", xmax);
+ snprintf(values[Atnum_xids], NCHARS, "{%llu}",
+ (unsigned long long) xmax);
values[Atnum_modes] = palloc(NCHARS);
if (infomask & HEAP_XMAX_LOCK_ONLY)
diff --git a/contrib/test_decoding/test_decoding.c b/contrib/test_decoding/test_decoding.c
index 08d366a594..2cfac27807 100644
--- a/contrib/test_decoding/test_decoding.c
+++ b/contrib/test_decoding/test_decoding.c
@@ -314,7 +314,7 @@ pg_output_begin(LogicalDecodingContext *ctx, TestDecodingData *data, ReorderBuff
{
OutputPluginPrepareWrite(ctx, last_write);
if (data->include_xids)
- appendStringInfo(ctx->out, "BEGIN %u", txn->xid);
+ appendStringInfo(ctx->out, "BEGIN %llu", (unsigned long long) txn->xid);
else
appendStringInfoString(ctx->out, "BEGIN");
OutputPluginWrite(ctx, last_write);
@@ -337,7 +337,7 @@ pg_decode_commit_txn(LogicalDecodingContext *ctx, ReorderBufferTXN *txn,
OutputPluginPrepareWrite(ctx, true);
if (data->include_xids)
- appendStringInfo(ctx->out, "COMMIT %u", txn->xid);
+ appendStringInfo(ctx->out, "COMMIT %llu", (unsigned long long) txn->xid);
else
appendStringInfoString(ctx->out, "COMMIT");
@@ -390,7 +390,7 @@ pg_decode_prepare_txn(LogicalDecodingContext *ctx, ReorderBufferTXN *txn,
quote_literal_cstr(txn->gid));
if (data->include_xids)
- appendStringInfo(ctx->out, ", txid %u", txn->xid);
+ appendStringInfo(ctx->out, ", txid %llu", (unsigned long long) txn->xid);
if (data->include_timestamp)
appendStringInfo(ctx->out, " (at %s)",
@@ -412,7 +412,7 @@ pg_decode_commit_prepared_txn(LogicalDecodingContext *ctx, ReorderBufferTXN *txn
quote_literal_cstr(txn->gid));
if (data->include_xids)
- appendStringInfo(ctx->out, ", txid %u", txn->xid);
+ appendStringInfo(ctx->out, ", txid %llu", (unsigned long long) txn->xid);
if (data->include_timestamp)
appendStringInfo(ctx->out, " (at %s)",
@@ -436,7 +436,7 @@ pg_decode_rollback_prepared_txn(LogicalDecodingContext *ctx,
quote_literal_cstr(txn->gid));
if (data->include_xids)
- appendStringInfo(ctx->out, ", txid %u", txn->xid);
+ appendStringInfo(ctx->out, ", txid %llu", (unsigned long long) txn->xid);
if (data->include_timestamp)
appendStringInfo(ctx->out, " (at %s)",
@@ -785,7 +785,9 @@ pg_output_stream_start(LogicalDecodingContext *ctx, TestDecodingData *data, Reor
{
OutputPluginPrepareWrite(ctx, last_write);
if (data->include_xids)
- appendStringInfo(ctx->out, "opening a streamed block for transaction TXN %u", txn->xid);
+ appendStringInfo(ctx->out,
+ "opening a streamed block for transaction TXN %llu",
+ (unsigned long long) txn->xid);
else
appendStringInfoString(ctx->out, "opening a streamed block for transaction");
OutputPluginWrite(ctx, last_write);
@@ -803,7 +805,9 @@ pg_decode_stream_stop(LogicalDecodingContext *ctx,
OutputPluginPrepareWrite(ctx, true);
if (data->include_xids)
- appendStringInfo(ctx->out, "closing a streamed block for transaction TXN %u", txn->xid);
+ appendStringInfo(ctx->out,
+ "closing a streamed block for transaction TXN %llu",
+ (unsigned long long) txn->xid);
else
appendStringInfoString(ctx->out, "closing a streamed block for transaction");
OutputPluginWrite(ctx, true);
@@ -837,7 +841,9 @@ pg_decode_stream_abort(LogicalDecodingContext *ctx,
OutputPluginPrepareWrite(ctx, true);
if (data->include_xids)
- appendStringInfo(ctx->out, "aborting streamed (sub)transaction TXN %u", txn->xid);
+ appendStringInfo(ctx->out,
+ "aborting streamed (sub)transaction TXN %llu",
+ (unsigned long long) txn->xid);
else
appendStringInfoString(ctx->out, "aborting streamed (sub)transaction");
OutputPluginWrite(ctx, true);
@@ -857,8 +863,10 @@ pg_decode_stream_prepare(LogicalDecodingContext *ctx,
OutputPluginPrepareWrite(ctx, true);
if (data->include_xids)
- appendStringInfo(ctx->out, "preparing streamed transaction TXN %s, txid %u",
- quote_literal_cstr(txn->gid), txn->xid);
+ appendStringInfo(ctx->out,
+ "preparing streamed transaction TXN %s, txid %llu",
+ quote_literal_cstr(txn->gid),
+ (unsigned long long) txn->xid);
else
appendStringInfo(ctx->out, "preparing streamed transaction %s",
quote_literal_cstr(txn->gid));
@@ -888,7 +896,9 @@ pg_decode_stream_commit(LogicalDecodingContext *ctx,
OutputPluginPrepareWrite(ctx, true);
if (data->include_xids)
- appendStringInfo(ctx->out, "committing streamed transaction TXN %u", txn->xid);
+ appendStringInfo(ctx->out,
+ "committing streamed transaction TXN %llu",
+ (unsigned long long) txn->xid);
else
appendStringInfoString(ctx->out, "committing streamed transaction");
@@ -922,7 +932,8 @@ pg_decode_stream_change(LogicalDecodingContext *ctx,
OutputPluginPrepareWrite(ctx, true);
if (data->include_xids)
- appendStringInfo(ctx->out, "streaming change for TXN %u", txn->xid);
+ appendStringInfo(ctx->out, "streaming change for TXN %llu",
+ (unsigned long long) txn->xid);
else
appendStringInfoString(ctx->out, "streaming change for transaction");
OutputPluginWrite(ctx, true);
@@ -975,7 +986,8 @@ pg_decode_stream_truncate(LogicalDecodingContext *ctx, ReorderBufferTXN *txn,
OutputPluginPrepareWrite(ctx, true);
if (data->include_xids)
- appendStringInfo(ctx->out, "streaming truncate for TXN %u", txn->xid);
+ appendStringInfo(ctx->out, "streaming truncate for TXN %llu",
+ (unsigned long long) txn->xid);
else
appendStringInfoString(ctx->out, "streaming truncate for transaction");
OutputPluginWrite(ctx, true);
diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c
index 7421851027..863b0e560c 100644
--- a/src/backend/access/heap/heapam.c
+++ b/src/backend/access/heap/heapam.c
@@ -5162,7 +5162,8 @@ l5:
* TransactionIdIsInProgress() should have returned false. We
* assume it's no longer locked in this case.
*/
- elog(WARNING, "LOCK_ONLY found for Xid in progress %u", xmax);
+ elog(WARNING, "LOCK_ONLY found for Xid in progress %llu",
+ (unsigned long long) xmax);
old_infomask |= HEAP_XMAX_INVALID;
old_infomask &= ~HEAP_XMAX_LOCK_ONLY;
goto l5;
@@ -6145,8 +6146,9 @@ FreezeMultiXactId(MultiXactId multi, uint16 t_infomask,
else if (MultiXactIdPrecedes(multi, relminmxid))
ereport(ERROR,
(errcode(ERRCODE_DATA_CORRUPTED),
- errmsg_internal("found multixact %u from before relminmxid %u",
- multi, relminmxid)));
+ errmsg_internal("found multixact %llu from before relminmxid %llu",
+ (unsigned long long) multi,
+ (unsigned long long) relminmxid)));
else if (MultiXactIdPrecedes(multi, cutoff_multi))
{
/*
@@ -6159,8 +6161,9 @@ FreezeMultiXactId(MultiXactId multi, uint16 t_infomask,
HEAP_XMAX_IS_LOCKED_ONLY(t_infomask)))
ereport(ERROR,
(errcode(ERRCODE_DATA_CORRUPTED),
- errmsg_internal("multixact %u from before cutoff %u found to be still running",
- multi, cutoff_multi)));
+ errmsg_internal("multixact %llu from before cutoff %llu found to be still running",
+ (unsigned long long) multi,
+ (unsigned long long) cutoff_multi)));
if (HEAP_XMAX_IS_LOCKED_ONLY(t_infomask))
{
@@ -6178,8 +6181,9 @@ FreezeMultiXactId(MultiXactId multi, uint16 t_infomask,
if (TransactionIdPrecedes(xid, relfrozenxid))
ereport(ERROR,
(errcode(ERRCODE_DATA_CORRUPTED),
- errmsg_internal("found update xid %u from before relfrozenxid %u",
- xid, relfrozenxid)));
+ errmsg_internal("found update xid %llu from before relfrozenxid %llu",
+ (unsigned long long) xid,
+ (unsigned long long) relfrozenxid)));
/*
* If the xid is older than the cutoff, it has to have aborted,
@@ -6190,7 +6194,8 @@ FreezeMultiXactId(MultiXactId multi, uint16 t_infomask,
if (TransactionIdDidCommit(xid))
ereport(ERROR,
(errcode(ERRCODE_DATA_CORRUPTED),
- errmsg_internal("cannot freeze committed update xid %u", xid)));
+ errmsg_internal("cannot freeze committed update xid %llu",
+ (unsigned long long) xid)));
*flags |= FRM_INVALIDATE_XMAX;
xid = InvalidTransactionId;
}
@@ -6281,8 +6286,9 @@ FreezeMultiXactId(MultiXactId multi, uint16 t_infomask,
if (TransactionIdPrecedes(xid, relfrozenxid))
ereport(ERROR,
(errcode(ERRCODE_DATA_CORRUPTED),
- errmsg_internal("found update xid %u from before relfrozenxid %u",
- xid, relfrozenxid)));
+ errmsg_internal("found update xid %llu from before relfrozenxid %llu",
+ (unsigned long long) xid,
+ (unsigned long long) relfrozenxid)));
/*
* It's an update; should we keep it? If the transaction is known
@@ -6331,8 +6337,9 @@ FreezeMultiXactId(MultiXactId multi, uint16 t_infomask,
TransactionIdPrecedes(update_xid, cutoff_xid))
ereport(ERROR,
(errcode(ERRCODE_DATA_CORRUPTED),
- errmsg_internal("found update xid %u from before xid cutoff %u",
- update_xid, cutoff_xid)));
+ errmsg_internal("found update xid %llu from before xid cutoff %llu",
+ (unsigned long long) update_xid,
+ (unsigned long long) cutoff_xid)));
/*
* We determined that this is an Xid corresponding to an update
@@ -6496,8 +6503,9 @@ heap_prepare_freeze_tuple(HeapTupleHeader tuple,
if (TransactionIdPrecedes(xid, relfrozenxid))
ereport(ERROR,
(errcode(ERRCODE_DATA_CORRUPTED),
- errmsg_internal("found xmin %u from before relfrozenxid %u",
- xid, relfrozenxid)));
+ errmsg_internal("found xmin %llu from before relfrozenxid %llu",
+ (unsigned long long) xid,
+ (unsigned long long) relfrozenxid)));
xmin_frozen = TransactionIdPrecedes(xid, cutoff_xid);
if (xmin_frozen)
@@ -6505,8 +6513,9 @@ heap_prepare_freeze_tuple(HeapTupleHeader tuple,
if (!TransactionIdDidCommit(xid))
ereport(ERROR,
(errcode(ERRCODE_DATA_CORRUPTED),
- errmsg_internal("uncommitted xmin %u from before xid cutoff %u needs to be frozen",
- xid, cutoff_xid)));
+ errmsg_internal("uncommitted xmin %llu from before xid cutoff %llu needs to be frozen",
+ (unsigned long long) xid,
+ (unsigned long long) cutoff_xid)));
frz->t_infomask |= HEAP_XMIN_FROZEN;
changed = true;
@@ -6633,8 +6642,9 @@ heap_prepare_freeze_tuple(HeapTupleHeader tuple,
if (TransactionIdPrecedes(xid, relfrozenxid))
ereport(ERROR,
(errcode(ERRCODE_DATA_CORRUPTED),
- errmsg_internal("found xmax %u from before relfrozenxid %u",
- xid, relfrozenxid)));
+ errmsg_internal("found xmax %llu from before relfrozenxid %llu",
+ (unsigned long long) xid,
+ (unsigned long long) relfrozenxid)));
if (TransactionIdPrecedes(xid, cutoff_xid))
{
@@ -6648,8 +6658,8 @@ heap_prepare_freeze_tuple(HeapTupleHeader tuple,
TransactionIdDidCommit(xid))
ereport(ERROR,
(errcode(ERRCODE_DATA_CORRUPTED),
- errmsg_internal("cannot freeze committed xmax %u",
- xid)));
+ errmsg_internal("cannot freeze committed xmax %llu",
+ (unsigned long long) xid)));
freeze_xmax = true;
/* No need for relfrozenxid_out handling, since we'll freeze xmax */
}
@@ -6670,8 +6680,8 @@ heap_prepare_freeze_tuple(HeapTupleHeader tuple,
else
ereport(ERROR,
(errcode(ERRCODE_DATA_CORRUPTED),
- errmsg_internal("found xmax %u (infomask 0x%04x) not frozen, not multi, not normal",
- xid, tuple->t_infomask)));
+ errmsg_internal("found xmax %llu (infomask 0x%04x) not frozen, not multi, not normal",
+ (unsigned long long) xid, tuple->t_infomask)));
if (freeze_xmax)
{
diff --git a/src/backend/access/heap/heapam_handler.c b/src/backend/access/heap/heapam_handler.c
index 444f027149..dbb93b1aa9 100644
--- a/src/backend/access/heap/heapam_handler.c
+++ b/src/backend/access/heap/heapam_handler.c
@@ -424,8 +424,8 @@ tuple_lock_retry:
if (TransactionIdIsValid(SnapshotDirty.xmin))
ereport(ERROR,
(errcode(ERRCODE_DATA_CORRUPTED),
- errmsg_internal("t_xmin %u is uncommitted in tuple (%u,%u) to be updated in table \"%s\"",
- SnapshotDirty.xmin,
+ errmsg_internal("t_xmin %llu is uncommitted in tuple (%u,%u) to be updated in table \"%s\"",
+ (unsigned long long) SnapshotDirty.xmin,
ItemPointerGetBlockNumber(&tuple->t_self),
ItemPointerGetOffsetNumber(&tuple->t_self),
RelationGetRelationName(relation))));
diff --git a/src/backend/access/heap/vacuumlazy.c b/src/backend/access/heap/vacuumlazy.c
index 9482f99e68..ca2d0b6294 100644
--- a/src/backend/access/heap/vacuumlazy.c
+++ b/src/backend/access/heap/vacuumlazy.c
@@ -705,21 +705,21 @@ heap_vacuum_rel(Relation rel, VacuumParams *params,
vacrel->missed_dead_pages);
diff = (int32) (ReadNextTransactionId() - OldestXmin);
appendStringInfo(&buf,
- _("removable cutoff: %u, which was %d XIDs old when operation ended\n"),
- OldestXmin, diff);
+ _("removable cutoff: %llu, which was %d XIDs old when operation ended\n"),
+ (unsigned long long) OldestXmin, diff);
if (frozenxid_updated)
{
diff = (int32) (vacrel->NewRelfrozenXid - vacrel->relfrozenxid);
appendStringInfo(&buf,
- _("new relfrozenxid: %u, which is %d XIDs ahead of previous value\n"),
- vacrel->NewRelfrozenXid, diff);
+ _("new relfrozenxid: %llu, which is %d XIDs ahead of previous value\n"),
+ (unsigned long long) vacrel->NewRelfrozenXid, diff);
}
if (minmulti_updated)
{
diff = (int32) (vacrel->NewRelminMxid - vacrel->relminmxid);
appendStringInfo(&buf,
- _("new relminmxid: %u, which is %d MXIDs ahead of previous value\n"),
- vacrel->NewRelminMxid, diff);
+ _("new relminmxid: %llu, which is %d MXIDs ahead of previous value\n"),
+ (unsigned long long) vacrel->NewRelminMxid, diff);
}
if (vacrel->do_index_vacuuming)
{
diff --git a/src/backend/access/rmgrdesc/clogdesc.c b/src/backend/access/rmgrdesc/clogdesc.c
index 87513732be..bbb5910633 100644
--- a/src/backend/access/rmgrdesc/clogdesc.c
+++ b/src/backend/access/rmgrdesc/clogdesc.c
@@ -35,8 +35,8 @@ clog_desc(StringInfo buf, XLogReaderState *record)
xl_clog_truncate xlrec;
memcpy(&xlrec, rec, sizeof(xl_clog_truncate));
- appendStringInfo(buf, "page %d; oldestXact %u",
- xlrec.pageno, xlrec.oldestXact);
+ appendStringInfo(buf, "page %d; oldestXact %llu",
+ xlrec.pageno, (unsigned long long) xlrec.oldestXact);
}
}
diff --git a/src/backend/access/rmgrdesc/committsdesc.c b/src/backend/access/rmgrdesc/committsdesc.c
index 3a65538bb0..4b2e9bc2ff 100644
--- a/src/backend/access/rmgrdesc/committsdesc.c
+++ b/src/backend/access/rmgrdesc/committsdesc.c
@@ -35,8 +35,8 @@ commit_ts_desc(StringInfo buf, XLogReaderState *record)
{
xl_commit_ts_truncate *trunc = (xl_commit_ts_truncate *) rec;
- appendStringInfo(buf, "pageno %d, oldestXid %u",
- trunc->pageno, trunc->oldestXid);
+ appendStringInfo(buf, "pageno %d, oldestXid %llu",
+ trunc->pageno, (unsigned long long) trunc->oldestXid);
}
}
diff --git a/src/backend/access/rmgrdesc/gistdesc.c b/src/backend/access/rmgrdesc/gistdesc.c
index d0c8e247c1..1e89c97d6f 100644
--- a/src/backend/access/rmgrdesc/gistdesc.c
+++ b/src/backend/access/rmgrdesc/gistdesc.c
@@ -26,18 +26,19 @@ out_gistxlogPageUpdate(StringInfo buf, gistxlogPageUpdate *xlrec)
static void
out_gistxlogPageReuse(StringInfo buf, gistxlogPageReuse *xlrec)
{
- appendStringInfo(buf, "rel %u/%u/%u; blk %u; latestRemovedXid %u:%u",
+ appendStringInfo(buf, "rel %u/%u/%u; blk %u; latestRemovedXid %u:%llu",
xlrec->node.spcNode, xlrec->node.dbNode,
xlrec->node.relNode, xlrec->block,
EpochFromFullTransactionId(xlrec->latestRemovedFullXid),
- XidFromFullTransactionId(xlrec->latestRemovedFullXid));
+ (unsigned long long) XidFromFullTransactionId(xlrec->latestRemovedFullXid));
}
static void
out_gistxlogDelete(StringInfo buf, gistxlogDelete *xlrec)
{
- appendStringInfo(buf, "delete: latestRemovedXid %u, nitems: %u",
- xlrec->latestRemovedXid, xlrec->ntodelete);
+ appendStringInfo(buf, "delete: latestRemovedXid %llu, nitems: %u",
+ (unsigned long long) xlrec->latestRemovedXid,
+ xlrec->ntodelete);
}
static void
@@ -50,9 +51,9 @@ out_gistxlogPageSplit(StringInfo buf, gistxlogPageSplit *xlrec)
static void
out_gistxlogPageDelete(StringInfo buf, gistxlogPageDelete *xlrec)
{
- appendStringInfo(buf, "deleteXid %u:%u; downlink %u",
+ appendStringInfo(buf, "deleteXid %u:%llu; downlink %u",
EpochFromFullTransactionId(xlrec->deleteXid),
- XidFromFullTransactionId(xlrec->deleteXid),
+ (unsigned long long) XidFromFullTransactionId(xlrec->deleteXid),
xlrec->downlinkOffset);
}
diff --git a/src/backend/access/rmgrdesc/hashdesc.c b/src/backend/access/rmgrdesc/hashdesc.c
index ef443bdb16..9030e74b88 100644
--- a/src/backend/access/rmgrdesc/hashdesc.c
+++ b/src/backend/access/rmgrdesc/hashdesc.c
@@ -113,9 +113,9 @@ hash_desc(StringInfo buf, XLogReaderState *record)
{
xl_hash_vacuum_one_page *xlrec = (xl_hash_vacuum_one_page *) rec;
- appendStringInfo(buf, "ntuples %d, latestRemovedXid %u",
+ appendStringInfo(buf, "ntuples %d, latestRemovedXid %llu",
xlrec->ntuples,
- xlrec->latestRemovedXid);
+ (unsigned long long) xlrec->latestRemovedXid);
break;
}
}
diff --git a/src/backend/access/rmgrdesc/heapdesc.c b/src/backend/access/rmgrdesc/heapdesc.c
index 6238085d65..f3fb61971f 100644
--- a/src/backend/access/rmgrdesc/heapdesc.c
+++ b/src/backend/access/rmgrdesc/heapdesc.c
@@ -58,27 +58,27 @@ heap_desc(StringInfo buf, XLogReaderState *record)
{
xl_heap_update *xlrec = (xl_heap_update *) rec;
- appendStringInfo(buf, "off %u xmax %u flags 0x%02X ",
+ appendStringInfo(buf, "off %u xmax %llu flags 0x%02X ",
xlrec->old_offnum,
- xlrec->old_xmax,
+ (unsigned long long) xlrec->old_xmax,
xlrec->flags);
out_infobits(buf, xlrec->old_infobits_set);
- appendStringInfo(buf, "; new off %u xmax %u",
+ appendStringInfo(buf, "; new off %u xmax %llu",
xlrec->new_offnum,
- xlrec->new_xmax);
+ (unsigned long long) xlrec->new_xmax);
}
else if (info == XLOG_HEAP_HOT_UPDATE)
{
xl_heap_update *xlrec = (xl_heap_update *) rec;
- appendStringInfo(buf, "off %u xmax %u flags 0x%02X ",
+ appendStringInfo(buf, "off %u xmax %llu flags 0x%02X ",
xlrec->old_offnum,
- xlrec->old_xmax,
+ (unsigned long long) xlrec->old_xmax,
xlrec->flags);
out_infobits(buf, xlrec->old_infobits_set);
- appendStringInfo(buf, "; new off %u xmax %u",
+ appendStringInfo(buf, "; new off %u xmax %llu",
xlrec->new_offnum,
- xlrec->new_xmax);
+ (unsigned long long) xlrec->new_xmax);
}
else if (info == XLOG_HEAP_TRUNCATE)
{
@@ -103,8 +103,9 @@ heap_desc(StringInfo buf, XLogReaderState *record)
{
xl_heap_lock *xlrec = (xl_heap_lock *) rec;
- appendStringInfo(buf, "off %u: xid %u: flags 0x%02X ",
- xlrec->offnum, xlrec->locking_xid, xlrec->flags);
+ appendStringInfo(buf, "off %u: xid %llu: flags 0x%02X ",
+ xlrec->offnum, (unsigned long long) xlrec->locking_xid,
+ xlrec->flags);
out_infobits(buf, xlrec->infobits_set);
}
else if (info == XLOG_HEAP_INPLACE)
@@ -125,8 +126,8 @@ heap2_desc(StringInfo buf, XLogReaderState *record)
{
xl_heap_prune *xlrec = (xl_heap_prune *) rec;
- appendStringInfo(buf, "latestRemovedXid %u nredirected %u ndead %u",
- xlrec->latestRemovedXid,
+ appendStringInfo(buf, "latestRemovedXid %llu nredirected %u ndead %u",
+ (unsigned long long) xlrec->latestRemovedXid,
xlrec->nredirected,
xlrec->ndead);
}
@@ -140,15 +141,15 @@ heap2_desc(StringInfo buf, XLogReaderState *record)
{
xl_heap_freeze_page *xlrec = (xl_heap_freeze_page *) rec;
- appendStringInfo(buf, "cutoff xid %u ntuples %u",
- xlrec->cutoff_xid, xlrec->ntuples);
+ appendStringInfo(buf, "cutoff xid %llu ntuples %u",
+ (unsigned long long) xlrec->cutoff_xid, xlrec->ntuples);
}
else if (info == XLOG_HEAP2_VISIBLE)
{
xl_heap_visible *xlrec = (xl_heap_visible *) rec;
- appendStringInfo(buf, "cutoff xid %u flags 0x%02X",
- xlrec->cutoff_xid, xlrec->flags);
+ appendStringInfo(buf, "cutoff xid %llu flags 0x%02X",
+ (unsigned long long) xlrec->cutoff_xid, xlrec->flags);
}
else if (info == XLOG_HEAP2_MULTI_INSERT)
{
@@ -161,8 +162,9 @@ heap2_desc(StringInfo buf, XLogReaderState *record)
{
xl_heap_lock_updated *xlrec = (xl_heap_lock_updated *) rec;
- appendStringInfo(buf, "off %u: xmax %u: flags 0x%02X ",
- xlrec->offnum, xlrec->xmax, xlrec->flags);
+ appendStringInfo(buf, "off %u: xmax %llu: flags 0x%02X ",
+ xlrec->offnum, (unsigned long long) xlrec->xmax,
+ xlrec->flags);
out_infobits(buf, xlrec->infobits_set);
}
else if (info == XLOG_HEAP2_NEW_CID)
diff --git a/src/backend/access/rmgrdesc/mxactdesc.c b/src/backend/access/rmgrdesc/mxactdesc.c
index 7076be2b3f..4cf8a9a4b1 100644
--- a/src/backend/access/rmgrdesc/mxactdesc.c
+++ b/src/backend/access/rmgrdesc/mxactdesc.c
@@ -19,7 +19,7 @@
static void
out_member(StringInfo buf, MultiXactMember *member)
{
- appendStringInfo(buf, "%u ", member->xid);
+ appendStringInfo(buf, "%llu ", (unsigned long long) member->xid);
switch (member->status)
{
case MultiXactStatusForKeyShare:
@@ -65,7 +65,8 @@ multixact_desc(StringInfo buf, XLogReaderState *record)
xl_multixact_create *xlrec = (xl_multixact_create *) rec;
int i;
- appendStringInfo(buf, "%u offset %u nmembers %d: ", xlrec->mid,
+ appendStringInfo(buf, "%llu offset %u nmembers %d: ",
+ (unsigned long long) xlrec->mid,
xlrec->moff, xlrec->nmembers);
for (i = 0; i < xlrec->nmembers; i++)
out_member(buf, &xlrec->members[i]);
@@ -74,8 +75,9 @@ multixact_desc(StringInfo buf, XLogReaderState *record)
{
xl_multixact_truncate *xlrec = (xl_multixact_truncate *) rec;
- appendStringInfo(buf, "offsets [%u, %u), members [%u, %u)",
- xlrec->startTruncOff, xlrec->endTruncOff,
+ appendStringInfo(buf, "offsets [%llu, %llu), members [%u, %u)",
+ (unsigned long long) xlrec->startTruncOff,
+ (unsigned long long) xlrec->endTruncOff,
xlrec->startTruncMemb, xlrec->endTruncMemb);
}
}
diff --git a/src/backend/access/rmgrdesc/nbtdesc.c b/src/backend/access/rmgrdesc/nbtdesc.c
index dfbbf4ebaf..a55b69dedf 100644
--- a/src/backend/access/rmgrdesc/nbtdesc.c
+++ b/src/backend/access/rmgrdesc/nbtdesc.c
@@ -63,8 +63,9 @@ btree_desc(StringInfo buf, XLogReaderState *record)
{
xl_btree_delete *xlrec = (xl_btree_delete *) rec;
- appendStringInfo(buf, "latestRemovedXid %u; ndeleted %u; nupdated %u",
- xlrec->latestRemovedXid, xlrec->ndeleted, xlrec->nupdated);
+ appendStringInfo(buf, "latestRemovedXid %llu; ndeleted %u; nupdated %u",
+ (unsigned long long) xlrec->latestRemovedXid,
+ xlrec->ndeleted, xlrec->nupdated);
break;
}
case XLOG_BTREE_MARK_PAGE_HALFDEAD:
@@ -80,10 +81,10 @@ btree_desc(StringInfo buf, XLogReaderState *record)
{
xl_btree_unlink_page *xlrec = (xl_btree_unlink_page *) rec;
- appendStringInfo(buf, "left %u; right %u; level %u; safexid %u:%u; ",
+ appendStringInfo(buf, "left %u; right %u; level %u; safexid %u:%llu; ",
xlrec->leftsib, xlrec->rightsib, xlrec->level,
EpochFromFullTransactionId(xlrec->safexid),
- XidFromFullTransactionId(xlrec->safexid));
+ (unsigned long long) XidFromFullTransactionId(xlrec->safexid));
appendStringInfo(buf, "leafleft %u; leafright %u; leaftopparent %u",
xlrec->leafleftsib, xlrec->leafrightsib,
xlrec->leaftopparent);
@@ -100,11 +101,11 @@ btree_desc(StringInfo buf, XLogReaderState *record)
{
xl_btree_reuse_page *xlrec = (xl_btree_reuse_page *) rec;
- appendStringInfo(buf, "rel %u/%u/%u; latestRemovedXid %u:%u",
+ appendStringInfo(buf, "rel %u/%u/%u; latestRemovedXid %u:%llu",
xlrec->node.spcNode, xlrec->node.dbNode,
xlrec->node.relNode,
EpochFromFullTransactionId(xlrec->latestRemovedFullXid),
- XidFromFullTransactionId(xlrec->latestRemovedFullXid));
+ (unsigned long long) XidFromFullTransactionId(xlrec->latestRemovedFullXid));
break;
}
case XLOG_BTREE_META_CLEANUP:
diff --git a/src/backend/access/rmgrdesc/spgdesc.c b/src/backend/access/rmgrdesc/spgdesc.c
index d5d921a42a..937662e5d4 100644
--- a/src/backend/access/rmgrdesc/spgdesc.c
+++ b/src/backend/access/rmgrdesc/spgdesc.c
@@ -118,10 +118,10 @@ spg_desc(StringInfo buf, XLogReaderState *record)
{
spgxlogVacuumRedirect *xlrec = (spgxlogVacuumRedirect *) rec;
- appendStringInfo(buf, "ntoplaceholder: %u, firstplaceholder: %u, newestredirectxid: %u",
+ appendStringInfo(buf, "ntoplaceholder: %u, firstplaceholder: %u, newestredirectxid: %llu",
xlrec->nToPlaceholder,
xlrec->firstPlaceholder,
- xlrec->newestRedirectXid);
+ (unsigned long long) xlrec->newestRedirectXid);
}
break;
}
diff --git a/src/backend/access/rmgrdesc/standbydesc.c b/src/backend/access/rmgrdesc/standbydesc.c
index 2dba39e349..a9d1fa9d39 100644
--- a/src/backend/access/rmgrdesc/standbydesc.c
+++ b/src/backend/access/rmgrdesc/standbydesc.c
@@ -21,15 +21,15 @@ standby_desc_running_xacts(StringInfo buf, xl_running_xacts *xlrec)
{
int i;
- appendStringInfo(buf, "nextXid %u latestCompletedXid %u oldestRunningXid %u",
- xlrec->nextXid,
- xlrec->latestCompletedXid,
- xlrec->oldestRunningXid);
+ appendStringInfo(buf, "nextXid %llu latestCompletedXid %llu oldestRunningXid %llu",
+ (unsigned long long) xlrec->nextXid,
+ (unsigned long long) xlrec->latestCompletedXid,
+ (unsigned long long) xlrec->oldestRunningXid);
if (xlrec->xcnt > 0)
{
appendStringInfo(buf, "; %d xacts:", xlrec->xcnt);
for (i = 0; i < xlrec->xcnt; i++)
- appendStringInfo(buf, " %u", xlrec->xids[i]);
+ appendStringInfo(buf, " %llu", (unsigned long long) xlrec->xids[i]);
}
if (xlrec->subxid_overflow)
@@ -48,8 +48,9 @@ standby_desc(StringInfo buf, XLogReaderState *record)
int i;
for (i = 0; i < xlrec->nlocks; i++)
- appendStringInfo(buf, "xid %u db %u rel %u ",
- xlrec->locks[i].xid, xlrec->locks[i].dbOid,
+ appendStringInfo(buf, "xid %llu db %u rel %u ",
+ (unsigned long long) xlrec->locks[i].xid,
+ xlrec->locks[i].dbOid,
xlrec->locks[i].relOid);
}
else if (info == XLOG_RUNNING_XACTS)
diff --git a/src/backend/access/rmgrdesc/xactdesc.c b/src/backend/access/rmgrdesc/xactdesc.c
index d3f625d072..9cfdd65d83 100644
--- a/src/backend/access/rmgrdesc/xactdesc.c
+++ b/src/backend/access/rmgrdesc/xactdesc.c
@@ -304,7 +304,7 @@ xact_desc_subxacts(StringInfo buf, int nsubxacts, TransactionId *subxacts)
{
appendStringInfoString(buf, "; subxacts:");
for (i = 0; i < nsubxacts; i++)
- appendStringInfo(buf, " %u", subxacts[i]);
+ appendStringInfo(buf, " %llu", (unsigned long long) subxacts[i]);
}
}
@@ -336,7 +336,7 @@ xact_desc_commit(StringInfo buf, uint8 info, xl_xact_commit *xlrec, RepOriginId
/* If this is a prepared xact, show the xid of the original xact */
if (TransactionIdIsValid(parsed.twophase_xid))
- appendStringInfo(buf, "%u: ", parsed.twophase_xid);
+ appendStringInfo(buf, "%llu: ", (unsigned long long) parsed.twophase_xid);
appendStringInfoString(buf, timestamptz_to_str(xlrec->xact_time));
@@ -372,7 +372,7 @@ xact_desc_abort(StringInfo buf, uint8 info, xl_xact_abort *xlrec, RepOriginId or
/* If this is a prepared xact, show the xid of the original xact */
if (TransactionIdIsValid(parsed.twophase_xid))
- appendStringInfo(buf, "%u: ", parsed.twophase_xid);
+ appendStringInfo(buf, "%llu: ", (unsigned long long) parsed.twophase_xid);
appendStringInfoString(buf, timestamptz_to_str(xlrec->xact_time));
@@ -429,7 +429,7 @@ xact_desc_assignment(StringInfo buf, xl_xact_assignment *xlrec)
appendStringInfoString(buf, "subxacts:");
for (i = 0; i < xlrec->nsubxacts; i++)
- appendStringInfo(buf, " %u", xlrec->xsub[i]);
+ appendStringInfo(buf, " %llu", (unsigned long long) xlrec->xsub[i]);
}
void
@@ -468,7 +468,7 @@ xact_desc(StringInfo buf, XLogReaderState *record)
* interested in the top-level xid that issued the record and which
* xids are being reported here.
*/
- appendStringInfo(buf, "xtop %u: ", xlrec->xtop);
+ appendStringInfo(buf, "xtop %llu: ", (unsigned long long) xlrec->xtop);
xact_desc_assignment(buf, xlrec);
}
else if (info == XLOG_XACT_INVALIDATIONS)
diff --git a/src/backend/access/rmgrdesc/xlogdesc.c b/src/backend/access/rmgrdesc/xlogdesc.c
index c0dfea40c7..c73e9df63f 100644
--- a/src/backend/access/rmgrdesc/xlogdesc.c
+++ b/src/backend/access/rmgrdesc/xlogdesc.c
@@ -45,26 +45,26 @@ xlog_desc(StringInfo buf, XLogReaderState *record)
CheckPoint *checkpoint = (CheckPoint *) rec;
appendStringInfo(buf, "redo %X/%X; "
- "tli %u; prev tli %u; fpw %s; xid %u:%u; oid %u; multi %u; offset %u; "
- "oldest xid %u in DB %u; oldest multi %u in DB %u; "
- "oldest/newest commit timestamp xid: %u/%u; "
- "oldest running xid %u; %s",
+ "tli %u; prev tli %u; fpw %s; xid %u:%llu; oid %u; multi %llu; offset %u; "
+ "oldest xid %llu in DB %u; oldest multi %llu in DB %u; "
+ "oldest/newest commit timestamp xid: %llu/%llu; "
+ "oldest running xid %llu; %s",
LSN_FORMAT_ARGS(checkpoint->redo),
checkpoint->ThisTimeLineID,
checkpoint->PrevTimeLineID,
checkpoint->fullPageWrites ? "true" : "false",
EpochFromFullTransactionId(checkpoint->nextXid),
- XidFromFullTransactionId(checkpoint->nextXid),
+ (unsigned long long) XidFromFullTransactionId(checkpoint->nextXid),
checkpoint->nextOid,
- checkpoint->nextMulti,
+ (unsigned long long) checkpoint->nextMulti,
checkpoint->nextMultiOffset,
- checkpoint->oldestXid,
+ (unsigned long long) checkpoint->oldestXid,
checkpoint->oldestXidDB,
- checkpoint->oldestMulti,
+ (unsigned long long) checkpoint->oldestMulti,
checkpoint->oldestMultiDB,
- checkpoint->oldestCommitTsXid,
- checkpoint->newestCommitTsXid,
- checkpoint->oldestActiveXid,
+ (unsigned long long) checkpoint->oldestCommitTsXid,
+ (unsigned long long) checkpoint->newestCommitTsXid,
+ (unsigned long long) checkpoint->oldestActiveXid,
(info == XLOG_CHECKPOINT_SHUTDOWN) ? "shutdown" : "online");
}
else if (info == XLOG_NEXTOID)
diff --git a/src/backend/access/transam/commit_ts.c b/src/backend/access/transam/commit_ts.c
index 76dfd2b13b..7bfff478ea 100644
--- a/src/backend/access/transam/commit_ts.c
+++ b/src/backend/access/transam/commit_ts.c
@@ -279,7 +279,8 @@ TransactionIdGetCommitTsData(TransactionId xid, TimestampTz *ts,
if (!TransactionIdIsValid(xid))
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("cannot retrieve commit timestamp for transaction %u", xid)));
+ errmsg("cannot retrieve commit timestamp for transaction %llu",
+ (unsigned long long) xid)));
else if (!TransactionIdIsNormal(xid))
{
/* frozen and bootstrap xids are always committed far in the past */
diff --git a/src/backend/access/transam/multixact.c b/src/backend/access/transam/multixact.c
index 69ff2d111b..2b36029b10 100644
--- a/src/backend/access/transam/multixact.c
+++ b/src/backend/access/transam/multixact.c
@@ -451,8 +451,9 @@ MultiXactIdExpand(MultiXactId multi, TransactionId xid, MultiXactStatus status)
/* MultiXactIdSetOldestMember() must have been called already. */
Assert(MultiXactIdIsValid(OldestMemberMXactId[MyBackendId]));
- debug_elog5(DEBUG2, "Expand: received multi %u, xid %u status %s",
- multi, xid, mxstatus_to_string(status));
+ debug_elog5(DEBUG2, "Expand: received multi %llu, xid %llu status %s",
+ (unsigned long long) multi, (unsigned long long) xid,
+ mxstatus_to_string(status));
/*
* Note: we don't allow for old multis here. The reason is that the only
@@ -476,8 +477,8 @@ MultiXactIdExpand(MultiXactId multi, TransactionId xid, MultiXactStatus status)
member.status = status;
newMulti = MultiXactIdCreateFromMembers(1, &member);
- debug_elog4(DEBUG2, "Expand: %u has no members, create singleton %u",
- multi, newMulti);
+ debug_elog4(DEBUG2, "Expand: %llu has no members, create singleton %llu",
+ (unsigned long long) multi, (unsigned long long) newMulti);
return newMulti;
}
@@ -490,8 +491,8 @@ MultiXactIdExpand(MultiXactId multi, TransactionId xid, MultiXactStatus status)
if (TransactionIdEquals(members[i].xid, xid) &&
(members[i].status == status))
{
- debug_elog4(DEBUG2, "Expand: %u is already a member of %u",
- xid, multi);
+ debug_elog4(DEBUG2, "Expand: %llu is already a member of %llu",
+ (unsigned long long) xid, (unsigned long long) multi);
pfree(members);
return multi;
}
@@ -526,12 +527,14 @@ MultiXactIdExpand(MultiXactId multi, TransactionId xid, MultiXactStatus status)
newMembers[j].xid = xid;
newMembers[j++].status = status;
+
newMulti = MultiXactIdCreateFromMembers(j, newMembers);
pfree(members);
pfree(newMembers);
- debug_elog3(DEBUG2, "Expand: returning new multi %u", newMulti);
+ debug_elog3(DEBUG2, "Expand: returning new multi %llu",
+ (unsigned long long) newMulti);
return newMulti;
}
@@ -554,7 +557,7 @@ MultiXactIdIsRunning(MultiXactId multi, bool isLockOnly)
int nmembers;
int i;
- debug_elog3(DEBUG2, "IsRunning %u?", multi);
+ debug_elog3(DEBUG2, "IsRunning %llu?", (unsigned long long) multi);
/*
* "false" here means we assume our callers have checked that the given
@@ -594,8 +597,8 @@ MultiXactIdIsRunning(MultiXactId multi, bool isLockOnly)
{
if (TransactionIdIsInProgress(members[i].xid))
{
- debug_elog4(DEBUG2, "IsRunning: member %d (%u) is running",
- i, members[i].xid);
+ debug_elog4(DEBUG2, "IsRunning: member %d (%llu) is running", i,
+ (unsigned long long) members[i].xid);
pfree(members);
return true;
}
@@ -603,7 +606,8 @@ MultiXactIdIsRunning(MultiXactId multi, bool isLockOnly)
pfree(members);
- debug_elog3(DEBUG2, "IsRunning: %u is not running", multi);
+ debug_elog3(DEBUG2, "IsRunning: %llu is not running",
+ (unsigned long long) multi);
return false;
}
@@ -657,8 +661,8 @@ MultiXactIdSetOldestMember(void)
LWLockRelease(MultiXactGenLock);
- debug_elog4(DEBUG2, "MultiXact: setting OldestMember[%d] = %u",
- MyBackendId, nextMXact);
+ debug_elog4(DEBUG2, "MultiXact: setting OldestMember[%d] = %llu",
+ MyBackendId, (unsigned long long) nextMXact);
}
}
@@ -710,8 +714,8 @@ MultiXactIdSetOldestVisible(void)
LWLockRelease(MultiXactGenLock);
- debug_elog4(DEBUG2, "MultiXact: setting OldestVisible[%d] = %u",
- MyBackendId, oldestMXact);
+ debug_elog4(DEBUG2, "MultiXact: setting OldestVisible[%d] = %llu",
+ MyBackendId, (unsigned long long) oldestMXact);
}
}
@@ -1188,7 +1192,8 @@ GetNewMultiXactId(int nmembers, MultiXactOffset *offset)
LWLockRelease(MultiXactGenLock);
- debug_elog4(DEBUG2, "GetNew: returning %u offset %u", result, *offset);
+ debug_elog4(DEBUG2, "GetNew: returning %llu offset %u",
+ (unsigned long long) result, *offset);
return result;
}
@@ -1238,7 +1243,8 @@ GetMultiXactIdMembers(MultiXactId multi, MultiXactMember **members,
MultiXactOffset nextOffset;
MultiXactMember *ptr;
- debug_elog3(DEBUG2, "GetMembers: asked for %u", multi);
+ debug_elog3(DEBUG2, "GetMembers: asked for %llu",
+ (unsigned long long) multi);
if (!MultiXactIdIsValid(multi) || from_pgupgrade)
{
@@ -1517,7 +1523,8 @@ mXactCacheGetBySet(int nmembers, MultiXactMember *members)
*/
if (memcmp(members, entry->members, nmembers * sizeof(MultiXactMember)) == 0)
{
- debug_elog3(DEBUG2, "CacheGet: found %u", entry->multi);
+ debug_elog3(DEBUG2, "CacheGet: found %llu",
+ (unsigned long long) entry->multi);
dlist_move_head(&MXactCache, iter.cur);
return entry->multi;
}
@@ -1540,7 +1547,8 @@ mXactCacheGetById(MultiXactId multi, MultiXactMember **members)
{
dlist_iter iter;
- debug_elog3(DEBUG2, "CacheGet: looking for %u", multi);
+ debug_elog3(DEBUG2, "CacheGet: looking for %llu",
+ (unsigned long long) multi);
dlist_foreach(iter, &MXactCache)
{
@@ -1621,8 +1629,8 @@ mXactCachePut(MultiXactId multi, int nmembers, MultiXactMember *members)
MXactCacheMembers--;
entry = dlist_container(mXactCacheEnt, node, node);
- debug_elog3(DEBUG2, "CachePut: pruning cached multi %u",
- entry->multi);
+ debug_elog3(DEBUG2, "CachePut: pruning cached multi %llu",
+ (unsigned long long) entry->multi);
pfree(entry);
}
@@ -1663,11 +1671,13 @@ mxid_to_string(MultiXactId multi, int nmembers, MultiXactMember *members)
initStringInfo(&buf);
- appendStringInfo(&buf, "%u %d[%u (%s)", multi, nmembers, members[0].xid,
+ appendStringInfo(&buf, "%llu %d[%llu (%s)", (unsigned long long) multi,
+ nmembers, (unsigned long long) members[0].xid,
mxstatus_to_string(members[0].status));
for (i = 1; i < nmembers; i++)
- appendStringInfo(&buf, ", %u (%s)", members[i].xid,
+ appendStringInfo(&buf, ", %llu (%s)",
+ (unsigned long long) members[i].xid,
mxstatus_to_string(members[i].status));
appendStringInfoChar(&buf, ']');
@@ -2144,8 +2154,9 @@ MultiXactGetCheckptMulti(bool is_shutdown,
LWLockRelease(MultiXactGenLock);
debug_elog6(DEBUG2,
- "MultiXact: checkpoint is nextMulti %u, nextOffset %u, oldestMulti %u in DB %u",
- *nextMulti, *nextMultiOffset, *oldestMulti, *oldestMultiDB);
+ "MultiXact: checkpoint is nextMulti %llu, nextOffset %u, oldestMulti %llu in DB %u",
+ (unsigned long long) *nextMulti, *nextMultiOffset,
+ (unsigned long long) *oldestMulti, *oldestMultiDB);
}
/*
@@ -2179,8 +2190,8 @@ void
MultiXactSetNextMXact(MultiXactId nextMulti,
MultiXactOffset nextMultiOffset)
{
- debug_elog4(DEBUG2, "MultiXact: setting next multi to %u offset %u",
- nextMulti, nextMultiOffset);
+ debug_elog4(DEBUG2, "MultiXact: setting next multi to %llu offset %u",
+ (unsigned long long) nextMulti, nextMultiOffset);
LWLockAcquire(MultiXactGenLock, LW_EXCLUSIVE);
MultiXactState->nextMXact = nextMulti;
MultiXactState->nextOffset = nextMultiOffset;
@@ -2365,7 +2376,8 @@ MultiXactAdvanceNextMXact(MultiXactId minMulti,
LWLockAcquire(MultiXactGenLock, LW_EXCLUSIVE);
if (MultiXactIdPrecedes(MultiXactState->nextMXact, minMulti))
{
- debug_elog3(DEBUG2, "MultiXact: setting next multi to %u", minMulti);
+ debug_elog3(DEBUG2, "MultiXact: setting next multi to %llu",
+ (unsigned long long) minMulti);
MultiXactState->nextMXact = minMulti;
}
if (MultiXactOffsetPrecedes(MultiXactState->nextOffset, minMultiOffset))
@@ -2614,12 +2626,12 @@ SetOffsetVacuumLimit(bool is_startup)
if (oldestOffsetKnown)
ereport(DEBUG1,
- (errmsg_internal("oldest MultiXactId member is at offset %u",
- oldestOffset)));
+ (errmsg_internal("oldest MultiXactId member is at offset %llu",
+ (unsigned long long) oldestOffset)));
else
ereport(LOG,
- (errmsg("MultiXact member wraparound protections are disabled because oldest checkpointed MultiXact %u does not exist on disk",
- oldestMultiXactId)));
+ (errmsg("MultiXact member wraparound protections are disabled because oldest checkpointed MultiXact %llu does not exist on disk",
+ (unsigned long long) oldestMultiXactId)));
}
LWLockRelease(MultiXactTruncationLock);
@@ -2643,8 +2655,9 @@ SetOffsetVacuumLimit(bool is_startup)
(errmsg("MultiXact member wraparound protections are now enabled")));
ereport(DEBUG1,
- (errmsg_internal("MultiXact member stop limit is now %u based on MultiXact %u",
- offsetStopLimit, oldestMultiXactId)));
+ (errmsg_internal("MultiXact member stop limit is now %llu based on MultiXact %llu",
+ (unsigned long long) offsetStopLimit,
+ (unsigned long long) oldestMultiXactId)));
}
else if (prevOldestOffsetKnown)
{
@@ -3027,8 +3040,8 @@ TruncateMultiXact(MultiXactId newOldestMulti, Oid newOldestMultiDB)
else if (!find_multixact_start(oldestMulti, &oldestOffset))
{
ereport(LOG,
- (errmsg("oldest MultiXact %u not found, earliest MultiXact %u, skipping truncation",
- oldestMulti, earliest)));
+ (errmsg("oldest MultiXact %llu not found, earliest MultiXact %llu, skipping truncation",
+ (unsigned long long) oldestMulti, (unsigned long long) earliest)));
LWLockRelease(MultiXactTruncationLock);
return;
}
@@ -3045,16 +3058,16 @@ TruncateMultiXact(MultiXactId newOldestMulti, Oid newOldestMultiDB)
else if (!find_multixact_start(newOldestMulti, &newOldestOffset))
{
ereport(LOG,
- (errmsg("cannot truncate up to MultiXact %u because it does not exist on disk, skipping truncation",
- newOldestMulti)));
+ (errmsg("cannot truncate up to MultiXact %llu because it does not exist on disk, skipping truncation",
+ (unsigned long long) newOldestMulti)));
LWLockRelease(MultiXactTruncationLock);
return;
}
elog(DEBUG1, "performing multixact truncation: "
- "offsets [%u, %u), offsets segments [%x, %x), "
+ "offsets [%llu, %llu), offsets segments [%x, %x), "
"members [%u, %u), members segments [%x, %x)",
- oldestMulti, newOldestMulti,
+ (unsigned long long) oldestMulti, (unsigned long long) newOldestMulti,
MultiXactIdToOffsetSegment(oldestMulti),
MultiXactIdToOffsetSegment(newOldestMulti),
oldestOffset, newOldestOffset,
@@ -3308,9 +3321,10 @@ multixact_redo(XLogReaderState *record)
SizeOfMultiXactTruncate);
elog(DEBUG1, "replaying multixact truncation: "
- "offsets [%u, %u), offsets segments [%x, %x), "
+ "offsets [%llu, %llu), offsets segments [%x, %x), "
"members [%u, %u), members segments [%x, %x)",
- xlrec.startTruncOff, xlrec.endTruncOff,
+ (unsigned long long) xlrec.startTruncOff,
+ (unsigned long long) xlrec.endTruncOff,
MultiXactIdToOffsetSegment(xlrec.startTruncOff),
MultiXactIdToOffsetSegment(xlrec.endTruncOff),
xlrec.startTruncMemb, xlrec.endTruncMemb,
@@ -3359,7 +3373,7 @@ pg_get_multixact_members(PG_FUNCTION_ARGS)
if (mxid < FirstMultiXactId)
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("invalid MultiXactId: %u", mxid)));
+ errmsg("invalid MultiXactId: %llu", (unsigned long long) mxid)));
if (SRF_IS_FIRSTCALL())
{
@@ -3395,7 +3409,8 @@ pg_get_multixact_members(PG_FUNCTION_ARGS)
HeapTuple tuple;
char *values[2];
- values[0] = psprintf("%u", multi->members[multi->iter].xid);
+ values[0] = psprintf("%llu",
+ (unsigned long long) multi->members[multi->iter].xid);
values[1] = mxstatus_to_string(multi->members[multi->iter].status);
tuple = BuildTupleFromCStrings(funccxt->attinmeta, values);
diff --git a/src/backend/access/transam/slru.c b/src/backend/access/transam/slru.c
index faf561f225..ea66084410 100644
--- a/src/backend/access/transam/slru.c
+++ b/src/backend/access/transam/slru.c
@@ -949,13 +949,15 @@ SlruReportIOError(SlruCtl ctl, int64 pageno, TransactionId xid)
case SLRU_OPEN_FAILED:
ereport(ERROR,
(errcode_for_file_access(),
- errmsg("could not access status of transaction %u", xid),
+ errmsg("could not access status of transaction %llu",
+ (unsigned long long) xid),
errdetail("Could not open file \"%s\": %m.", path)));
break;
case SLRU_SEEK_FAILED:
ereport(ERROR,
(errcode_for_file_access(),
- errmsg("could not access status of transaction %u", xid),
+ errmsg("could not access status of transaction %llu",
+ (unsigned long long) xid),
errdetail("Could not seek in file \"%s\" to offset %d: %m.",
path, offset)));
break;
@@ -963,12 +965,14 @@ SlruReportIOError(SlruCtl ctl, int64 pageno, TransactionId xid)
if (errno)
ereport(ERROR,
(errcode_for_file_access(),
- errmsg("could not access status of transaction %u", xid),
+ errmsg("could not access status of transaction %llu",
+ (unsigned long long) xid),
errdetail("Could not read from file \"%s\" at offset %d: %m.",
path, offset)));
else
ereport(ERROR,
- (errmsg("could not access status of transaction %u", xid),
+ (errmsg("could not access status of transaction %llu",
+ (unsigned long long) xid),
errdetail("Could not read from file \"%s\" at offset %d: read too few bytes.",
path, offset)));
break;
@@ -976,26 +980,30 @@ SlruReportIOError(SlruCtl ctl, int64 pageno, TransactionId xid)
if (errno)
ereport(ERROR,
(errcode_for_file_access(),
- errmsg("could not access status of transaction %u", xid),
+ errmsg("could not access status of transaction %llu",
+ (unsigned long long) xid),
errdetail("Could not write to file \"%s\" at offset %d: %m.",
path, offset)));
else
ereport(ERROR,
- (errmsg("could not access status of transaction %u", xid),
+ (errmsg("could not access status of transaction %llu",
+ (unsigned long long) xid),
errdetail("Could not write to file \"%s\" at offset %d: wrote too few bytes.",
path, offset)));
break;
case SLRU_FSYNC_FAILED:
ereport(data_sync_elevel(ERROR),
(errcode_for_file_access(),
- errmsg("could not access status of transaction %u", xid),
+ errmsg("could not access status of transaction %llu",
+ (unsigned long long) xid),
errdetail("Could not fsync file \"%s\": %m.",
path)));
break;
case SLRU_CLOSE_FAILED:
ereport(ERROR,
(errcode_for_file_access(),
- errmsg("could not access status of transaction %u", xid),
+ errmsg("could not access status of transaction %llu",
+ (unsigned long long) xid),
errdetail("Could not close file \"%s\": %m.",
path)));
break;
diff --git a/src/backend/access/transam/subtrans.c b/src/backend/access/transam/subtrans.c
index de09068395..fcb95820a5 100644
--- a/src/backend/access/transam/subtrans.c
+++ b/src/backend/access/transam/subtrans.c
@@ -183,8 +183,9 @@ SubTransGetTopmostTransaction(TransactionId xid)
* structure that could lead to an infinite loop, so exit.
*/
if (!TransactionIdPrecedes(parentXid, previousXid))
- elog(ERROR, "pg_subtrans contains invalid entry: xid %u points to parent xid %u",
- previousXid, parentXid);
+ elog(ERROR, "pg_subtrans contains invalid entry: xid %llu points to parent xid %llu",
+ (unsigned long long) previousXid,
+ (unsigned long long) parentXid);
}
Assert(TransactionIdIsValid(previousXid));
diff --git a/src/backend/access/transam/transam.c b/src/backend/access/transam/transam.c
index dbc5f884e8..b243878094 100644
--- a/src/backend/access/transam/transam.c
+++ b/src/backend/access/transam/transam.c
@@ -157,8 +157,8 @@ TransactionIdDidCommit(TransactionId transactionId)
parentXid = SubTransGetParent(transactionId);
if (!TransactionIdIsValid(parentXid))
{
- elog(WARNING, "no pg_subtrans entry for subcommitted XID %u",
- transactionId);
+ elog(WARNING, "no pg_subtrans entry for subcommitted XID %llu",
+ (unsigned long long) transactionId);
return false;
}
return TransactionIdDidCommit(parentXid);
@@ -206,8 +206,8 @@ TransactionIdDidAbort(TransactionId transactionId)
if (!TransactionIdIsValid(parentXid))
{
/* see notes in TransactionIdDidCommit */
- elog(WARNING, "no pg_subtrans entry for subcommitted XID %u",
- transactionId);
+ elog(WARNING, "no pg_subtrans entry for subcommitted XID %llu",
+ (unsigned long long) transactionId);
return true;
}
return TransactionIdDidAbort(parentXid);
diff --git a/src/backend/access/transam/twophase.c b/src/backend/access/transam/twophase.c
index dc0266693e..d8fc2afbcd 100644
--- a/src/backend/access/transam/twophase.c
+++ b/src/backend/access/transam/twophase.c
@@ -852,7 +852,8 @@ TwoPhaseGetGXact(TransactionId xid, bool lock_held)
LWLockRelease(TwoPhaseStateLock);
if (result == NULL) /* should not happen */
- elog(ERROR, "failed to find GlobalTransaction for xid %u", xid);
+ elog(ERROR, "failed to find GlobalTransaction for xid %llu",
+ (unsigned long long) xid);
cached_xid = xid;
cached_gxact = result;
@@ -2091,7 +2092,8 @@ RecoverPreparedTransactions(void)
continue;
ereport(LOG,
- (errmsg("recovering prepared transaction %u from shared memory", xid)));
+ (errmsg("recovering prepared transaction %llu from shared memory",
+ (unsigned long long) xid)));
hdr = (TwoPhaseFileHeader *) buf;
Assert(TransactionIdEquals(hdr->xid, xid));
@@ -2184,15 +2186,15 @@ ProcessTwoPhaseBuffer(TransactionId xid,
if (fromdisk)
{
ereport(WARNING,
- (errmsg("removing stale two-phase state file for transaction %u",
- xid)));
+ (errmsg("removing stale two-phase state file for transaction %llu",
+ (unsigned long long) xid)));
RemoveTwoPhaseFile(xid, true);
}
else
{
ereport(WARNING,
- (errmsg("removing stale two-phase state from memory for transaction %u",
- xid)));
+ (errmsg("removing stale two-phase state from memory for transaction %llu",
+ (unsigned long long) xid)));
PrepareRedoRemove(xid, true);
}
return NULL;
@@ -2204,15 +2206,15 @@ ProcessTwoPhaseBuffer(TransactionId xid,
if (fromdisk)
{
ereport(WARNING,
- (errmsg("removing future two-phase state file for transaction %u",
- xid)));
+ (errmsg("removing future two-phase state file for transaction %llu",
+ (unsigned long long) xid)));
RemoveTwoPhaseFile(xid, true);
}
else
{
ereport(WARNING,
- (errmsg("removing future two-phase state from memory for transaction %u",
- xid)));
+ (errmsg("removing future two-phase state from memory for transaction %llu",
+ (unsigned long long) xid)));
PrepareRedoRemove(xid, true);
}
return NULL;
@@ -2236,13 +2238,13 @@ ProcessTwoPhaseBuffer(TransactionId xid,
if (fromdisk)
ereport(ERROR,
(errcode(ERRCODE_DATA_CORRUPTED),
- errmsg("corrupted two-phase state file for transaction %u",
- xid)));
+ errmsg("corrupted two-phase state file for transaction %llu",
+ (unsigned long long) xid)));
else
ereport(ERROR,
(errcode(ERRCODE_DATA_CORRUPTED),
- errmsg("corrupted two-phase state in memory for transaction %u",
- xid)));
+ errmsg("corrupted two-phase state in memory for transaction %llu",
+ (unsigned long long) xid)));
}
/*
@@ -2403,8 +2405,8 @@ RecordTransactionAbortPrepared(TransactionId xid,
* RecordTransactionCommitPrepared ...
*/
if (TransactionIdDidCommit(xid))
- elog(PANIC, "cannot abort transaction %u, it was already committed",
- xid);
+ elog(PANIC, "cannot abort transaction %llu, it was already committed",
+ (unsigned long long) xid);
START_CRIT_SECTION();
@@ -2511,7 +2513,8 @@ PrepareRedoAdd(char *buf, XLogRecPtr start_lsn,
false /* backward */ , false /* WAL */ );
}
- elog(DEBUG2, "added 2PC data in shared memory for transaction %u", gxact->xid);
+ elog(DEBUG2, "added 2PC data in shared memory for transaction %llu",
+ (unsigned long long) gxact->xid);
}
/*
@@ -2554,7 +2557,8 @@ PrepareRedoRemove(TransactionId xid, bool giveWarning)
/*
* And now we can clean up any files we may have left.
*/
- elog(DEBUG2, "removing 2PC data for transaction %u", xid);
+ elog(DEBUG2, "removing 2PC data for transaction %llu",
+ (unsigned long long) xid);
if (gxact->ondisk)
RemoveTwoPhaseFile(xid, giveWarning);
RemoveGXact(gxact);
diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c
index 53f3e7fd1a..e225cfce26 100644
--- a/src/backend/access/transam/xact.c
+++ b/src/backend/access/transam/xact.c
@@ -1738,8 +1738,8 @@ RecordTransactionAbort(bool isSubXact)
* Check that we haven't aborted halfway through RecordTransactionCommit.
*/
if (TransactionIdDidCommit(xid))
- elog(PANIC, "cannot abort transaction %u, it was already committed",
- xid);
+ elog(PANIC, "cannot abort transaction %llu, it was already committed",
+ (unsigned long long) xid);
/* Fetch the data we need for the abort record */
nrels = smgrGetPendingDeletes(false, &rels);
@@ -5449,22 +5449,24 @@ ShowTransactionStateRec(const char *str, TransactionState s)
{
int i;
- appendStringInfo(&buf, ", children: %u", s->childXids[0]);
+ appendStringInfo(&buf, ", children: %llu",
+ (unsigned long long) s->childXids[0]);
for (i = 1; i < s->nChildXids; i++)
- appendStringInfo(&buf, " %u", s->childXids[i]);
+ appendStringInfo(&buf, " %llu",
+ (unsigned long long) s->childXids[i]);
}
if (s->parent)
ShowTransactionStateRec(str, s->parent);
ereport(DEBUG5,
- (errmsg_internal("%s(%d) name: %s; blockState: %s; state: %s, xid/subid/cid: %u/%u/%u%s%s",
+ (errmsg_internal("%s(%d) name: %s; blockState: %s; state: %s, xid/subid/cid: %llu/%llu/%u%s%s",
str, s->nestingLevel,
PointerIsValid(s->name) ? s->name : "unnamed",
BlockStateAsString(s->blockState),
TransStateAsString(s->state),
- (unsigned int) XidFromFullTransactionId(s->fullTransactionId),
- (unsigned int) s->subTransactionId,
+ (unsigned long long) XidFromFullTransactionId(s->fullTransactionId),
+ (unsigned long long) s->subTransactionId,
(unsigned int) currentCommandId,
currentCommandIdUsed ? " (used)" : "",
buf.data)));
diff --git a/src/backend/access/transam/xlogrecovery.c b/src/backend/access/transam/xlogrecovery.c
index 39ef865ed9..5dba6775aa 100644
--- a/src/backend/access/transam/xlogrecovery.c
+++ b/src/backend/access/transam/xlogrecovery.c
@@ -525,8 +525,8 @@ InitWalRecovery(ControlFileData *ControlFile, bool *wasShutdown_ptr,
(errmsg("entering standby mode")));
else if (recoveryTarget == RECOVERY_TARGET_XID)
ereport(LOG,
- (errmsg("starting point-in-time recovery to XID %u",
- recoveryTargetXid)));
+ (errmsg("starting point-in-time recovery to XID %llu",
+ (unsigned long long) recoveryTargetXid)));
else if (recoveryTarget == RECOVERY_TARGET_TIME)
ereport(LOG,
(errmsg("starting point-in-time recovery to %s",
@@ -815,18 +815,21 @@ InitWalRecovery(ControlFileData *ControlFile, bool *wasShutdown_ptr,
U64FromFullTransactionId(checkPoint.nextXid),
checkPoint.nextOid)));
ereport(DEBUG1,
- (errmsg_internal("next MultiXactId: %u; next MultiXactOffset: %u",
- checkPoint.nextMulti, checkPoint.nextMultiOffset)));
+ (errmsg_internal("next MultiXactId: %llu; next MultiXactOffset: %llu",
+ (unsigned long long) checkPoint.nextMulti,
+ (unsigned long long) checkPoint.nextMultiOffset)));
ereport(DEBUG1,
- (errmsg_internal("oldest unfrozen transaction ID: %u, in database %u",
- checkPoint.oldestXid, checkPoint.oldestXidDB)));
+ (errmsg_internal("oldest unfrozen transaction ID: %llu, in database %u",
+ (unsigned long long) checkPoint.oldestXid,
+ checkPoint.oldestXidDB)));
ereport(DEBUG1,
- (errmsg_internal("oldest MultiXactId: %u, in database %u",
- checkPoint.oldestMulti, checkPoint.oldestMultiDB)));
+ (errmsg_internal("oldest MultiXactId: %llu, in database %u",
+ (unsigned long long) checkPoint.oldestMulti,
+ checkPoint.oldestMultiDB)));
ereport(DEBUG1,
- (errmsg_internal("commit timestamp Xid oldest/newest: %u/%u",
- checkPoint.oldestCommitTsXid,
- checkPoint.newestCommitTsXid)));
+ (errmsg_internal("commit timestamp Xid oldest/newest: %llu/%llu",
+ (unsigned long long) checkPoint.oldestCommitTsXid,
+ (unsigned long long) checkPoint.newestCommitTsXid)));
if (!TransactionIdIsNormal(XidFromFullTransactionId(checkPoint.nextXid)))
ereport(PANIC,
(errmsg("invalid next transaction ID")));
@@ -2518,15 +2521,15 @@ recoveryStopsBefore(XLogReaderState *record)
if (isCommit)
{
ereport(LOG,
- (errmsg("recovery stopping before commit of transaction %u, time %s",
- recoveryStopXid,
+ (errmsg("recovery stopping before commit of transaction %llu, time %s",
+ (unsigned long long) recoveryStopXid,
timestamptz_to_str(recoveryStopTime))));
}
else
{
ereport(LOG,
- (errmsg("recovery stopping before abort of transaction %u, time %s",
- recoveryStopXid,
+ (errmsg("recovery stopping before abort of transaction %llu, time %s",
+ (unsigned long long) recoveryStopXid,
timestamptz_to_str(recoveryStopTime))));
}
}
@@ -2663,16 +2666,16 @@ recoveryStopsAfter(XLogReaderState *record)
xact_info == XLOG_XACT_COMMIT_PREPARED)
{
ereport(LOG,
- (errmsg("recovery stopping after commit of transaction %u, time %s",
- recoveryStopXid,
+ (errmsg("recovery stopping after commit of transaction %llu, time %s",
+ (unsigned long long) recoveryStopXid,
timestamptz_to_str(recoveryStopTime))));
}
else if (xact_info == XLOG_XACT_ABORT ||
xact_info == XLOG_XACT_ABORT_PREPARED)
{
ereport(LOG,
- (errmsg("recovery stopping after abort of transaction %u, time %s",
- recoveryStopXid,
+ (errmsg("recovery stopping after abort of transaction %llu, time %s",
+ (unsigned long long) recoveryStopXid,
timestamptz_to_str(recoveryStopTime))));
}
return true;
@@ -2707,9 +2710,9 @@ getRecoveryStopReason(void)
if (recoveryTarget == RECOVERY_TARGET_XID)
snprintf(reason, sizeof(reason),
- "%s transaction %u",
+ "%s transaction %llu",
recoveryStopAfter ? "after" : "before",
- recoveryStopXid);
+ (unsigned long long) recoveryStopXid);
else if (recoveryTarget == RECOVERY_TARGET_TIME)
snprintf(reason, sizeof(reason),
"%s %s\n",
diff --git a/src/backend/replication/logical/logical.c b/src/backend/replication/logical/logical.c
index 788769dd73..6d95c2f612 100644
--- a/src/backend/replication/logical/logical.c
+++ b/src/backend/replication/logical/logical.c
@@ -1616,8 +1616,8 @@ LogicalIncreaseXminForSlot(XLogRecPtr current_lsn, TransactionId xmin)
SpinLockRelease(&slot->mutex);
if (got_new_xmin)
- elog(DEBUG1, "got new catalog xmin %u at %X/%X", xmin,
- LSN_FORMAT_ARGS(current_lsn));
+ elog(DEBUG1, "got new catalog xmin %llu at %X/%X",
+ (unsigned long long) xmin, LSN_FORMAT_ARGS(current_lsn));
/* candidate already valid with the current flush position, apply */
if (updated_xmin)
diff --git a/src/backend/replication/logical/reorderbuffer.c b/src/backend/replication/logical/reorderbuffer.c
index 6887dc23f6..2268a9af2a 100644
--- a/src/backend/replication/logical/reorderbuffer.c
+++ b/src/backend/replication/logical/reorderbuffer.c
@@ -2449,8 +2449,8 @@ ReorderBufferProcessTXN(ReorderBuffer *rb, ReorderBufferTXN *txn,
/* this is just a sanity check against bad output plugin behaviour */
if (GetCurrentTransactionIdIfAny() != InvalidTransactionId)
- elog(ERROR, "output plugin used XID %u",
- GetCurrentTransactionId());
+ elog(ERROR, "output plugin used XID %llu",
+ (unsigned long long) GetCurrentTransactionId());
/*
* Remember the command ID and snapshot for the next set of changes in
@@ -2888,7 +2888,8 @@ ReorderBufferAbortOld(ReorderBuffer *rb, TransactionId oldestRunningXid)
if (TransactionIdPrecedes(txn->xid, oldestRunningXid))
{
- elog(DEBUG2, "aborting old transaction %u", txn->xid);
+ elog(DEBUG2, "aborting old transaction %llu",
+ (unsigned long long) txn->xid);
/* remove potential on-disk data, and deallocate this tx */
ReorderBufferCleanupTXN(rb, txn);
@@ -3530,8 +3531,8 @@ ReorderBufferSerializeTXN(ReorderBuffer *rb, ReorderBufferTXN *txn)
Size spilled = 0;
Size size = txn->size;
- elog(DEBUG2, "spill %u changes in XID %u to disk",
- (uint32) txn->nentries_mem, txn->xid);
+ elog(DEBUG2, "spill %u changes in XID %llu to disk",
+ (uint32) txn->nentries_mem, (unsigned long long) txn->xid);
/* do the same to all child TXs */
dlist_foreach(subtxn_i, &txn->subtxns)
@@ -3807,8 +3808,8 @@ ReorderBufferSerializeChange(ReorderBuffer *rb, ReorderBufferTXN *txn,
errno = save_errno ? save_errno : ENOSPC;
ereport(ERROR,
(errcode_for_file_access(),
- errmsg("could not write to data file for XID %u: %m",
- txn->xid)));
+ errmsg("could not write to data file for XID %llu: %m",
+ (unsigned long long) txn->xid)));
}
pgstat_report_wait_end();
@@ -4450,9 +4451,9 @@ ReorderBufferSerializedPath(char *path, ReplicationSlot *slot, TransactionId xid
XLogSegNoOffsetToRecPtr(segno, 0, wal_segment_size, recptr);
- snprintf(path, MAXPGPATH, "pg_replslot/%s/xid-%u-lsn-%X-%X.spill",
+ snprintf(path, MAXPGPATH, "pg_replslot/%s/xid-%llu-lsn-%X-%X.spill",
NameStr(MyReplicationSlot->data.name),
- xid, LSN_FORMAT_ARGS(recptr));
+ (unsigned long long) xid, LSN_FORMAT_ARGS(recptr));
}
/*
@@ -5081,8 +5082,8 @@ UpdateLogicalMappings(HTAB *tuplecid_data, Oid relid, Snapshot snapshot)
{
RewriteMappingFile *f = (RewriteMappingFile *) lfirst(file);
- elog(DEBUG1, "applying mapping: \"%s\" in %u", f->fname,
- snapshot->subxip[0]);
+ elog(DEBUG1, "applying mapping: \"%s\" in %llu", f->fname,
+ (unsigned long long) snapshot->subxip[0]);
ApplyLogicalMappingFile(tuplecid_data, relid, f->fname);
pfree(f);
}
diff --git a/src/backend/replication/logical/snapbuild.c b/src/backend/replication/logical/snapbuild.c
index 1119a12db9..115e066de6 100644
--- a/src/backend/replication/logical/snapbuild.c
+++ b/src/backend/replication/logical/snapbuild.c
@@ -847,8 +847,8 @@ SnapBuildDistributeNewCatalogSnapshot(SnapBuild *builder, XLogRecPtr lsn)
if (rbtxn_prepared(txn) || rbtxn_skip_prepared(txn))
continue;
- elog(DEBUG2, "adding a new snapshot to %u at %X/%X",
- txn->xid, LSN_FORMAT_ARGS(lsn));
+ elog(DEBUG2, "adding a new snapshot to %llu at %X/%X",
+ (unsigned long long) txn->xid, LSN_FORMAT_ARGS(lsn));
/*
* increase the snapshot's refcount for the transaction we are handing
@@ -922,9 +922,9 @@ SnapBuildPurgeCommittedTxn(SnapBuild *builder)
memcpy(builder->committed.xip, workspace,
surviving_xids * sizeof(TransactionId));
- elog(DEBUG3, "purged committed transactions from %u to %u, xmin: %u, xmax: %u",
+ elog(DEBUG3, "purged committed transactions from %u to %u, xmin: %llu, xmax: %llu",
(uint32) builder->committed.xcnt, (uint32) surviving_xids,
- builder->xmin, builder->xmax);
+ (unsigned long long) builder->xmin, (unsigned long long) builder->xmax);
builder->committed.xcnt = surviving_xids;
pfree(workspace);
@@ -988,8 +988,8 @@ SnapBuildCommitTxn(SnapBuild *builder, XLogRecPtr lsn, TransactionId xid,
sub_needs_timetravel = true;
needs_snapshot = true;
- elog(DEBUG1, "found subtransaction %u:%u with catalog changes",
- xid, subxid);
+ elog(DEBUG1, "found subtransaction %llu:%llu with catalog changes",
+ (unsigned long long) xid, (unsigned long long) subxid);
SnapBuildAddCommittedTxn(builder, subxid);
@@ -1014,8 +1014,8 @@ SnapBuildCommitTxn(SnapBuild *builder, XLogRecPtr lsn, TransactionId xid,
/* if top-level modified catalog, it'll need a snapshot */
if (ReorderBufferXidHasCatalogChanges(builder->reorder, xid))
{
- elog(DEBUG2, "found top level transaction %u, with catalog changes",
- xid);
+ elog(DEBUG2, "found top level transaction %llu, with catalog changes",
+ (unsigned long long) xid);
needs_snapshot = true;
needs_timetravel = true;
SnapBuildAddCommittedTxn(builder, xid);
@@ -1027,7 +1027,8 @@ SnapBuildCommitTxn(SnapBuild *builder, XLogRecPtr lsn, TransactionId xid,
}
else if (needs_timetravel)
{
- elog(DEBUG2, "forced transaction %u to do timetravel", xid);
+ elog(DEBUG2, "forced transaction %llu to do timetravel",
+ (unsigned long long) xid);
SnapBuildAddCommittedTxn(builder, xid);
}
@@ -1149,8 +1150,11 @@ SnapBuildProcessRunningXacts(SnapBuild *builder, XLogRecPtr lsn, xl_running_xact
xmin = ReorderBufferGetOldestXmin(builder->reorder);
if (xmin == InvalidTransactionId)
xmin = running->oldestRunningXid;
- elog(DEBUG3, "xmin: %u, xmax: %u, oldest running: %u, oldest xmin: %u",
- builder->xmin, builder->xmax, running->oldestRunningXid, xmin);
+ elog(DEBUG3, "xmin: %llu, xmax: %llu, oldest running: %llu, oldest xmin: %llu",
+ (unsigned long long) builder->xmin,
+ (unsigned long long) builder->xmax,
+ (unsigned long long) running->oldestRunningXid,
+ (unsigned long long) xmin);
LogicalIncreaseXminForSlot(lsn, xmin);
/*
@@ -1239,8 +1243,9 @@ SnapBuildFindSnapshot(SnapBuild *builder, XLogRecPtr lsn, xl_running_xacts *runn
ereport(DEBUG1,
(errmsg_internal("skipping snapshot at %X/%X while building logical decoding snapshot, xmin horizon too low",
LSN_FORMAT_ARGS(lsn)),
- errdetail_internal("initial xmin horizon of %u vs the snapshot's %u",
- builder->initial_xmin_horizon, running->oldestRunningXid)));
+ errdetail_internal("initial xmin horizon of %llu vs the snapshot's %llu",
+ (unsigned long long) builder->initial_xmin_horizon,
+ (unsigned long long) running->oldestRunningXid)));
SnapBuildWaitSnapshot(running, builder->initial_xmin_horizon);
@@ -1322,8 +1327,9 @@ SnapBuildFindSnapshot(SnapBuild *builder, XLogRecPtr lsn, xl_running_xacts *runn
ereport(LOG,
(errmsg("logical decoding found initial starting point at %X/%X",
LSN_FORMAT_ARGS(lsn)),
- errdetail("Waiting for transactions (approximately %d) older than %u to end.",
- running->xcnt, running->nextXid)));
+ errdetail("Waiting for transactions (approximately %d) older than %llu to end.",
+ running->xcnt,
+ (unsigned long long) running->nextXid)));
SnapBuildWaitSnapshot(running, running->nextXid);
}
@@ -1346,8 +1352,9 @@ SnapBuildFindSnapshot(SnapBuild *builder, XLogRecPtr lsn, xl_running_xacts *runn
ereport(LOG,
(errmsg("logical decoding found initial consistent point at %X/%X",
LSN_FORMAT_ARGS(lsn)),
- errdetail("Waiting for transactions (approximately %d) older than %u to end.",
- running->xcnt, running->nextXid)));
+ errdetail("Waiting for transactions (approximately %d) older than %llu to end.",
+ running->xcnt,
+ (unsigned long long) running->nextXid)));
SnapBuildWaitSnapshot(running, running->nextXid);
}
diff --git a/src/backend/replication/logical/worker.c b/src/backend/replication/logical/worker.c
index 4171371296..a8811d3fa2 100644
--- a/src/backend/replication/logical/worker.c
+++ b/src/backend/replication/logical/worker.c
@@ -1088,7 +1088,8 @@ apply_handle_stream_prepare(StringInfo s)
logicalrep_read_stream_prepare(s, &prepare_data);
set_apply_error_context_xact(prepare_data.xid, prepare_data.prepare_lsn);
- elog(DEBUG1, "received prepare for streamed transaction %u", prepare_data.xid);
+ elog(DEBUG1, "received prepare for streamed transaction %llu",
+ (unsigned long long) prepare_data.xid);
/* Replay all the spooled operations. */
apply_spooled_messages(prepare_data.xid, prepare_data.prepare_lsn);
@@ -1479,7 +1480,8 @@ apply_handle_stream_commit(StringInfo s)
xid = logicalrep_read_stream_commit(s, &commit_data);
set_apply_error_context_xact(xid, commit_data.commit_lsn);
- elog(DEBUG1, "received commit for streamed transaction %u", xid);
+ elog(DEBUG1, "received commit for streamed transaction %llu",
+ (unsigned long long) xid);
apply_spooled_messages(xid, commit_data.commit_lsn);
@@ -3295,14 +3297,16 @@ subxact_info_add(TransactionId xid)
static inline void
subxact_filename(char *path, Oid subid, TransactionId xid)
{
- snprintf(path, MAXPGPATH, "%u-%u.subxacts", subid, xid);
+ snprintf(path, MAXPGPATH, "%u-%llu.subxacts", subid,
+ (unsigned long long) xid);
}
/* format filename for file containing serialized changes */
static inline void
changes_filename(char *path, Oid subid, TransactionId xid)
{
- snprintf(path, MAXPGPATH, "%u-%u.changes", subid, xid);
+ snprintf(path, MAXPGPATH, "%u-%llu.changes", subid,
+ (unsigned long long) xid);
}
/*
@@ -3464,7 +3468,7 @@ TwoPhaseTransactionGid(Oid subid, TransactionId xid, char *gid, int szgid)
(errcode(ERRCODE_PROTOCOL_VIOLATION),
errmsg_internal("invalid two-phase transaction ID")));
- snprintf(gid, szgid, "pg_gid_%u_%u", subid, xid);
+ snprintf(gid, szgid, "pg_gid_%u_%llu", subid, (unsigned long long) xid);
}
/*
@@ -3980,33 +3984,33 @@ apply_error_callback(void *arg)
errarg->origin_name,
logicalrep_message_type(errarg->command));
else if (XLogRecPtrIsInvalid(errarg->finish_lsn))
- errcontext("processing remote data for replication origin \"%s\" during \"%s\" in transaction %u",
+ errcontext("processing remote data for replication origin \"%s\" during \"%s\" in transaction %llu",
errarg->origin_name,
logicalrep_message_type(errarg->command),
- errarg->remote_xid);
+ (unsigned long long) errarg->remote_xid);
else
- errcontext("processing remote data for replication origin \"%s\" during \"%s\" in transaction %u finished at %X/%X",
+ errcontext("processing remote data for replication origin \"%s\" during \"%s\" in transaction %llu finished at %X/%X",
errarg->origin_name,
logicalrep_message_type(errarg->command),
- errarg->remote_xid,
+ (unsigned long long) errarg->remote_xid,
LSN_FORMAT_ARGS(errarg->finish_lsn));
}
else if (errarg->remote_attnum < 0)
- errcontext("processing remote data for replication origin \"%s\" during \"%s\" for replication target relation \"%s.%s\" in transaction %u finished at %X/%X",
+ errcontext("processing remote data for replication origin \"%s\" during \"%s\" for replication target relation \"%s.%s\" in transaction %llu finished at %X/%X",
errarg->origin_name,
logicalrep_message_type(errarg->command),
errarg->rel->remoterel.nspname,
errarg->rel->remoterel.relname,
- errarg->remote_xid,
+ (unsigned long long) errarg->remote_xid,
LSN_FORMAT_ARGS(errarg->finish_lsn));
else
- errcontext("processing remote data for replication origin \"%s\" during \"%s\" for replication target relation \"%s.%s\" column \"%s\" in transaction %u finished at %X/%X",
+ errcontext("processing remote data for replication origin \"%s\" during \"%s\" for replication target relation \"%s.%s\" column \"%s\" in transaction %llu finished at %X/%X",
errarg->origin_name,
logicalrep_message_type(errarg->command),
errarg->rel->remoterel.nspname,
errarg->rel->remoterel.relname,
errarg->rel->remoterel.attnames[errarg->remote_attnum],
- errarg->remote_xid,
+ (unsigned long long) errarg->remote_xid,
LSN_FORMAT_ARGS(errarg->finish_lsn));
}
diff --git a/src/backend/replication/walreceiver.c b/src/backend/replication/walreceiver.c
index 3c9411e221..9c8a58a776 100644
--- a/src/backend/replication/walreceiver.c
+++ b/src/backend/replication/walreceiver.c
@@ -1216,8 +1216,9 @@ XLogWalRcvSendHSFeedback(bool immed)
if (nextXid < catalog_xmin)
catalog_xmin_epoch--;
- elog(DEBUG2, "sending hot standby feedback xmin %u epoch %u catalog_xmin %u catalog_xmin_epoch %u",
- xmin, xmin_epoch, catalog_xmin, catalog_xmin_epoch);
+ elog(DEBUG2, "sending hot standby feedback xmin %llu epoch %u catalog_xmin %llu catalog_xmin_epoch %u",
+ (unsigned long long) xmin, xmin_epoch,
+ (unsigned long long) catalog_xmin, catalog_xmin_epoch);
/* Construct the message and send it. */
resetStringInfo(&reply_message);
diff --git a/src/backend/replication/walsender.c b/src/backend/replication/walsender.c
index 63a818140b..404c0e783e 100644
--- a/src/backend/replication/walsender.c
+++ b/src/backend/replication/walsender.c
@@ -2266,10 +2266,10 @@ ProcessStandbyHSFeedbackMessage(void)
/* Copy because timestamptz_to_str returns a static buffer */
replyTimeStr = pstrdup(timestamptz_to_str(replyTime));
- elog(DEBUG2, "hot standby feedback xmin %u epoch %u, catalog_xmin %u epoch %u reply_time %s",
- feedbackXmin,
+ elog(DEBUG2, "hot standby feedback xmin %llu epoch %u, catalog_xmin %llu epoch %u reply_time %s",
+ (unsigned long long) feedbackXmin,
feedbackEpoch,
- feedbackCatalogXmin,
+ (unsigned long long) feedbackCatalogXmin,
feedbackCatalogEpoch,
replyTimeStr);
diff --git a/src/backend/storage/ipc/procarray.c b/src/backend/storage/ipc/procarray.c
index 25c310f675..611054c7a6 100644
--- a/src/backend/storage/ipc/procarray.c
+++ b/src/backend/storage/ipc/procarray.c
@@ -1101,9 +1101,9 @@ ProcArrayApplyRecoveryInfo(RunningTransactions running)
else
elog(trace_recovery(DEBUG1),
"recovery snapshot waiting for non-overflowed snapshot or "
- "until oldest active xid on standby is at least %u (now %u)",
- standbySnapshotPendingXmin,
- running->oldestRunningXid);
+ "until oldest active xid on standby is at least %llu (now %llu)",
+ (unsigned long long) standbySnapshotPendingXmin,
+ (unsigned long long) running->oldestRunningXid);
return;
}
}
@@ -1187,8 +1187,8 @@ ProcArrayApplyRecoveryInfo(RunningTransactions running)
if (i > 0 && TransactionIdEquals(xids[i - 1], xids[i]))
{
elog(DEBUG1,
- "found duplicated transaction %u for KnownAssignedXids insertion",
- xids[i]);
+ "found duplicated transaction %llu for KnownAssignedXids insertion",
+ (unsigned long long) xids[i]);
continue;
}
KnownAssignedXidsAdd(xids[i], xids[i], true);
@@ -1272,9 +1272,9 @@ ProcArrayApplyRecoveryInfo(RunningTransactions running)
else
elog(trace_recovery(DEBUG1),
"recovery snapshot waiting for non-overflowed snapshot or "
- "until oldest active xid on standby is at least %u (now %u)",
- standbySnapshotPendingXmin,
- running->oldestRunningXid);
+ "until oldest active xid on standby is at least %llu (now %llu)",
+ (unsigned long long) standbySnapshotPendingXmin,
+ (unsigned long long) running->oldestRunningXid);
}
/*
@@ -4005,7 +4005,8 @@ XidCacheRemoveRunningXids(TransactionId xid,
* debug warning.
*/
if (j < 0 && !MyProc->subxidStatus.overflowed)
- elog(WARNING, "did not find subXID %u in MyProc", anxid);
+ elog(WARNING, "did not find subXID %llu in MyProc",
+ (unsigned long long) anxid);
}
for (j = MyProc->subxidStatus.count - 1; j >= 0; j--)
@@ -4021,7 +4022,8 @@ XidCacheRemoveRunningXids(TransactionId xid,
}
/* Ordinarily we should have found it, unless the cache has overflowed */
if (j < 0 && !MyProc->subxidStatus.overflowed)
- elog(WARNING, "did not find subXID %u in MyProc", xid);
+ elog(WARNING, "did not find subXID %llu in MyProc",
+ (unsigned long long) xid);
/* Also advance global latestCompletedXid while holding the lock */
MaintainLatestCompletedXid(latestXid);
@@ -4398,8 +4400,8 @@ RecordKnownAssignedTransactionIds(TransactionId xid)
Assert(TransactionIdIsValid(xid));
Assert(TransactionIdIsValid(latestObservedXid));
- elog(trace_recovery(DEBUG4), "record known xact %u latestObservedXid %u",
- xid, latestObservedXid);
+ elog(trace_recovery(DEBUG4), "record known xact %llu latestObservedXid %llu",
+ (unsigned long long) xid, (unsigned long long) latestObservedXid);
/*
* When a newly observed xid arrives, it is frequently the case that it is
@@ -4909,7 +4911,8 @@ KnownAssignedXidsRemove(TransactionId xid)
{
Assert(TransactionIdIsValid(xid));
- elog(trace_recovery(DEBUG4), "remove KnownAssignedXid %u", xid);
+ elog(trace_recovery(DEBUG4), "remove KnownAssignedXid %llu",
+ (unsigned long long) xid);
/*
* Note: we cannot consider it an error to remove an XID that's not
@@ -4969,7 +4972,8 @@ KnownAssignedXidsRemovePreceding(TransactionId removeXid)
return;
}
- elog(trace_recovery(DEBUG4), "prune KnownAssignedXids to %u", removeXid);
+ elog(trace_recovery(DEBUG4), "prune KnownAssignedXids to %llu",
+ (unsigned long long) removeXid);
/*
* Mark entries invalid starting at the tail. Since array is sorted, we
@@ -5157,7 +5161,8 @@ KnownAssignedXidsDisplay(int trace_level)
if (KnownAssignedXidsValid[i])
{
nxids++;
- appendStringInfo(&buf, "[%d]=%u ", i, KnownAssignedXids[i]);
+ appendStringInfo(&buf, "[%d]=%llu ", i,
+ (unsigned long long) KnownAssignedXids[i]);
}
}
diff --git a/src/backend/storage/ipc/standby.c b/src/backend/storage/ipc/standby.c
index 2850867323..c90bb063bc 100644
--- a/src/backend/storage/ipc/standby.c
+++ b/src/backend/storage/ipc/standby.c
@@ -995,14 +995,14 @@ StandbyReleaseLockList(List *locks)
LOCKTAG locktag;
elog(trace_recovery(DEBUG4),
- "releasing recovery lock: xid %u db %u rel %u",
- lock->xid, lock->dbOid, lock->relOid);
+ "releasing recovery lock: xid %llu db %u rel %u",
+ (unsigned long long) lock->xid, lock->dbOid, lock->relOid);
SET_LOCKTAG_RELATION(locktag, lock->dbOid, lock->relOid);
if (!LockRelease(&locktag, AccessExclusiveLock, true))
{
elog(LOG,
- "RecoveryLockLists contains entry for lock no longer recorded by lock manager: xid %u database %u relation %u",
- lock->xid, lock->dbOid, lock->relOid);
+ "RecoveryLockLists contains entry for lock no longer recorded by lock manager: xid %llu database %u relation %u",
+ (unsigned long long) lock->xid, lock->dbOid, lock->relOid);
Assert(false);
}
}
@@ -1306,20 +1306,20 @@ LogCurrentRunningXacts(RunningTransactions CurrRunningXacts)
if (CurrRunningXacts->subxid_overflow)
elog(trace_recovery(DEBUG2),
- "snapshot of %u running transactions overflowed (lsn %X/%X oldest xid %u latest complete %u next xid %u)",
+ "snapshot of %u running transactions overflowed (lsn %X/%X oldest xid %llu latest complete %llu next xid %llu)",
CurrRunningXacts->xcnt,
LSN_FORMAT_ARGS(recptr),
- CurrRunningXacts->oldestRunningXid,
- CurrRunningXacts->latestCompletedXid,
- CurrRunningXacts->nextXid);
+ (unsigned long long) CurrRunningXacts->oldestRunningXid,
+ (unsigned long long) CurrRunningXacts->latestCompletedXid,
+ (unsigned long long) CurrRunningXacts->nextXid);
else
elog(trace_recovery(DEBUG2),
- "snapshot of %u+%u running transaction ids (lsn %X/%X oldest xid %u latest complete %u next xid %u)",
+ "snapshot of %u+%u running transaction ids (lsn %X/%X oldest xid %llu latest complete %llu next xid %llu)",
CurrRunningXacts->xcnt, CurrRunningXacts->subxcnt,
LSN_FORMAT_ARGS(recptr),
- CurrRunningXacts->oldestRunningXid,
- CurrRunningXacts->latestCompletedXid,
- CurrRunningXacts->nextXid);
+ (unsigned long long) CurrRunningXacts->oldestRunningXid,
+ (unsigned long long) CurrRunningXacts->latestCompletedXid,
+ (unsigned long long) CurrRunningXacts->nextXid);
/*
* Ensure running_xacts information is synced to disk not too far in the
diff --git a/src/backend/storage/lmgr/predicate.c b/src/backend/storage/lmgr/predicate.c
index bea5d810e0..f0e4ac8898 100644
--- a/src/backend/storage/lmgr/predicate.c
+++ b/src/backend/storage/lmgr/predicate.c
@@ -4168,7 +4168,8 @@ CheckForSerializableConflictOut(Relation relation, TransactionId xid, Snapshot s
ereport(ERROR,
(errcode(ERRCODE_T_R_SERIALIZATION_FAILURE),
errmsg("could not serialize access due to read/write dependencies among transactions"),
- errdetail_internal("Reason code: Canceled on conflict out to old pivot %u.", xid),
+ errdetail_internal("Reason code: Canceled on conflict out to old pivot %llu.",
+ (unsigned long long) xid),
errhint("The transaction might succeed if retried.")));
if (SxactHasSummaryConflictIn(MySerializableXact)
@@ -4176,7 +4177,8 @@ CheckForSerializableConflictOut(Relation relation, TransactionId xid, Snapshot s
ereport(ERROR,
(errcode(ERRCODE_T_R_SERIALIZATION_FAILURE),
errmsg("could not serialize access due to read/write dependencies among transactions"),
- errdetail_internal("Reason code: Canceled on identification as a pivot, with conflict out to old committed transaction %u.", xid),
+ errdetail_internal("Reason code: Canceled on identification as a pivot, with conflict out to old committed transaction %llu.",
+ (unsigned long long) xid),
errhint("The transaction might succeed if retried.")));
MySerializableXact->flags |= SXACT_FLAG_SUMMARY_CONFLICT_OUT;
@@ -4806,7 +4808,8 @@ OnConflict_CheckForSerializationFailure(const SERIALIZABLEXACT *reader,
ereport(ERROR,
(errcode(ERRCODE_T_R_SERIALIZATION_FAILURE),
errmsg("could not serialize access due to read/write dependencies among transactions"),
- errdetail_internal("Reason code: Canceled on conflict out to pivot %u, during read.", writer->topXid),
+ errdetail_internal("Reason code: Canceled on conflict out to pivot %llu, during read.",
+ (unsigned long long) writer->topXid),
errhint("The transaction might succeed if retried.")));
}
writer->flags |= SXACT_FLAG_DOOMED;
diff --git a/src/backend/utils/adt/lockfuncs.c b/src/backend/utils/adt/lockfuncs.c
index 023a004ac8..359cde8772 100644
--- a/src/backend/utils/adt/lockfuncs.c
+++ b/src/backend/utils/adt/lockfuncs.c
@@ -79,7 +79,8 @@ VXIDGetDatum(BackendId bid, LocalTransactionId lxid)
*/
char vxidstr[32];
- snprintf(vxidstr, sizeof(vxidstr), "%d/%u", bid, lxid);
+ snprintf(vxidstr, sizeof(vxidstr), "%d/%llu", bid,
+ (unsigned long long) lxid);
return CStringGetTextDatum(vxidstr);
}
diff --git a/src/backend/utils/error/csvlog.c b/src/backend/utils/error/csvlog.c
index 5c49bc4209..5e7d842da3 100644
--- a/src/backend/utils/error/csvlog.c
+++ b/src/backend/utils/error/csvlog.c
@@ -153,11 +153,12 @@ write_csvlog(ErrorData *edata)
/* Virtual transaction id */
/* keep VXID format in sync with lockfuncs.c */
if (MyProc != NULL && MyProc->backendId != InvalidBackendId)
- appendStringInfo(&buf, "%d/%u", MyProc->backendId, MyProc->lxid);
+ appendStringInfo(&buf, "%d/%llu", MyProc->backendId,
+ (unsigned long long) MyProc->lxid);
appendStringInfoChar(&buf, ',');
/* Transaction id */
- appendStringInfo(&buf, "%u", GetTopTransactionIdIfAny());
+ appendStringInfo(&buf, "%llu", (unsigned long long) GetTopTransactionIdIfAny());
appendStringInfoChar(&buf, ',');
/* Error severity */
diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c
index 55ee5423af..b6c6edc206 100644
--- a/src/backend/utils/error/elog.c
+++ b/src/backend/utils/error/elog.c
@@ -2752,12 +2752,14 @@ log_line_prefix(StringInfo buf, ErrorData *edata)
{
char strfbuf[128];
- snprintf(strfbuf, sizeof(strfbuf) - 1, "%d/%u",
- MyProc->backendId, MyProc->lxid);
+ snprintf(strfbuf, sizeof(strfbuf) - 1, "%d/%llu",
+ MyProc->backendId,
+ (unsigned long long) MyProc->lxid);
appendStringInfo(buf, "%*s", padding, strfbuf);
}
else
- appendStringInfo(buf, "%d/%u", MyProc->backendId, MyProc->lxid);
+ appendStringInfo(buf, "%d/%llu", MyProc->backendId,
+ (unsigned long long) MyProc->lxid);
}
else if (padding != 0)
appendStringInfoSpaces(buf,
@@ -2765,9 +2767,11 @@ log_line_prefix(StringInfo buf, ErrorData *edata)
break;
case 'x':
if (padding != 0)
- appendStringInfo(buf, "%*u", padding, GetTopTransactionIdIfAny());
+ appendStringInfo(buf, "%*llu", padding,
+ (unsigned long long) GetTopTransactionIdIfAny());
else
- appendStringInfo(buf, "%u", GetTopTransactionIdIfAny());
+ appendStringInfo(buf, "%llu",
+ (unsigned long long) GetTopTransactionIdIfAny());
break;
case 'e':
if (padding != 0)
diff --git a/src/backend/utils/error/jsonlog.c b/src/backend/utils/error/jsonlog.c
index 27ad7686d8..df1ed14c02 100644
--- a/src/backend/utils/error/jsonlog.c
+++ b/src/backend/utils/error/jsonlog.c
@@ -198,12 +198,12 @@ write_jsonlog(ErrorData *edata)
/* Virtual transaction id */
/* keep VXID format in sync with lockfuncs.c */
if (MyProc != NULL && MyProc->backendId != InvalidBackendId)
- appendJSONKeyValueFmt(&buf, "vxid", true, "%d/%u", MyProc->backendId,
- MyProc->lxid);
+ appendJSONKeyValueFmt(&buf, "vxid", true, "%d/%llu", MyProc->backendId,
+ (unsigned long long) MyProc->lxid);
/* Transaction id */
- appendJSONKeyValueFmt(&buf, "txid", false, "%u",
- GetTopTransactionIdIfAny());
+ appendJSONKeyValueFmt(&buf, "txid", false, "%llu",
+ (unsigned long long) GetTopTransactionIdIfAny());
/* Error severity */
if (edata->elevel)
diff --git a/src/backend/utils/misc/pg_controldata.c b/src/backend/utils/misc/pg_controldata.c
index 781f8b8758..88f6f33ef5 100644
--- a/src/backend/utils/misc/pg_controldata.c
+++ b/src/backend/utils/misc/pg_controldata.c
@@ -164,9 +164,9 @@ pg_control_checkpoint(PG_FUNCTION_ARGS)
values[5] = BoolGetDatum(ControlFile->checkPointCopy.fullPageWrites);
nulls[5] = false;
- values[6] = CStringGetTextDatum(psprintf("%u:%u",
+ values[6] = CStringGetTextDatum(psprintf("%u:%llu",
EpochFromFullTransactionId(ControlFile->checkPointCopy.nextXid),
- XidFromFullTransactionId(ControlFile->checkPointCopy.nextXid)));
+ (unsigned long long) XidFromFullTransactionId(ControlFile->checkPointCopy.nextXid)));
nulls[6] = false;
values[7] = ObjectIdGetDatum(ControlFile->checkPointCopy.nextOid);
diff --git a/src/backend/utils/time/snapmgr.c b/src/backend/utils/time/snapmgr.c
index 5bc2a15160..8e03a9f0f4 100644
--- a/src/backend/utils/time/snapmgr.c
+++ b/src/backend/utils/time/snapmgr.c
@@ -1202,14 +1202,15 @@ ExportSnapshot(Snapshot snapshot)
*/
initStringInfo(&buf);
- appendStringInfo(&buf, "vxid:%d/%u\n", MyProc->backendId, MyProc->lxid);
+ appendStringInfo(&buf, "vxid:%d/%llu\n", MyProc->backendId,
+ (unsigned long long) MyProc->lxid);
appendStringInfo(&buf, "pid:%d\n", MyProcPid);
appendStringInfo(&buf, "dbid:%u\n", MyDatabaseId);
appendStringInfo(&buf, "iso:%d\n", XactIsoLevel);
appendStringInfo(&buf, "ro:%d\n", XactReadOnly);
- appendStringInfo(&buf, "xmin:%u\n", snapshot->xmin);
- appendStringInfo(&buf, "xmax:%u\n", snapshot->xmax);
+ appendStringInfo(&buf, "xmin:%llu\n", (unsigned long long) snapshot->xmin);
+ appendStringInfo(&buf, "xmax:%llu\n", (unsigned long long) snapshot->xmax);
/*
* We must include our own top transaction ID in the top-xid data, since
@@ -1226,9 +1227,10 @@ ExportSnapshot(Snapshot snapshot)
TransactionIdPrecedes(topXid, snapshot->xmax)) ? 1 : 0;
appendStringInfo(&buf, "xcnt:%d\n", snapshot->xcnt + addTopXid);
for (i = 0; i < snapshot->xcnt; i++)
- appendStringInfo(&buf, "xip:%u\n", snapshot->xip[i]);
+ appendStringInfo(&buf, "xip:%llu\n",
+ (unsigned long long) snapshot->xip[i]);
if (addTopXid)
- appendStringInfo(&buf, "xip:%u\n", topXid);
+ appendStringInfo(&buf, "xip:%llu\n", (unsigned long long) topXid);
/*
* Similarly, we add our subcommitted child XIDs to the subxid data. Here,
@@ -1242,9 +1244,11 @@ ExportSnapshot(Snapshot snapshot)
appendStringInfoString(&buf, "sof:0\n");
appendStringInfo(&buf, "sxcnt:%d\n", snapshot->subxcnt + nchildren);
for (i = 0; i < snapshot->subxcnt; i++)
- appendStringInfo(&buf, "sxp:%u\n", snapshot->subxip[i]);
+ appendStringInfo(&buf, "sxp:%llu\n",
+ (unsigned long long) snapshot->subxip[i]);
for (i = 0; i < nchildren; i++)
- appendStringInfo(&buf, "sxp:%u\n", children[i]);
+ appendStringInfo(&buf, "sxp:%llu\n",
+ (unsigned long long) children[i]);
}
appendStringInfo(&buf, "rec:%u\n", snapshot->takenDuringRecovery);
diff --git a/src/bin/pg_amcheck/t/004_verify_heapam.pl b/src/bin/pg_amcheck/t/004_verify_heapam.pl
index bbada168f0..8050811105 100644
--- a/src/bin/pg_amcheck/t/004_verify_heapam.pl
+++ b/src/bin/pg_amcheck/t/004_verify_heapam.pl
@@ -362,7 +362,7 @@ for (my $tupidx = 0; $tupidx < ROWCOUNT; $tupidx++)
# Expected corruption report
push @expected,
- qr/${header}xmin $xmin precedes relation freeze threshold 0:\d+/;
+ qr/${header}xmin $xmin precedes relation freeze threshold \d+/;
}
if ($offnum == 2)
{
@@ -373,7 +373,7 @@ for (my $tupidx = 0; $tupidx < ROWCOUNT; $tupidx++)
$tup->{t_infomask} &= ~HEAP_XMIN_INVALID;
push @expected,
- qr/${$header}xmin $xmin precedes oldest valid transaction ID 0:\d+/;
+ qr/${$header}xmin $xmin precedes oldest valid transaction ID \d+/;
}
elsif ($offnum == 3)
{
@@ -385,7 +385,7 @@ for (my $tupidx = 0; $tupidx < ROWCOUNT; $tupidx++)
$tup->{t_infomask} &= ~HEAP_XMIN_INVALID;
push @expected,
- qr/${$header}xmin 4026531839 equals or exceeds next valid transaction ID 0:\d+/;
+ qr/${$header}xmin 4026531839 equals or exceeds next valid transaction ID \d+/;
}
elsif ($offnum == 4)
{
@@ -394,7 +394,7 @@ for (my $tupidx = 0; $tupidx < ROWCOUNT; $tupidx++)
$tup->{t_infomask} &= ~HEAP_XMAX_INVALID;
push @expected,
- qr/${$header}xmax 4026531839 equals or exceeds next valid transaction ID 0:\d+/;
+ qr/${$header}xmax 4026531839 equals or exceeds next valid transaction ID \d+/;
}
elsif ($offnum == 5)
{
diff --git a/src/bin/pg_controldata/pg_controldata.c b/src/bin/pg_controldata/pg_controldata.c
index c390ec51ce..2c10322355 100644
--- a/src/bin/pg_controldata/pg_controldata.c
+++ b/src/bin/pg_controldata/pg_controldata.c
@@ -247,29 +247,29 @@ main(int argc, char *argv[])
ControlFile->checkPointCopy.PrevTimeLineID);
printf(_("Latest checkpoint's full_page_writes: %s\n"),
ControlFile->checkPointCopy.fullPageWrites ? _("on") : _("off"));
- printf(_("Latest checkpoint's NextXID: %u:%u\n"),
+ printf(_("Latest checkpoint's NextXID: %u:%llu\n"),
EpochFromFullTransactionId(ControlFile->checkPointCopy.nextXid),
- XidFromFullTransactionId(ControlFile->checkPointCopy.nextXid));
+ (unsigned long long) XidFromFullTransactionId(ControlFile->checkPointCopy.nextXid));
printf(_("Latest checkpoint's NextOID: %u\n"),
ControlFile->checkPointCopy.nextOid);
- printf(_("Latest checkpoint's NextMultiXactId: %u\n"),
- ControlFile->checkPointCopy.nextMulti);
- printf(_("Latest checkpoint's NextMultiOffset: %u\n"),
- ControlFile->checkPointCopy.nextMultiOffset);
- printf(_("Latest checkpoint's oldestXID: %u\n"),
- ControlFile->checkPointCopy.oldestXid);
+ printf(_("Latest checkpoint's NextMultiXactId: %llu\n"),
+ (unsigned long long) ControlFile->checkPointCopy.nextMulti);
+ printf(_("Latest checkpoint's NextMultiOffset: %llu\n"),
+ (unsigned long long) ControlFile->checkPointCopy.nextMultiOffset);
+ printf(_("Latest checkpoint's oldestXID: %llu\n"),
+ (unsigned long long) ControlFile->checkPointCopy.oldestXid);
printf(_("Latest checkpoint's oldestXID's DB: %u\n"),
ControlFile->checkPointCopy.oldestXidDB);
- printf(_("Latest checkpoint's oldestActiveXID: %u\n"),
- ControlFile->checkPointCopy.oldestActiveXid);
- printf(_("Latest checkpoint's oldestMultiXid: %u\n"),
- ControlFile->checkPointCopy.oldestMulti);
+ printf(_("Latest checkpoint's oldestActiveXID: %llu\n"),
+ (unsigned long long) ControlFile->checkPointCopy.oldestActiveXid);
+ printf(_("Latest checkpoint's oldestMultiXid: %llu\n"),
+ (unsigned long long) ControlFile->checkPointCopy.oldestMulti);
printf(_("Latest checkpoint's oldestMulti's DB: %u\n"),
ControlFile->checkPointCopy.oldestMultiDB);
- printf(_("Latest checkpoint's oldestCommitTsXid:%u\n"),
- ControlFile->checkPointCopy.oldestCommitTsXid);
- printf(_("Latest checkpoint's newestCommitTsXid:%u\n"),
- ControlFile->checkPointCopy.newestCommitTsXid);
+ printf(_("Latest checkpoint's oldestCommitTsXid:%llu\n"),
+ (unsigned long long) ControlFile->checkPointCopy.oldestCommitTsXid);
+ printf(_("Latest checkpoint's newestCommitTsXid:%llu\n"),
+ (unsigned long long) ControlFile->checkPointCopy.newestCommitTsXid);
printf(_("Time of latest checkpoint: %s\n"),
ckpttime_str);
printf(_("Fake LSN counter for unlogged rels: %X/%X\n"),
diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c
index 786d592e2b..032fe5e796 100644
--- a/src/bin/pg_dump/pg_dump.c
+++ b/src/bin/pg_dump/pg_dump.c
@@ -3115,9 +3115,10 @@ dumpDatabase(Archive *fout)
{
appendPQExpBufferStr(creaQry, "\n-- For binary upgrade, set datfrozenxid and datminmxid.\n");
appendPQExpBuffer(creaQry, "UPDATE pg_catalog.pg_database\n"
- "SET datfrozenxid = '%u', datminmxid = '%u'\n"
+ "SET datfrozenxid = '%llu', datminmxid = '%llu'\n"
"WHERE datname = ",
- frozenxid, minmxid);
+ (unsigned long long) frozenxid,
+ (unsigned long long) minmxid);
appendStringLiteralAH(creaQry, datname, fout);
appendPQExpBufferStr(creaQry, ";\n");
}
@@ -15556,9 +15557,10 @@ dumpTableSchema(Archive *fout, const TableInfo *tbinfo)
{
appendPQExpBufferStr(q, "\n-- For binary upgrade, set heap's relfrozenxid and relminmxid\n");
appendPQExpBuffer(q, "UPDATE pg_catalog.pg_class\n"
- "SET relfrozenxid = '%u', relminmxid = '%u'\n"
+ "SET relfrozenxid = '%llu', relminmxid = '%llu'\n"
"WHERE oid = ",
- tbinfo->frozenxid, tbinfo->minmxid);
+ (unsigned long long) tbinfo->frozenxid,
+ (unsigned long long) tbinfo->minmxid);
appendStringLiteralAH(q, qualrelname, fout);
appendPQExpBufferStr(q, "::pg_catalog.regclass;\n");
@@ -15570,10 +15572,11 @@ dumpTableSchema(Archive *fout, const TableInfo *tbinfo)
*/
appendPQExpBufferStr(q, "\n-- For binary upgrade, set toast's relfrozenxid and relminmxid\n");
appendPQExpBuffer(q, "UPDATE pg_catalog.pg_class\n"
- "SET relfrozenxid = '%u', relminmxid = '%u'\n"
+ "SET relfrozenxid = '%llu', relminmxid = '%llu'\n"
"WHERE oid = '%u';\n",
- tbinfo->toast_frozenxid,
- tbinfo->toast_minmxid, tbinfo->toast_oid);
+ (unsigned long long) tbinfo->toast_frozenxid,
+ (unsigned long long) tbinfo->toast_minmxid,
+ tbinfo->toast_oid);
}
}
diff --git a/src/bin/pg_resetwal/pg_resetwal.c b/src/bin/pg_resetwal/pg_resetwal.c
index d4772a2965..626f1608bc 100644
--- a/src/bin/pg_resetwal/pg_resetwal.c
+++ b/src/bin/pg_resetwal/pg_resetwal.c
@@ -178,7 +178,8 @@ main(int argc, char *argv[])
exit(1);
}
if (!TransactionIdIsNormal(set_oldest_xid))
- pg_fatal("oldest transaction ID (-u) must be greater than or equal to %u", FirstNormalTransactionId);
+ pg_fatal("oldest transaction ID (-u) must be greater than or equal to %llu",
+ (unsigned long long) FirstNormalTransactionId);
break;
case 'x':
@@ -191,7 +192,8 @@ main(int argc, char *argv[])
exit(1);
}
if (!TransactionIdIsNormal(set_xid))
- pg_fatal("transaction ID (-x) must be greater than or equal to %u", FirstNormalTransactionId);
+ pg_fatal("transaction ID (-x) must be greater than or equal to %llu",
+ (unsigned long long) FirstNormalTransactionId);
break;
case 'c':
@@ -723,29 +725,29 @@ PrintControlValues(bool guessed)
ControlFile.checkPointCopy.ThisTimeLineID);
printf(_("Latest checkpoint's full_page_writes: %s\n"),
ControlFile.checkPointCopy.fullPageWrites ? _("on") : _("off"));
- printf(_("Latest checkpoint's NextXID: %u:%u\n"),
+ printf(_("Latest checkpoint's NextXID: %u:%llu\n"),
EpochFromFullTransactionId(ControlFile.checkPointCopy.nextXid),
- XidFromFullTransactionId(ControlFile.checkPointCopy.nextXid));
+ (unsigned long long) XidFromFullTransactionId(ControlFile.checkPointCopy.nextXid));
printf(_("Latest checkpoint's NextOID: %u\n"),
ControlFile.checkPointCopy.nextOid);
- printf(_("Latest checkpoint's NextMultiXactId: %u\n"),
- ControlFile.checkPointCopy.nextMulti);
- printf(_("Latest checkpoint's NextMultiOffset: %u\n"),
- ControlFile.checkPointCopy.nextMultiOffset);
- printf(_("Latest checkpoint's oldestXID: %u\n"),
- ControlFile.checkPointCopy.oldestXid);
+ printf(_("Latest checkpoint's NextMultiXactId: %llu\n"),
+ (unsigned long long) ControlFile.checkPointCopy.nextMulti);
+ printf(_("Latest checkpoint's NextMultiOffset: %llu\n"),
+ (unsigned long long) ControlFile.checkPointCopy.nextMultiOffset);
+ printf(_("Latest checkpoint's oldestXID: %llu\n"),
+ (unsigned long long) ControlFile.checkPointCopy.oldestXid);
printf(_("Latest checkpoint's oldestXID's DB: %u\n"),
ControlFile.checkPointCopy.oldestXidDB);
- printf(_("Latest checkpoint's oldestActiveXID: %u\n"),
- ControlFile.checkPointCopy.oldestActiveXid);
- printf(_("Latest checkpoint's oldestMultiXid: %u\n"),
- ControlFile.checkPointCopy.oldestMulti);
+ printf(_("Latest checkpoint's oldestActiveXID: %llu\n"),
+ (unsigned long long) ControlFile.checkPointCopy.oldestActiveXid);
+ printf(_("Latest checkpoint's oldestMultiXid: %llu\n"),
+ (unsigned long long) ControlFile.checkPointCopy.oldestMulti);
printf(_("Latest checkpoint's oldestMulti's DB: %u\n"),
ControlFile.checkPointCopy.oldestMultiDB);
- printf(_("Latest checkpoint's oldestCommitTsXid:%u\n"),
- ControlFile.checkPointCopy.oldestCommitTsXid);
- printf(_("Latest checkpoint's newestCommitTsXid:%u\n"),
- ControlFile.checkPointCopy.newestCommitTsXid);
+ printf(_("Latest checkpoint's oldestCommitTsXid:%llu\n"),
+ (unsigned long long) ControlFile.checkPointCopy.oldestCommitTsXid);
+ printf(_("Latest checkpoint's newestCommitTsXid:%llu\n"),
+ (unsigned long long) ControlFile.checkPointCopy.newestCommitTsXid);
printf(_("Maximum data alignment: %u\n"),
ControlFile.maxAlign);
/* we don't print floatFormat since can't say much useful about it */
@@ -792,18 +794,18 @@ PrintNewControlValues(void)
if (set_mxid != 0)
{
- printf(_("NextMultiXactId: %u\n"),
- ControlFile.checkPointCopy.nextMulti);
- printf(_("OldestMultiXid: %u\n"),
- ControlFile.checkPointCopy.oldestMulti);
+ printf(_("NextMultiXactId: %llu\n"),
+ (unsigned long long) ControlFile.checkPointCopy.nextMulti);
+ printf(_("OldestMultiXid: %llu\n"),
+ (unsigned long long) ControlFile.checkPointCopy.oldestMulti);
printf(_("OldestMulti's DB: %u\n"),
ControlFile.checkPointCopy.oldestMultiDB);
}
if (set_mxoff != -1)
{
- printf(_("NextMultiOffset: %u\n"),
- ControlFile.checkPointCopy.nextMultiOffset);
+ printf(_("NextMultiOffset: %llu\n"),
+ (unsigned long long) ControlFile.checkPointCopy.nextMultiOffset);
}
if (set_oid != 0)
@@ -814,10 +816,10 @@ PrintNewControlValues(void)
if (set_xid != 0)
{
- printf(_("NextXID: %u\n"),
- XidFromFullTransactionId(ControlFile.checkPointCopy.nextXid));
- printf(_("OldestXID: %u\n"),
- ControlFile.checkPointCopy.oldestXid);
+ printf(_("NextXID: %llu\n"),
+ (unsigned long long) XidFromFullTransactionId(ControlFile.checkPointCopy.nextXid));
+ printf(_("OldestXID: %llu\n"),
+ (unsigned long long) ControlFile.checkPointCopy.oldestXid);
printf(_("OldestXID's DB: %u\n"),
ControlFile.checkPointCopy.oldestXidDB);
}
@@ -830,13 +832,13 @@ PrintNewControlValues(void)
if (set_oldest_commit_ts_xid != 0)
{
- printf(_("oldestCommitTsXid: %u\n"),
- ControlFile.checkPointCopy.oldestCommitTsXid);
+ printf(_("oldestCommitTsXid: %llu\n"),
+ (unsigned long long) ControlFile.checkPointCopy.oldestCommitTsXid);
}
if (set_newest_commit_ts_xid != 0)
{
- printf(_("newestCommitTsXid: %u\n"),
- ControlFile.checkPointCopy.newestCommitTsXid);
+ printf(_("newestCommitTsXid: %llu\n"),
+ (unsigned long long) ControlFile.checkPointCopy.newestCommitTsXid);
}
if (set_wal_segsize != 0)
diff --git a/src/bin/pg_upgrade/pg_upgrade.c b/src/bin/pg_upgrade/pg_upgrade.c
index ecb3e1f647..3e5db964ab 100644
--- a/src/bin/pg_upgrade/pg_upgrade.c
+++ b/src/bin/pg_upgrade/pg_upgrade.c
@@ -538,16 +538,18 @@ copy_xact_xlog_xid(void)
prep_status("Setting oldest XID for new cluster");
exec_prog(UTILITY_LOG_FILE, NULL, true, true,
- "\"%s/pg_resetwal\" -f -u %u \"%s\"",
- new_cluster.bindir, old_cluster.controldata.chkpnt_oldstxid,
+ "\"%s/pg_resetwal\" -f -u %llu \"%s\"",
+ new_cluster.bindir,
+ (unsigned long long) old_cluster.controldata.chkpnt_oldstxid,
new_cluster.pgdata);
check_ok();
/* set the next transaction id and epoch of the new cluster */
prep_status("Setting next transaction ID and epoch for new cluster");
exec_prog(UTILITY_LOG_FILE, NULL, true, true,
- "\"%s/pg_resetwal\" -f -x %u \"%s\"",
- new_cluster.bindir, old_cluster.controldata.chkpnt_nxtxid,
+ "\"%s/pg_resetwal\" -f -x %llu \"%s\"",
+ new_cluster.bindir,
+ (unsigned long long) old_cluster.controldata.chkpnt_nxtxid,
new_cluster.pgdata);
exec_prog(UTILITY_LOG_FILE, NULL, true, true,
"\"%s/pg_resetwal\" -f -e %u \"%s\"",
@@ -555,10 +557,10 @@ copy_xact_xlog_xid(void)
new_cluster.pgdata);
/* must reset commit timestamp limits also */
exec_prog(UTILITY_LOG_FILE, NULL, true, true,
- "\"%s/pg_resetwal\" -f -c %u,%u \"%s\"",
+ "\"%s/pg_resetwal\" -f -c %llu,%llu \"%s\"",
new_cluster.bindir,
- old_cluster.controldata.chkpnt_nxtxid,
- old_cluster.controldata.chkpnt_nxtxid,
+ (unsigned long long) old_cluster.controldata.chkpnt_nxtxid,
+ (unsigned long long) old_cluster.controldata.chkpnt_nxtxid,
new_cluster.pgdata);
check_ok();
@@ -581,11 +583,11 @@ copy_xact_xlog_xid(void)
* counters here and the oldest multi present on system.
*/
exec_prog(UTILITY_LOG_FILE, NULL, true, true,
- "\"%s/pg_resetwal\" -O %u -m %u,%u \"%s\"",
+ "\"%s/pg_resetwal\" -O %llu -m %llu,%llu \"%s\"",
new_cluster.bindir,
- old_cluster.controldata.chkpnt_nxtmxoff,
- old_cluster.controldata.chkpnt_nxtmulti,
- old_cluster.controldata.chkpnt_oldstMulti,
+ (unsigned long long) old_cluster.controldata.chkpnt_nxtmxoff,
+ (unsigned long long) old_cluster.controldata.chkpnt_nxtmulti,
+ (unsigned long long) old_cluster.controldata.chkpnt_oldstMulti,
new_cluster.pgdata);
check_ok();
}
@@ -609,10 +611,10 @@ copy_xact_xlog_xid(void)
* next=MaxMultiXactId, but multixact.c can cope with that just fine.
*/
exec_prog(UTILITY_LOG_FILE, NULL, true, true,
- "\"%s/pg_resetwal\" -m %u,%u \"%s\"",
+ "\"%s/pg_resetwal\" -m %llu,%llu \"%s\"",
new_cluster.bindir,
- old_cluster.controldata.chkpnt_nxtmulti + 1,
- old_cluster.controldata.chkpnt_nxtmulti,
+ (unsigned long long) old_cluster.controldata.chkpnt_nxtmulti + 1,
+ (unsigned long long) old_cluster.controldata.chkpnt_nxtmulti,
new_cluster.pgdata);
check_ok();
}
@@ -671,14 +673,14 @@ set_frozenxids(bool minmxid_only)
/* set pg_database.datfrozenxid */
PQclear(executeQueryOrDie(conn_template1,
"UPDATE pg_catalog.pg_database "
- "SET datfrozenxid = '%u'",
- old_cluster.controldata.chkpnt_nxtxid));
+ "SET datfrozenxid = '%llu'",
+ (unsigned long long) old_cluster.controldata.chkpnt_nxtxid));
/* set pg_database.datminmxid */
PQclear(executeQueryOrDie(conn_template1,
"UPDATE pg_catalog.pg_database "
- "SET datminmxid = '%u'",
- old_cluster.controldata.chkpnt_nxtmulti));
+ "SET datminmxid = '%llu'",
+ (unsigned long long) old_cluster.controldata.chkpnt_nxtmulti));
/* get database names */
dbres = executeQueryOrDie(conn_template1,
@@ -712,24 +714,24 @@ set_frozenxids(bool minmxid_only)
/* set pg_class.relfrozenxid */
PQclear(executeQueryOrDie(conn,
"UPDATE pg_catalog.pg_class "
- "SET relfrozenxid = '%u' "
+ "SET relfrozenxid = '%llu' "
/* only heap, materialized view, and TOAST are vacuumed */
"WHERE relkind IN ("
CppAsString2(RELKIND_RELATION) ", "
CppAsString2(RELKIND_MATVIEW) ", "
CppAsString2(RELKIND_TOASTVALUE) ")",
- old_cluster.controldata.chkpnt_nxtxid));
+ (unsigned long long) old_cluster.controldata.chkpnt_nxtxid));
/* set pg_class.relminmxid */
PQclear(executeQueryOrDie(conn,
"UPDATE pg_catalog.pg_class "
- "SET relminmxid = '%u' "
+ "SET relminmxid = '%llu' "
/* only heap, materialized view, and TOAST are vacuumed */
"WHERE relkind IN ("
CppAsString2(RELKIND_RELATION) ", "
CppAsString2(RELKIND_MATVIEW) ", "
CppAsString2(RELKIND_TOASTVALUE) ")",
- old_cluster.controldata.chkpnt_nxtmulti));
+ (unsigned long long) old_cluster.controldata.chkpnt_nxtmulti));
PQfinish(conn);
/* Reset datallowconn flag */
diff --git a/src/bin/pg_waldump/pg_waldump.c b/src/bin/pg_waldump/pg_waldump.c
index 4f265ef546..ccf59ed728 100644
--- a/src/bin/pg_waldump/pg_waldump.c
+++ b/src/bin/pg_waldump/pg_waldump.c
@@ -455,10 +455,10 @@ XLogDumpDisplayRecord(XLogDumpConfig *config, XLogReaderState *record)
XLogRecGetLen(record, &rec_len, &fpi_len);
- printf("rmgr: %-11s len (rec/tot): %6u/%6u, tx: %10u, lsn: %X/%08X, prev %X/%08X, ",
+ printf("rmgr: %-11s len (rec/tot): %6u/%6u, tx: %20llu, lsn: %X/%08X, prev %X/%08X, ",
desc->rm_name,
rec_len, XLogRecGetTotalLen(record),
- XLogRecGetXid(record),
+ (unsigned long long) XLogRecGetXid(record),
LSN_FORMAT_ARGS(record->ReadRecPtr),
LSN_FORMAT_ARGS(xl_prev));
--
2.35.1
view thread (135+ messages) latest in thread
Message-ID: <CAJ7c6TONjAzfPy44rOBFc0ydZVmnvHhNeGfeRwZ2t5qcB9D_dQ@mail.gmail.com>
Permalink: ../CAJ7c6TONjAzfPy44rOBFc0ydZVmnvHhNeGfeRwZ2t5qcB9D_dQ@mail.gmail.com/
Also on: postgresql.org/message-id/CAJ7c6TONjAzfPy44rOBFc0ydZVmnvHhNeGfeRwZ2t5qcB9D_dQ@mail.gmail.com
copy link · copy postgr.es · copy git am
reply Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-hackers@postgresql.org
Cc: aleksander@timescale.com, orlovmg@gmail.com, pgsql-hackers@lists.postgresql.org, pashkin.elfe@gmail.com, peter.eisentraut@enterprisedb.com, japinli@hotmail.com, aekorotkov@gmail.com, horikyota.ntt@gmail.com, ilan@tzirechnoy.com
Subject: Re: XID formatting and SLRU refactorings (was: Add 64-bit XIDs into PostgreSQL 15)
In-Reply-To: <CAJ7c6TONjAzfPy44rOBFc0ydZVmnvHhNeGfeRwZ2t5qcB9D_dQ@mail.gmail.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox