9 #ifndef REORDERBUFFER_H 10 #define REORDERBUFFER_H 38 #define ReorderBufferTupleBufData(p) \ 39 ((HeapTupleHeader) MAXALIGN(((char *) p) + sizeof(ReorderBufferTupleBuf))) 170 #define RBTXN_HAS_CATALOG_CHANGES 0x0001 171 #define RBTXN_IS_SUBXACT 0x0002 172 #define RBTXN_IS_SERIALIZED 0x0004 173 #define RBTXN_IS_SERIALIZED_CLEAR 0x0008 174 #define RBTXN_IS_STREAMED 0x0010 175 #define RBTXN_HAS_TOAST_INSERT 0x0020 176 #define RBTXN_HAS_SPEC_INSERT 0x0040 177 #define RBTXN_PREPARE 0x0080 178 #define RBTXN_SKIPPED_PREPARE 0x0100 181 #define rbtxn_has_catalog_changes(txn) \ 183 ((txn)->txn_flags & RBTXN_HAS_CATALOG_CHANGES) != 0 \ 187 #define rbtxn_is_known_subxact(txn) \ 189 ((txn)->txn_flags & RBTXN_IS_SUBXACT) != 0 \ 193 #define rbtxn_is_serialized(txn) \ 195 ((txn)->txn_flags & RBTXN_IS_SERIALIZED) != 0 \ 199 #define rbtxn_is_serialized_clear(txn) \ 201 ((txn)->txn_flags & RBTXN_IS_SERIALIZED_CLEAR) != 0 \ 205 #define rbtxn_has_toast_insert(txn) \ 207 ((txn)->txn_flags & RBTXN_HAS_TOAST_INSERT) != 0 \ 213 #define rbtxn_has_spec_insert(txn) \ 215 ((txn)->txn_flags & RBTXN_HAS_SPEC_INSERT) != 0 \ 219 #define rbtxn_has_incomplete_tuple(txn) \ 221 rbtxn_has_toast_insert(txn) || rbtxn_has_spec_insert(txn) \ 233 #define rbtxn_is_streamed(txn) \ 235 ((txn)->txn_flags & RBTXN_IS_STREAMED) != 0 \ 239 #define rbtxn_prepared(txn) \ 241 ((txn)->txn_flags & RBTXN_PREPARE) != 0 \ 245 #define rbtxn_skip_prepared(txn) \ 247 ((txn)->txn_flags & RBTXN_SKIPPED_PREPARE) != 0 \ 440 const char *prefix,
Size sz,
506 const char *prefix,
Size sz,
639 bool transactional,
const char *prefix,
640 Size message_size,
const char *message);
649 char *gid,
bool is_commit);
void(* ReorderBufferStreamTruncateCB)(ReorderBuffer *rb, ReorderBufferTXN *txn, int nrelations, Relation relations[], ReorderBufferChange *change)
ReorderBuffer * ReorderBufferAllocate(void)
bool ReorderBufferRememberPrepareInfo(ReorderBuffer *rb, TransactionId xid, XLogRecPtr prepare_lsn, XLogRecPtr end_lsn, TimestampTz prepare_time, RepOriginId origin_id, XLogRecPtr origin_lsn)
SharedInvalidationMessage * invalidations
ReorderBufferTupleBuf * ReorderBufferGetTupleBuf(ReorderBuffer *, Size tuple_len)
void ReorderBufferFinishPrepared(ReorderBuffer *rb, TransactionId xid, XLogRecPtr commit_lsn, XLogRecPtr end_lsn, XLogRecPtr initial_consistent_point, TimestampTz commit_time, RepOriginId origin_id, XLogRecPtr origin_lsn, char *gid, bool is_commit)
void ReorderBufferCommit(ReorderBuffer *, TransactionId, XLogRecPtr commit_lsn, XLogRecPtr end_lsn, TimestampTz commit_time, RepOriginId origin_id, XLogRecPtr origin_lsn)
bool ReorderBufferXidHasCatalogChanges(ReorderBuffer *, TransactionId xid)
void ReorderBufferQueueMessage(ReorderBuffer *, TransactionId, Snapshot snapshot, XLogRecPtr lsn, bool transactional, const char *prefix, Size message_size, const char *message)
ReorderBufferApplyChangeCB apply_change
dlist_node base_snapshot_node
ReorderBufferTupleBuf * oldtuple
void(* ReorderBufferStreamMessageCB)(ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr message_lsn, bool transactional, const char *prefix, Size sz, const char *message)
void ReorderBufferProcessXid(ReorderBuffer *, TransactionId xid, XLogRecPtr lsn)
bool ReorderBufferXidHasBaseSnapshot(ReorderBuffer *, TransactionId xid)
void ReorderBufferAssignChild(ReorderBuffer *, TransactionId, TransactionId, XLogRecPtr commit_lsn)
void(* ReorderBufferCommitPreparedCB)(ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr commit_lsn)
TransactionId by_txn_last_xid
void ReorderBufferAddSnapshot(ReorderBuffer *, TransactionId, XLogRecPtr lsn, struct SnapshotData *snap)
ReorderBufferStreamAbortCB stream_abort
XLogRecPtr current_restart_decoding_lsn
void(* ReorderBufferStreamAbortCB)(ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr abort_lsn)
void(* ReorderBufferBeginCB)(ReorderBuffer *rb, ReorderBufferTXN *txn)
struct ReorderBufferTXN * txn
void(* ReorderBufferStreamChangeCB)(ReorderBuffer *rb, ReorderBufferTXN *txn, Relation relation, ReorderBufferChange *change)
PGDLLIMPORT int logical_decoding_work_mem
void StartupReorderBuffer(void)
void ReorderBufferSkipPrepare(ReorderBuffer *rb, TransactionId xid)
void ReorderBufferForget(ReorderBuffer *, TransactionId, XLogRecPtr lsn)
ReorderBufferCommitCB commit
XLogRecPtr base_snapshot_lsn
ReorderBufferStreamCommitCB stream_commit
Oid * ReorderBufferGetRelids(ReorderBuffer *, int nrelids)
MemoryContext change_context
void ReorderBufferAddInvalidations(ReorderBuffer *, TransactionId, XLogRecPtr lsn, Size nmsgs, SharedInvalidationMessage *msgs)
void(* ReorderBufferPrepareCB)(ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr prepare_lsn)
void ReorderBufferCommitChild(ReorderBuffer *, TransactionId, TransactionId, XLogRecPtr commit_lsn, XLogRecPtr end_lsn)
void ReorderBufferReturnTupleBuf(ReorderBuffer *, ReorderBufferTupleBuf *tuple)
ReorderBufferChange * ReorderBufferGetChange(ReorderBuffer *)
ReorderBufferStreamMessageCB stream_message
void(* ReorderBufferStreamCommitCB)(ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr commit_lsn)
ReorderBufferTupleBuf * newtuple
dlist_head txns_by_base_snapshot_lsn
ReorderBufferStreamPrepareCB stream_prepare
void ReorderBufferInvalidate(ReorderBuffer *, TransactionId, XLogRecPtr lsn)
void ReorderBufferSetBaseSnapshot(ReorderBuffer *, TransactionId, XLogRecPtr lsn, struct SnapshotData *snap)
void ReorderBufferSetRestartPoint(ReorderBuffer *, XLogRecPtr ptr)
ReorderBufferBeginCB begin_prepare
struct ReorderBufferTXN * toptxn
ReorderBufferMessageCB message
void ReorderBufferReturnRelids(ReorderBuffer *, Oid *relids)
ReorderBufferStreamChangeCB stream_change
void(* ReorderBufferCommitCB)(ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr commit_lsn)
TransactionId ReorderBufferGetOldestXmin(ReorderBuffer *rb)
void ReorderBufferXidSetCatalogChanges(ReorderBuffer *, TransactionId xid, XLogRecPtr lsn)
void(* ReorderBufferApplyChangeCB)(ReorderBuffer *rb, ReorderBufferTXN *txn, Relation relation, ReorderBufferChange *change)
ReorderBufferStreamTruncateCB stream_truncate
void ReorderBufferAddNewTupleCids(ReorderBuffer *, TransactionId, XLogRecPtr lsn, RelFileNode node, ItemPointerData pt, CommandId cmin, CommandId cmax, CommandId combocid)
bool clear_toast_afterwards
void(* ReorderBufferStreamStopCB)(ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr last_lsn)
void ReorderBufferFree(ReorderBuffer *)
ReorderBufferTXN * by_txn_last_txn
void ReorderBufferAbort(ReorderBuffer *, TransactionId, XLogRecPtr lsn)
dlist_head toplevel_by_lsn
ReorderBufferStreamStartCB stream_start
ReorderBufferTXN * ReorderBufferGetOldestTXN(ReorderBuffer *)
void ReorderBufferAddNewCommandId(ReorderBuffer *, TransactionId, XLogRecPtr lsn, CommandId cid)
void(* ReorderBufferStreamPrepareCB)(ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr prepare_lsn)
void(* ReorderBufferBeginPrepareCB)(ReorderBuffer *rb, ReorderBufferTXN *txn)
struct ReorderBufferTupleBuf ReorderBufferTupleBuf
ReorderBufferRollbackPreparedCB rollback_prepared
void ReorderBufferAbortOld(ReorderBuffer *, TransactionId xid)
void(* ReorderBufferMessageCB)(ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr message_lsn, bool transactional, const char *prefix, Size sz, const char *message)
SharedInvalidationMessage * invalidations
void(* ReorderBufferRollbackPreparedCB)(ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr prepare_end_lsn, TimestampTz prepare_time)
void ReorderBufferImmediateInvalidation(ReorderBuffer *, uint32 ninvalidations, SharedInvalidationMessage *invalidations)
void(* ReorderBufferApplyTruncateCB)(ReorderBuffer *rb, ReorderBufferTXN *txn, int nrelations, Relation relations[], ReorderBufferChange *change)
void(* ReorderBufferStreamStartCB)(ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr first_lsn)
ReorderBufferApplyTruncateCB apply_truncate
void ReorderBufferQueueChange(ReorderBuffer *, TransactionId, XLogRecPtr lsn, ReorderBufferChange *, bool toast_insert)
void ReorderBufferReturnChange(ReorderBuffer *, ReorderBufferChange *, bool)
XLogRecPtr restart_decoding_lsn
MemoryContext tup_context
void ReorderBufferPrepare(ReorderBuffer *rb, TransactionId xid, char *gid)
ReorderBufferBeginCB begin
ReorderBufferCommitPreparedCB commit_prepared
void * output_plugin_private
TransactionId toplevel_xid
MemoryContext txn_context
ReorderBufferPrepareCB prepare
struct ReorderBufferTXN ReorderBufferTXN
struct ReorderBufferChange ReorderBufferChange
ReorderBufferStreamStopCB stream_stop