129 case RM_LOGICALMSG_ID:
142 case RM_MULTIXACT_ID:
151 case RM_COMMIT_TS_ID:
152 case RM_REPLORIGIN_ID:
201 elog(
ERROR,
"unexpected RM_XLOG_ID record type: %u", info);
274 sub_xid = &xlrec->
xsub[0];
296 elog(
ERROR,
"unexpected RM_XACT_ID record type: %u", info);
341 invalidations->
nmsgs,
342 invalidations->
msgs);
346 elog(
ERROR,
"unexpected RM_STANDBY_ID record type: %u", info);
406 elog(
ERROR,
"unexpected RM_HEAP2_ID record type: %u", info);
491 elog(
ERROR,
"unexpected RM_HEAP_ID record type: %u", info);
520 elog(
ERROR,
"unexpected RM_LOGICALMSG_ID record type: %u", info);
579 if (parsed->
nmsgs > 0)
638 commit_time, origin_id, origin_lsn);
706 change->
data.
tp.newtuple =
711 change->
data.
tp.clear_toast_afterwards =
true;
756 change->
data.
tp.newtuple =
772 change->
data.
tp.oldtuple =
778 change->
data.
tp.clear_toast_afterwards =
true;
828 change->
data.
tp.oldtuple =
832 datalen, change->
data.
tp.oldtuple);
835 change->
data.
tp.clear_toast_afterwards =
true;
908 Assert(tupledata != NULL);
911 for (i = 0; i < xlrec->
ntuples; i++)
939 change->
data.
tp.newtuple =
942 tuple = change->
data.
tp.newtuple;
956 memset(header, 0, SizeofHeapTupleHeader);
958 memcpy((
char *) tuple->
tuple.
t_data + SizeofHeapTupleHeader,
973 change->
data.
tp.clear_toast_afterwards =
true;
975 change->
data.
tp.clear_toast_afterwards =
false;
983 Assert(data == tupledata + tuplelen);
1014 change->
data.
tp.clear_toast_afterwards =
true;
1046 memcpy((
char *) &xlhdr,
1050 memset(header, 0, SizeofHeapTupleHeader);
1052 memcpy(((
char *) tuple->
tuple.
t_data) + SizeofHeapTupleHeader,
1053 data + SizeOfHeapHeader,
1058 header->
t_hoff = xlhdr.t_hoff;
static void DecodeMultiInsert(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
#define XLH_TRUNCATE_CASCADE
#define SizeofHeapTupleHeader
void ReorderBufferQueueMessage(ReorderBuffer *rb, TransactionId xid, Snapshot snapshot, XLogRecPtr lsn, bool transactional, const char *prefix, Size message_size, const char *message)
#define InvalidXLogRecPtr
#define XLH_DELETE_IS_SUPER
static void DecodeCommit(LogicalDecodingContext *ctx, XLogRecordBuffer *buf, xl_xact_parsed_commit *parsed, TransactionId xid)
#define XACT_XINFO_HAS_ORIGIN
struct ReorderBuffer * reorder
#define XLOG_XACT_PREPARE
static void DecodeInsert(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
#define XLOG_HEAP2_LOCK_UPDATED
void ReorderBufferAbortOld(ReorderBuffer *rb, TransactionId oldestRunningXid)
void ReorderBufferForget(ReorderBuffer *rb, TransactionId xid, XLogRecPtr lsn)
bool SnapBuildXactNeedsSkip(SnapBuild *builder, XLogRecPtr ptr)
#define XLOG_CHECKPOINT_ONLINE
void ReorderBufferCommit(ReorderBuffer *rb, TransactionId xid, XLogRecPtr commit_lsn, XLogRecPtr end_lsn, TimestampTz commit_time, RepOriginId origin_id, XLogRecPtr origin_lsn)
TimestampTz origin_timestamp
void SnapBuildCommitTxn(SnapBuild *builder, XLogRecPtr lsn, TransactionId xid, int nsubxacts, TransactionId *subxacts)
SnapBuildState SnapBuildCurrentState(SnapBuild *builder)
struct ReorderBufferChange::@101::@102 tp
#define XLOG_HEAP2_REWRITE
TransactionId twophase_xid
static void DecodeXLogTuple(char *data, Size len, ReorderBufferTupleBuf *tup)
#define XLOG_INVALIDATIONS
OutputPluginCallbacks callbacks
#define XLOG_STANDBY_LOCK
#define XLH_INSERT_IS_SPECULATIVE
#define XLOG_RESTORE_POINT
SharedInvalidationMessage * msgs
#define XLH_DELETE_CONTAINS_OLD
#define XLOG_HEAP_HOT_UPDATE
TransactionId xsub[FLEXIBLE_ARRAY_MEMBER]
ReorderBufferChange * ReorderBufferGetChange(ReorderBuffer *rb)
ReplicationSlotPersistentData data
static bool FilterByOrigin(LogicalDecodingContext *ctx, RepOriginId origin_id)
enum ReorderBufferChangeType action
#define XLOG_END_OF_RECOVERY
static void DecodeUpdate(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
static void DecodeAbort(LogicalDecodingContext *ctx, XLogRecordBuffer *buf, xl_xact_parsed_abort *parsed, TransactionId xid)
#define XLogRecGetOrigin(decoder)
#define XLOG_HEAP2_MULTI_INSERT
#define XLH_UPDATE_CONTAINS_NEW_TUPLE
char message[FLEXIBLE_ARRAY_MEMBER]
bool SnapBuildProcessChange(SnapBuild *builder, TransactionId xid, XLogRecPtr lsn)
#define XLOG_HEAP2_VISIBLE
static void DecodeXactOp(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
Oid relids[FLEXIBLE_ARRAY_MEMBER]
static void DecodeLogicalMsgOp(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
#define XLogRecGetData(decoder)
static void DecodeSpecConfirm(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
void LogicalDecodingProcessRecord(LogicalDecodingContext *ctx, XLogReaderState *record)
#define XLogRecGetDataLen(decoder)
#define XLH_INSERT_CONTAINS_NEW_TUPLE
#define XLOG_PARAMETER_CHANGE
void ReorderBufferImmediateInvalidation(ReorderBuffer *rb, uint32 ninvalidations, SharedInvalidationMessage *invalidations)
static void DecodeDelete(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
void ParseCommitRecord(uint8 info, xl_xact_commit *xlrec, xl_xact_parsed_commit *parsed)
#define XLOG_HEAP2_CLEANUP_INFO
#define XLOG_XACT_ABORT_PREPARED
#define XLOG_CHECKPOINT_SHUTDOWN
void SnapBuildProcessNewCid(SnapBuild *builder, TransactionId xid, XLogRecPtr lsn, xl_heap_new_cid *xlrec)
void SnapBuildProcessRunningXacts(SnapBuild *builder, XLogRecPtr lsn, xl_running_xacts *running)
#define XLOG_HEAP2_NEW_CID
bool filter_by_origin_cb_wrapper(LogicalDecodingContext *ctx, RepOriginId origin_id)
static void DecodeXLogOp(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
#define XLogRecGetInfo(decoder)
void ReorderBufferAssignChild(ReorderBuffer *rb, TransactionId xid, TransactionId subxid, XLogRecPtr lsn)
#define XLH_INSERT_LAST_IN_MULTI
bool XLogRecGetBlockTag(XLogReaderState *record, uint8 block_id, RelFileNode *rnode, ForkNumber *forknum, BlockNumber *blknum)
static void DecodeHeap2Op(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
#define XLogRecGetXid(decoder)
#define XLOG_XACT_ASSIGNMENT
char * XLogRecGetBlockData(XLogReaderState *record, uint8 block_id, Size *len)
void ReorderBufferCommitChild(ReorderBuffer *rb, TransactionId xid, TransactionId subxid, XLogRecPtr commit_lsn, XLogRecPtr end_lsn)
#define XLH_TRUNCATE_RESTART_SEQS
#define XLOG_HEAP_TRUNCATE
TransactionId twophase_xid
struct SnapBuild * snapshot_builder
#define Assert(condition)
union ReorderBufferChange::@101 data
SharedInvalidationMessage msgs[FLEXIBLE_ARRAY_MEMBER]
#define XLOG_FPI_FOR_HINT
void ReorderBufferAddInvalidations(ReorderBuffer *rb, TransactionId xid, XLogRecPtr lsn, Size nmsgs, SharedInvalidationMessage *msgs)
void ParseAbortRecord(uint8 info, xl_xact_abort *xlrec, xl_xact_parsed_abort *parsed)
static void DecodeTruncate(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
#define XLOG_HEAP_INPLACE
static void header(const char *fmt,...) pg_attribute_printf(1
void ReorderBufferQueueChange(ReorderBuffer *rb, TransactionId xid, XLogRecPtr lsn, ReorderBufferChange *change)
#define XLOG_HEAP2_FREEZE_PAGE
#define ItemPointerSetInvalid(pointer)
void ReorderBufferAbort(ReorderBuffer *rb, TransactionId xid, XLogRecPtr lsn)
Oid * ReorderBufferGetRelids(ReorderBuffer *rb, int nrelids)
void SnapBuildSerializationPoint(SnapBuild *builder, XLogRecPtr lsn)
#define XLOG_LOGICAL_MESSAGE
TransactionId oldestRunningXid
#define XLOG_RUNNING_XACTS
static void DecodeHeapOp(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
void ReorderBufferXidSetCatalogChanges(ReorderBuffer *rb, TransactionId xid, XLogRecPtr lsn)
#define TransactionIdIsValid(xid)
#define XLH_UPDATE_CONTAINS_OLD
#define XLOG_XACT_COMMIT_PREPARED
void ReorderBufferProcessXid(ReorderBuffer *rb, TransactionId xid, XLogRecPtr lsn)
LogicalDecodeFilterByOriginCB filter_by_origin_cb
struct XLogRecordBuffer XLogRecordBuffer
static void DecodeStandbyOp(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
#define XLogRecGetRmid(decoder)
struct ReorderBufferChange::@101::@103 truncate
#define XLOG_HEAP_CONFIRM
#define SizeOfMultiInsertTuple
Snapshot SnapBuildGetOrBuildSnapshot(SnapBuild *builder, TransactionId xid)
ReorderBufferTupleBuf * ReorderBufferGetTupleBuf(ReorderBuffer *rb, Size tuple_len)