diff options
Diffstat (limited to 'src/backend/access/rmgrdesc')
-rw-r--r-- | src/backend/access/rmgrdesc/standbydesc.c | 54 | ||||
-rw-r--r-- | src/backend/access/rmgrdesc/xactdesc.c | 30 |
2 files changed, 58 insertions, 26 deletions
diff --git a/src/backend/access/rmgrdesc/standbydesc.c b/src/backend/access/rmgrdesc/standbydesc.c index 4872cfb2d96..e6172ccdf73 100644 --- a/src/backend/access/rmgrdesc/standbydesc.c +++ b/src/backend/access/rmgrdesc/standbydesc.c @@ -58,6 +58,14 @@ standby_desc(StringInfo buf, XLogReaderState *record) standby_desc_running_xacts(buf, xlrec); } + else if (info == XLOG_INVALIDATIONS) + { + xl_invalidations *xlrec = (xl_invalidations *) rec; + + standby_desc_invalidations(buf, xlrec->nmsgs, xlrec->msgs, + xlrec->dbId, xlrec->tsId, + xlrec->relcacheInitFileInval); + } } const char * @@ -73,7 +81,53 @@ standby_identify(uint8 info) case XLOG_RUNNING_XACTS: id = "RUNNING_XACTS"; break; + case XLOG_INVALIDATIONS: + id = "INVALIDATIONS"; + break; } return id; } + +/* + * This routine is used by both standby_desc and xact_desc, because + * transaction commits and XLOG_INVALIDATIONS messages contain invalidations; + * it seems pointless to duplicate the code. + */ +void +standby_desc_invalidations(StringInfo buf, + int nmsgs, SharedInvalidationMessage *msgs, + Oid dbId, Oid tsId, + bool relcacheInitFileInval) +{ + int i; + + if (relcacheInitFileInval) + appendStringInfo(buf, "; relcache init file inval dbid %u tsid %u", + dbId, tsId); + + appendStringInfoString(buf, "; inval msgs:"); + for (i = 0; i < nmsgs; i++) + { + SharedInvalidationMessage *msg = &msgs[i]; + + if (msg->id >= 0) + appendStringInfo(buf, " catcache %d", msg->id); + else if (msg->id == SHAREDINVALCATALOG_ID) + appendStringInfo(buf, " catalog %u", msg->cat.catId); + else if (msg->id == SHAREDINVALRELCACHE_ID) + appendStringInfo(buf, " relcache %u", msg->rc.relId); + /* not expected, but print something anyway */ + else if (msg->id == SHAREDINVALSMGR_ID) + appendStringInfoString(buf, " smgr"); + /* not expected, but print something anyway */ + else if (msg->id == SHAREDINVALRELMAP_ID) + appendStringInfoString(buf, " relmap"); + else if (msg->id == SHAREDINVALRELMAP_ID) + appendStringInfo(buf, " relmap db %u", msg->rm.dbId); + else if (msg->id == SHAREDINVALSNAPSHOT_ID) + appendStringInfo(buf, " snapshot %u", msg->sn.relId); + else + appendStringInfo(buf, " unknown id %d", msg->id); + } +} diff --git a/src/backend/access/rmgrdesc/xactdesc.c b/src/backend/access/rmgrdesc/xactdesc.c index e8a334c17db..6f07c5cfaac 100644 --- a/src/backend/access/rmgrdesc/xactdesc.c +++ b/src/backend/access/rmgrdesc/xactdesc.c @@ -18,6 +18,7 @@ #include "access/xact.h" #include "catalog/catalog.h" #include "storage/sinval.h" +#include "storage/standbydefs.h" #include "utils/timestamp.h" /* @@ -203,32 +204,9 @@ xact_desc_commit(StringInfo buf, uint8 info, xl_xact_commit *xlrec, RepOriginId } if (parsed.nmsgs > 0) { - if (XactCompletionRelcacheInitFileInval(parsed.xinfo)) - appendStringInfo(buf, "; relcache init file inval dbid %u tsid %u", - parsed.dbId, parsed.tsId); - - appendStringInfoString(buf, "; inval msgs:"); - for (i = 0; i < parsed.nmsgs; i++) - { - SharedInvalidationMessage *msg = &parsed.msgs[i]; - - if (msg->id >= 0) - appendStringInfo(buf, " catcache %d", msg->id); - else if (msg->id == SHAREDINVALCATALOG_ID) - appendStringInfo(buf, " catalog %u", msg->cat.catId); - else if (msg->id == SHAREDINVALRELCACHE_ID) - appendStringInfo(buf, " relcache %u", msg->rc.relId); - /* not expected, but print something anyway */ - else if (msg->id == SHAREDINVALSMGR_ID) - appendStringInfoString(buf, " smgr"); - /* not expected, but print something anyway */ - else if (msg->id == SHAREDINVALRELMAP_ID) - appendStringInfoString(buf, " relmap"); - else if (msg->id == SHAREDINVALSNAPSHOT_ID) - appendStringInfo(buf, " snapshot %u", msg->sn.relId); - else - appendStringInfo(buf, " unknown id %d", msg->id); - } + standby_desc_invalidations( + buf, parsed.nmsgs, parsed.msgs, parsed.dbId, parsed.tsId, + XactCompletionRelcacheInitFileInval(parsed.xinfo)); } if (XactCompletionForceSyncCommit(parsed.xinfo)) |