1 /*-------------------------------------------------------------------------
2  * message.h
3  *	   Exports from replication/logical/message.c
4  *
5  * Copyright (c) 2013-2020, PostgreSQL Global Development Group
6  *
7  * src/include/replication/message.h
8  *-------------------------------------------------------------------------
9  */
10 #ifndef PG_LOGICAL_MESSAGE_H
11 #define PG_LOGICAL_MESSAGE_H
12 
13 #include "access/xlog.h"
14 #include "access/xlogdefs.h"
15 #include "access/xlogreader.h"
16 
17 /*
18  * Generic logical decoding message wal record.
19  */
20 typedef struct xl_logical_message
21 {
22 	Oid			dbId;			/* database Oid emitted from */
23 	bool		transactional;	/* is message transactional? */
24 	Size		prefix_size;	/* length of prefix */
25 	Size		message_size;	/* size of the message */
26 	char		message[FLEXIBLE_ARRAY_MEMBER]; /* message including the null
27 												 * terminated prefix of length
28 												 * prefix_size */
29 } xl_logical_message;
30 
31 #define SizeOfLogicalMessage	(offsetof(xl_logical_message, message))
32 
33 extern XLogRecPtr LogLogicalMessage(const char *prefix, const char *message,
34 									size_t size, bool transactional);
35 
36 /* RMGR API*/
37 #define XLOG_LOGICAL_MESSAGE	0x00
38 void		logicalmsg_redo(XLogReaderState *record);
39 void		logicalmsg_desc(StringInfo buf, XLogReaderState *record);
40 const char *logicalmsg_identify(uint8 info);
41 
42 #endif							/* PG_LOGICAL_MESSAGE_H */
43