From 59a884e9854cb3cb7338394fb5f856209b040fb3 Mon Sep 17 00:00:00 2001 From: Joe Conway Date: Fri, 12 Feb 2016 14:23:59 -0800 Subject: [PATCH] Change delimiter used for display of NextXID NextXID has been rendered in the form of a pg_lsn even though it really is not. This can cause confusion, so change the format from %u/%u to %u:%u, per discussion on hackers. Complaint by me, patch by me and Bruce, reviewed by Michael Paquier and Alvaro. Applied to HEAD only. Author: Joe Conway, Bruce Momjian Reviewed-by: Michael Paquier, Alvaro Herrera Backpatch-through: master --- src/backend/access/rmgrdesc/xlogdesc.c | 2 +- src/backend/access/transam/xlog.c | 2 +- src/bin/pg_controldata/pg_controldata.c | 2 +- src/bin/pg_resetxlog/pg_resetxlog.c | 2 +- src/bin/pg_upgrade/controldata.c | 11 +++++++++-- 5 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/backend/access/rmgrdesc/xlogdesc.c b/src/backend/access/rmgrdesc/xlogdesc.c index b694dea53c..2dcbfbda37 100644 --- a/src/backend/access/rmgrdesc/xlogdesc.c +++ b/src/backend/access/rmgrdesc/xlogdesc.c @@ -43,7 +43,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/%u; oid %u; multi %u; offset %u; " + "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", diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index e98c89f7aa..8d480f7ce2 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -6283,7 +6283,7 @@ StartupXLOG(void) (uint32) (checkPoint.redo >> 32), (uint32) checkPoint.redo, wasShutdown ? "TRUE" : "FALSE"))); ereport(DEBUG1, - (errmsg_internal("next transaction ID: %u/%u; next OID: %u", + (errmsg_internal("next transaction ID: %u:%u; next OID: %u", checkPoint.nextXidEpoch, checkPoint.nextXid, checkPoint.nextOid))); ereport(DEBUG1, diff --git a/src/bin/pg_controldata/pg_controldata.c b/src/bin/pg_controldata/pg_controldata.c index e7e072f7f3..5dd2dbc5da 100644 --- a/src/bin/pg_controldata/pg_controldata.c +++ b/src/bin/pg_controldata/pg_controldata.c @@ -252,7 +252,7 @@ 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:%u\n"), ControlFile.checkPointCopy.nextXidEpoch, ControlFile.checkPointCopy.nextXid); printf(_("Latest checkpoint's NextOID: %u\n"), diff --git a/src/bin/pg_resetxlog/pg_resetxlog.c b/src/bin/pg_resetxlog/pg_resetxlog.c index ca706a5420..525b82ba7a 100644 --- a/src/bin/pg_resetxlog/pg_resetxlog.c +++ b/src/bin/pg_resetxlog/pg_resetxlog.c @@ -646,7 +646,7 @@ 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:%u\n"), ControlFile.checkPointCopy.nextXidEpoch, ControlFile.checkPointCopy.nextXid); printf(_("Latest checkpoint's NextOID: %u\n"), diff --git a/src/bin/pg_upgrade/controldata.c b/src/bin/pg_upgrade/controldata.c index 2def7290a2..34e194cb8b 100644 --- a/src/bin/pg_upgrade/controldata.c +++ b/src/bin/pg_upgrade/controldata.c @@ -197,11 +197,18 @@ get_control_data(ClusterInfo *cluster, bool live_check) p++; /* remove ':' char */ cluster->controldata.chkpnt_nxtepoch = str2uint(p); - p = strchr(p, '/'); + if (strchr(p, '/') != NULL) + p = strchr(p, '/'); + /* delimiter changed from '/' to ':' in 9.6 */ + else if (GET_MAJOR_VERSION(cluster->major_version) >= 906) + p = strchr(p, ':'); + else + p = NULL; + if (p == NULL || strlen(p) <= 1) pg_fatal("%d: controldata retrieval problem\n", __LINE__); - p++; /* remove '/' char */ + p++; /* remove '/' or ':' char */ cluster->controldata.chkpnt_nxtxid = str2uint(p); got_xid = true; }