9 #ifndef REORDERBUFFER_H
10 #define REORDERBUFFER_H
38 #define ReorderBufferTupleBufData(p) \
39 ((HeapTupleHeader) MAXALIGN(((char *) p) + sizeof(ReorderBufferTupleBuf)))
171 #define RBTXN_HAS_CATALOG_CHANGES 0x0001
172 #define RBTXN_IS_SUBXACT 0x0002
173 #define RBTXN_IS_SERIALIZED 0x0004
174 #define RBTXN_IS_SERIALIZED_CLEAR 0x0008
175 #define RBTXN_IS_STREAMED 0x0010
176 #define RBTXN_HAS_PARTIAL_CHANGE 0x0020
177 #define RBTXN_PREPARE 0x0040
178 #define RBTXN_SKIPPED_PREPARE 0x0080
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_partial_change(txn) \
207 ((txn)->txn_flags & RBTXN_HAS_PARTIAL_CHANGE) != 0 \
219 #define rbtxn_is_streamed(txn) \
221 ((txn)->txn_flags & RBTXN_IS_STREAMED) != 0 \
225 #define rbtxn_prepared(txn) \
227 ((txn)->txn_flags & RBTXN_PREPARE) != 0 \
231 #define rbtxn_skip_prepared(txn) \
233 ((txn)->txn_flags & RBTXN_SKIPPED_PREPARE) != 0 \
430 const char *prefix,
Size sz,
496 const char *prefix,
Size sz,
636 bool transactional,
const char *prefix,
637 Size message_size,
const char *message);
646 char *gid,
bool is_commit);
void ReorderBufferAddSnapshot(ReorderBuffer *, TransactionId, XLogRecPtr lsn, struct SnapshotData *snap)
void(* ReorderBufferCommitCB)(ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr commit_lsn)
PGDLLIMPORT int logical_decoding_work_mem
void ReorderBufferAssignChild(ReorderBuffer *, TransactionId, TransactionId, XLogRecPtr commit_lsn)
void ReorderBufferReturnRelids(ReorderBuffer *, Oid *relids)
void ReorderBufferInvalidate(ReorderBuffer *, TransactionId, XLogRecPtr lsn)
void(* ReorderBufferStreamCommitCB)(ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr commit_lsn)
void ReorderBufferAbort(ReorderBuffer *, TransactionId, XLogRecPtr lsn)
TransactionId ReorderBufferGetOldestXmin(ReorderBuffer *rb)
ReorderBufferTupleBuf * ReorderBufferGetTupleBuf(ReorderBuffer *, Size tuple_len)
void(* ReorderBufferStreamStartCB)(ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr first_lsn)
void(* ReorderBufferApplyChangeCB)(ReorderBuffer *rb, ReorderBufferTXN *txn, Relation relation, ReorderBufferChange *change)
ReorderBufferTXN * ReorderBufferGetOldestTXN(ReorderBuffer *)
struct ReorderBufferTXN ReorderBufferTXN
void ReorderBufferProcessXid(ReorderBuffer *, TransactionId xid, XLogRecPtr lsn)
void(* ReorderBufferStreamPrepareCB)(ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr prepare_lsn)
void(* ReorderBufferStreamChangeCB)(ReorderBuffer *rb, ReorderBufferTXN *txn, Relation relation, ReorderBufferChange *change)
void ReorderBufferSetRestartPoint(ReorderBuffer *, XLogRecPtr ptr)
void ReorderBufferPrepare(ReorderBuffer *rb, TransactionId xid, char *gid)
ReorderBuffer * ReorderBufferAllocate(void)
Oid * ReorderBufferGetRelids(ReorderBuffer *, int nrelids)
void(* ReorderBufferCommitPreparedCB)(ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr commit_lsn)
void(* ReorderBufferStreamMessageCB)(ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr message_lsn, bool transactional, const char *prefix, Size sz, const char *message)
struct ReorderBufferTupleBuf ReorderBufferTupleBuf
ReorderBufferChange * ReorderBufferGetChange(ReorderBuffer *)
void(* ReorderBufferBeginCB)(ReorderBuffer *rb, ReorderBufferTXN *txn)
void ReorderBufferAddNewTupleCids(ReorderBuffer *, TransactionId, XLogRecPtr lsn, RelFileNode node, ItemPointerData pt, CommandId cmin, CommandId cmax, CommandId combocid)
void ReorderBufferForget(ReorderBuffer *, TransactionId, XLogRecPtr lsn)
void ReorderBufferSkipPrepare(ReorderBuffer *rb, TransactionId xid)
void(* ReorderBufferMessageCB)(ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr message_lsn, bool transactional, const char *prefix, Size sz, const char *message)
struct ReorderBufferChange ReorderBufferChange
void ReorderBufferImmediateInvalidation(ReorderBuffer *, uint32 ninvalidations, SharedInvalidationMessage *invalidations)
void ReorderBufferQueueMessage(ReorderBuffer *, TransactionId, Snapshot snapshot, XLogRecPtr lsn, bool transactional, const char *prefix, Size message_size, const char *message)
void(* ReorderBufferApplyTruncateCB)(ReorderBuffer *rb, ReorderBufferTXN *txn, int nrelations, Relation relations[], ReorderBufferChange *change)
bool ReorderBufferXidHasBaseSnapshot(ReorderBuffer *, TransactionId xid)
void(* ReorderBufferBeginPrepareCB)(ReorderBuffer *rb, ReorderBufferTXN *txn)
void ReorderBufferAddInvalidations(ReorderBuffer *, TransactionId, XLogRecPtr lsn, Size nmsgs, SharedInvalidationMessage *msgs)
void ReorderBufferQueueChange(ReorderBuffer *, TransactionId, XLogRecPtr lsn, ReorderBufferChange *, bool toast_insert)
void ReorderBufferXidSetCatalogChanges(ReorderBuffer *, TransactionId xid, XLogRecPtr lsn)
void ReorderBufferFinishPrepared(ReorderBuffer *rb, TransactionId xid, XLogRecPtr commit_lsn, XLogRecPtr end_lsn, XLogRecPtr two_phase_at, TimestampTz commit_time, RepOriginId origin_id, XLogRecPtr origin_lsn, char *gid, bool is_commit)
void(* ReorderBufferStreamAbortCB)(ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr abort_lsn)
void ReorderBufferCommit(ReorderBuffer *, TransactionId, XLogRecPtr commit_lsn, XLogRecPtr end_lsn, TimestampTz commit_time, RepOriginId origin_id, XLogRecPtr origin_lsn)
void ReorderBufferAbortOld(ReorderBuffer *, TransactionId xid)
void(* ReorderBufferPrepareCB)(ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr prepare_lsn)
void ReorderBufferReturnChange(ReorderBuffer *, ReorderBufferChange *, bool)
bool ReorderBufferXidHasCatalogChanges(ReorderBuffer *, TransactionId xid)
bool ReorderBufferRememberPrepareInfo(ReorderBuffer *rb, TransactionId xid, XLogRecPtr prepare_lsn, XLogRecPtr end_lsn, TimestampTz prepare_time, RepOriginId origin_id, XLogRecPtr origin_lsn)
void ReorderBufferAddNewCommandId(ReorderBuffer *, TransactionId, XLogRecPtr lsn, CommandId cid)
void ReorderBufferCommitChild(ReorderBuffer *, TransactionId, TransactionId, XLogRecPtr commit_lsn, XLogRecPtr end_lsn)
void(* ReorderBufferRollbackPreparedCB)(ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr prepare_end_lsn, TimestampTz prepare_time)
void ReorderBufferFree(ReorderBuffer *)
void ReorderBufferReturnTupleBuf(ReorderBuffer *, ReorderBufferTupleBuf *tuple)
@ REORDER_BUFFER_CHANGE_INVALIDATION
@ REORDER_BUFFER_CHANGE_INTERNAL_SPEC_CONFIRM
@ REORDER_BUFFER_CHANGE_INSERT
@ REORDER_BUFFER_CHANGE_MESSAGE
@ REORDER_BUFFER_CHANGE_INTERNAL_SPEC_ABORT
@ REORDER_BUFFER_CHANGE_INTERNAL_COMMAND_ID
@ REORDER_BUFFER_CHANGE_INTERNAL_TUPLECID
@ REORDER_BUFFER_CHANGE_INTERNAL_SPEC_INSERT
@ REORDER_BUFFER_CHANGE_TRUNCATE
@ REORDER_BUFFER_CHANGE_DELETE
@ REORDER_BUFFER_CHANGE_INTERNAL_SNAPSHOT
@ REORDER_BUFFER_CHANGE_UPDATE
void(* ReorderBufferStreamStopCB)(ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr last_lsn)
void ReorderBufferSetBaseSnapshot(ReorderBuffer *, TransactionId, XLogRecPtr lsn, struct SnapshotData *snap)
void StartupReorderBuffer(void)
void(* ReorderBufferStreamTruncateCB)(ReorderBuffer *rb, ReorderBufferTXN *txn, int nrelations, Relation relations[], ReorderBufferChange *change)
ReorderBufferTupleBuf * newtuple
ReorderBufferChangeType action
struct ReorderBufferChange::@105::@107 truncate
struct ReorderBufferChange::@105::@106 tp
bool clear_toast_afterwards
union ReorderBufferChange::@105 data
struct ReorderBufferTXN * txn
struct ReorderBufferChange::@105::@108 msg
struct ReorderBufferChange::@105::@110 inval
struct ReorderBufferChange::@105::@109 tuplecid
ReorderBufferTupleBuf * oldtuple
SharedInvalidationMessage * invalidations
XLogRecPtr restart_decoding_lsn
XLogRecPtr base_snapshot_lsn
TransactionId toplevel_xid
SharedInvalidationMessage * invalidations
struct ReorderBufferTXN * toptxn
void * output_plugin_private
dlist_node base_snapshot_node
union ReorderBufferTXN::@111 xact_time
ReorderBufferStreamMessageCB stream_message
ReorderBufferStreamChangeCB stream_change
ReorderBufferBeginCB begin_prepare
ReorderBufferStreamTruncateCB stream_truncate
ReorderBufferCommitPreparedCB commit_prepared
ReorderBufferMessageCB message
dlist_head txns_by_base_snapshot_lsn
ReorderBufferRollbackPreparedCB rollback_prepared
ReorderBufferPrepareCB prepare
ReorderBufferStreamStopCB stream_stop
ReorderBufferApplyChangeCB apply_change
MemoryContext change_context
ReorderBufferTXN * by_txn_last_txn
TransactionId by_txn_last_xid
ReorderBufferStreamPrepareCB stream_prepare
ReorderBufferStreamAbortCB stream_abort
MemoryContext tup_context
ReorderBufferCommitCB commit
ReorderBufferStreamStartCB stream_start
ReorderBufferStreamCommitCB stream_commit
ReorderBufferApplyTruncateCB apply_truncate
dlist_head toplevel_by_lsn
ReorderBufferBeginCB begin
MemoryContext txn_context
XLogRecPtr current_restart_decoding_lsn