Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit9f1cf97

Browse files
committed
Print WAL logical message contents in pg_waldump
This helps debuggability when looking at WAL streams containing logicalmessages.Author: Ashutosh Bapat <ashutosh.bapat@2ndquadrant.com>Reviewed-by: Álvaro Herrera <alvherre@alvh.no-ip.org>Discussion:https://postgr.es/m/CAExHW5sWx49rKmXbg5H1Xc1t+nRv9PaYKQmgw82HPt6vWDVmDg@mail.gmail.com
1 parent58c6fec commit9f1cf97

File tree

3 files changed

+17
-6
lines changed

3 files changed

+17
-6
lines changed

‎src/backend/access/rmgrdesc/logicalmsgdesc.c

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,21 @@ logicalmsg_desc(StringInfo buf, XLogReaderState *record)
2424
if (info==XLOG_LOGICAL_MESSAGE)
2525
{
2626
xl_logical_message*xlrec= (xl_logical_message*)rec;
27+
char*prefix=xlrec->message;
28+
char*message=xlrec->message+xlrec->prefix_size;
29+
char*sep="";
2730

28-
appendStringInfo(buf,"%s message size %zu bytes",
29-
xlrec->transactional ?"transactional" :"nontransactional",
30-
xlrec->message_size);
31+
Assert(prefix[xlrec->prefix_size]!='\0');
32+
33+
appendStringInfo(buf,"%s, prefix \"%s\"; payload (%zu bytes): ",
34+
xlrec->transactional ?"transactional" :"non-transactional",
35+
prefix,xlrec->message_size);
36+
/* Write message payload as a series of hex bytes */
37+
for (intcnt=0;cnt<xlrec->message_size;cnt++)
38+
{
39+
appendStringInfo(buf,"%s%02X",sep, (unsignedchar)message[cnt]);
40+
sep=" ";
41+
}
3142
}
3243
}
3344

‎src/backend/replication/logical/message.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ LogLogicalMessage(const char *prefix, const char *message, size_t size,
5959

6060
xlrec.dbId=MyDatabaseId;
6161
xlrec.transactional=transactional;
62+
/* trailing zero is critical; see logicalmsg_desc */
6263
xlrec.prefix_size=strlen(prefix)+1;
6364
xlrec.message_size=size;
6465

‎src/include/replication/message.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,8 @@ typedef struct xl_logical_message
2323
booltransactional;/* is message transactional? */
2424
Sizeprefix_size;/* length of prefix */
2525
Sizemessage_size;/* size of the message */
26-
charmessage[FLEXIBLE_ARRAY_MEMBER];/* message including the null
27-
* terminated prefix of length
28-
* prefix_size */
26+
/* payload, including null-terminated prefix of length prefix_size */
27+
charmessage[FLEXIBLE_ARRAY_MEMBER];
2928
}xl_logical_message;
3029

3130
#defineSizeOfLogicalMessage(offsetof(xl_logical_message, message))

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp