1 /*------------------------------------------------------------------------- 2 * message.h 3 * Exports from replication/logical/message.c 4 * 5 * Copyright (c) 2013-2016, 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