aboutsummaryrefslogtreecommitdiff
path: root/src/backend/access/rmgrdesc/mxactdesc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/access/rmgrdesc/mxactdesc.c')
-rw-r--r--src/backend/access/rmgrdesc/mxactdesc.c37
1 files changed, 33 insertions, 4 deletions
diff --git a/src/backend/access/rmgrdesc/mxactdesc.c b/src/backend/access/rmgrdesc/mxactdesc.c
index ddd675f610c..3e6cba062d3 100644
--- a/src/backend/access/rmgrdesc/mxactdesc.c
+++ b/src/backend/access/rmgrdesc/mxactdesc.c
@@ -16,6 +16,35 @@
#include "access/multixact.h"
+static void
+out_member(StringInfo buf, MultiXactMember *member)
+{
+ appendStringInfo(buf, "%u ", member->xid);
+ switch (member->status)
+ {
+ case MultiXactStatusForKeyShare:
+ appendStringInfoString(buf, "(keysh) ");
+ break;
+ case MultiXactStatusForShare:
+ appendStringInfoString(buf, "(sh) ");
+ break;
+ case MultiXactStatusForNoKeyUpdate:
+ appendStringInfoString(buf, "(fornokeyupd) ");
+ break;
+ case MultiXactStatusForUpdate:
+ appendStringInfoString(buf, "(forupd) ");
+ break;
+ case MultiXactStatusNoKeyUpdate:
+ appendStringInfoString(buf, "(nokeyupd) ");
+ break;
+ case MultiXactStatusUpdate:
+ appendStringInfoString(buf, "(upd) ");
+ break;
+ default:
+ appendStringInfoString(buf, "(unk) ");
+ break;
+ }
+}
void
multixact_desc(StringInfo buf, uint8 xl_info, char *rec)
@@ -41,10 +70,10 @@ multixact_desc(StringInfo buf, uint8 xl_info, char *rec)
xl_multixact_create *xlrec = (xl_multixact_create *) rec;
int i;
- appendStringInfo(buf, "create multixact %u offset %u:",
- xlrec->mid, xlrec->moff);
- for (i = 0; i < xlrec->nxids; i++)
- appendStringInfo(buf, " %u", xlrec->xids[i]);
+ appendStringInfo(buf, "create mxid %u offset %u nmembers %d: ", xlrec->mid,
+ xlrec->moff, xlrec->nmembers);
+ for (i = 0; i < xlrec->nmembers; i++)
+ out_member(buf, &xlrec->members[i]);
}
else
appendStringInfo(buf, "UNKNOWN");