On 01/19/2016 07:04 PM, Michael Paquier wrote: > On Wed, Jan 20, 2016 at 11:41 AM, Alvaro Herrera > <alvhe...@2ndquadrant.com> wrote: >> Joe Conway wrote: >> >>> The attached includes Bruce's change, plus I found two additional sites >>> that appear to need the same change. The xlog.c change is just a DEBUG >>> message, so not a big deal. I'm less certain if the xlogdesc.c change >>> might create some fallout. >> >> Hm, pg_xlogdump links the rmgrdesc files, so perhaps you might need to >> adjust expected test output for it. Not really sure. > > We don't depend on this output format in any tests AFAIK, at least > check-world is not complaining here and pg_xlogdump has no dedicated > tests. There may be some utility in the outside world doing some > manipulation of the string generated for this record, but that's not > worth worrying about anyway. > > Patch looks fine, I have not spotted any other places that need a refresh.
I'll commit the attached tomorrow if there are no other concerns voiced. In the spirit of the dev meeting discussion, I am trying to use the commit message template discussed. Something like: -- email subject limit ----------------------------------------- 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. Reported-by: Joe Conway Author: Joe Conway, Bruce Momjian Reviewed-by: Michael Paquier, Alvaro Herrera Tested-by: Michael Paquier Backpatch-through: master -- email subject limit ----------------------------------------- That does look pretty redundant though. Thoughts? Joe -- Crunchy Data - http://crunchydata.com PostgreSQL Support for Secure Enterprises Consulting, Training, & Open Source Development
diff --git a/src/backend/access/rmgrdesc/xlogdesc.c b/src/backend/access/rmgrdesc/xlogdesc.c index b694dea..2dcbfbd 100644 *** a/src/backend/access/rmgrdesc/xlogdesc.c --- b/src/backend/access/rmgrdesc/xlogdesc.c *************** xlog_desc(StringInfo buf, XLogReaderStat *** 43,49 **** 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", --- 43,49 ---- 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", diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index 7d5d493..ee87e1b 100644 *** a/src/backend/access/transam/xlog.c --- b/src/backend/access/transam/xlog.c *************** StartupXLOG(void) *** 6284,6290 **** (uint32) (checkPoint.redo >> 32), (uint32) checkPoint.redo, wasShutdown ? "TRUE" : "FALSE"))); ereport(DEBUG1, ! (errmsg_internal("next transaction ID: %u/%u; next OID: %u", checkPoint.nextXidEpoch, checkPoint.nextXid, checkPoint.nextOid))); ereport(DEBUG1, --- 6284,6290 ---- (uint32) (checkPoint.redo >> 32), (uint32) checkPoint.redo, wasShutdown ? "TRUE" : "FALSE"))); ereport(DEBUG1, ! (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 e7e072f..5dd2dbc 100644 *** a/src/bin/pg_controldata/pg_controldata.c --- b/src/bin/pg_controldata/pg_controldata.c *************** main(int argc, char *argv[]) *** 252,258 **** 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"), ControlFile.checkPointCopy.nextXidEpoch, ControlFile.checkPointCopy.nextXid); printf(_("Latest checkpoint's NextOID: %u\n"), --- 252,258 ---- 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"), 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 ca706a5..525b82b 100644 *** a/src/bin/pg_resetxlog/pg_resetxlog.c --- b/src/bin/pg_resetxlog/pg_resetxlog.c *************** PrintControlValues(bool guessed) *** 646,652 **** 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"), ControlFile.checkPointCopy.nextXidEpoch, ControlFile.checkPointCopy.nextXid); printf(_("Latest checkpoint's NextOID: %u\n"), --- 646,652 ---- 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"), 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 2def729..34e194c 100644 *** a/src/bin/pg_upgrade/controldata.c --- b/src/bin/pg_upgrade/controldata.c *************** get_control_data(ClusterInfo *cluster, b *** 197,207 **** p++; /* remove ':' char */ cluster->controldata.chkpnt_nxtepoch = str2uint(p); ! p = strchr(p, '/'); if (p == NULL || strlen(p) <= 1) pg_fatal("%d: controldata retrieval problem\n", __LINE__); ! p++; /* remove '/' char */ cluster->controldata.chkpnt_nxtxid = str2uint(p); got_xid = true; } --- 197,214 ---- p++; /* remove ':' char */ cluster->controldata.chkpnt_nxtepoch = str2uint(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 '/' or ':' char */ cluster->controldata.chkpnt_nxtxid = str2uint(p); got_xid = true; }
signature.asc
Description: OpenPGP digital signature