0001-Print-prefix-and-logical-WAL-message-content-in-pg_w.patch
text/x-patch
Filename: 0001-Print-prefix-and-logical-WAL-message-content-in-pg_w.patch
Type: text/x-patch
Part: 0
Message:
Print logical WAL message content
Patch
Format: format-patch
Series: patch 0001
Subject: Print prefix and logical WAL message content in pg_waldump
| File | + | − |
|---|---|---|
| src/backend/access/rmgrdesc/logicalmsgdesc.c | 16 | 2 |
From 1547277944f7aceb1d5b0a3ae46ec2acf02f3b06 Mon Sep 17 00:00:00 2001
From: Ashutosh Bapat <ashutosh.bapat@2ndquadrant.com>
Date: Tue, 18 Aug 2020 11:05:29 +0530
Subject: [PATCH] Print prefix and logical WAL message content in pg_waldump
Print logical WAL message prefix which is a null terminated ASCII
string. Print the actual message as a space separated hex byte string
since it may contain binary data. This is useful for debugging purposes.
Ashutosh Bapat
---
src/backend/access/rmgrdesc/logicalmsgdesc.c | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/src/backend/access/rmgrdesc/logicalmsgdesc.c b/src/backend/access/rmgrdesc/logicalmsgdesc.c
index bff298c928..fdd03362e7 100644
--- a/src/backend/access/rmgrdesc/logicalmsgdesc.c
+++ b/src/backend/access/rmgrdesc/logicalmsgdesc.c
@@ -24,10 +24,24 @@ logicalmsg_desc(StringInfo buf, XLogReaderState *record)
if (info == XLOG_LOGICAL_MESSAGE)
{
xl_logical_message *xlrec = (xl_logical_message *) rec;
+ /*
+ * Per LogLogicalMessage() actual logical message follows a null-terminated prefix of length
+ * prefix_size.
+ */
+ char *prefix = xlrec->message;
+ char *message = xlrec->message + xlrec->prefix_size;
+ int cnt;
+ char *sep = "";
- appendStringInfo(buf, "%s message size %zu bytes",
+ appendStringInfo(buf, "%s message size %zu bytes, prefix %s; mesage: ",
xlrec->transactional ? "transactional" : "nontransactional",
- xlrec->message_size);
+ xlrec->message_size, prefix);
+ /* Write actual message as a series of hex bytes. */
+ for (cnt = 0; cnt < xlrec->message_size; cnt++)
+ {
+ appendStringInfo(buf, "%s%02X", sep, (unsigned char)message[cnt]);
+ sep = " ";
+ }
}
}
--
2.17.1