diff options
author | Alvaro Herrera | 2020-09-10 22:37:02 +0000 |
---|---|---|
committer | Alvaro Herrera | 2020-09-10 22:37:02 +0000 |
commit | 9f1cf97bb5387a6243c8a6c9725616ef7447962e (patch) | |
tree | 25c9135b921060ada50579f9321ce4d492694efb /src/backend/access/rmgrdesc/logicalmsgdesc.c | |
parent | 58c6feccfae1321ea4ff16c535c6f3fb90a07d69 (diff) |
Print WAL logical message contents in pg_waldump
This helps debuggability when looking at WAL streams containing logical
messages.
Author: Ashutosh Bapat <[email protected]>
Reviewed-by: Álvaro Herrera <[email protected]>
Discussion: https://postgr.es/m/CAExHW5sWx49rKmXbg5H1Xc1t+nRv9PaYKQmgw82HPt6vWDVmDg@mail.gmail.com
Diffstat (limited to 'src/backend/access/rmgrdesc/logicalmsgdesc.c')
-rw-r--r-- | src/backend/access/rmgrdesc/logicalmsgdesc.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/backend/access/rmgrdesc/logicalmsgdesc.c b/src/backend/access/rmgrdesc/logicalmsgdesc.c index bff298c9287..83ab93a24be 100644 --- a/src/backend/access/rmgrdesc/logicalmsgdesc.c +++ b/src/backend/access/rmgrdesc/logicalmsgdesc.c @@ -24,10 +24,21 @@ logicalmsg_desc(StringInfo buf, XLogReaderState *record) if (info == XLOG_LOGICAL_MESSAGE) { xl_logical_message *xlrec = (xl_logical_message *) rec; + char *prefix = xlrec->message; + char *message = xlrec->message + xlrec->prefix_size; + char *sep = ""; - appendStringInfo(buf, "%s message size %zu bytes", - xlrec->transactional ? "transactional" : "nontransactional", - xlrec->message_size); + Assert(prefix[xlrec->prefix_size] != '\0'); + + appendStringInfo(buf, "%s, prefix \"%s\"; payload (%zu bytes): ", + xlrec->transactional ? "transactional" : "non-transactional", + prefix, xlrec->message_size); + /* Write message payload as a series of hex bytes */ + for (int cnt = 0; cnt < xlrec->message_size; cnt++) + { + appendStringInfo(buf, "%s%02X", sep, (unsigned char) message[cnt]); + sep = " "; + } } } |