33#define XLOG_HEAP_INSERT 0x00
34#define XLOG_HEAP_DELETE 0x10
35#define XLOG_HEAP_UPDATE 0x20
36#define XLOG_HEAP_TRUNCATE 0x30
37#define XLOG_HEAP_HOT_UPDATE 0x40
38#define XLOG_HEAP_CONFIRM 0x50
39#define XLOG_HEAP_LOCK 0x60
40#define XLOG_HEAP_INPLACE 0x70
42#define XLOG_HEAP_OPMASK 0x70
47#define XLOG_HEAP_INIT_PAGE 0x80
59#define XLOG_HEAP2_REWRITE 0x00
60#define XLOG_HEAP2_PRUNE_ON_ACCESS 0x10
61#define XLOG_HEAP2_PRUNE_VACUUM_SCAN 0x20
62#define XLOG_HEAP2_PRUNE_VACUUM_CLEANUP 0x30
63#define XLOG_HEAP2_VISIBLE 0x40
64#define XLOG_HEAP2_MULTI_INSERT 0x50
65#define XLOG_HEAP2_LOCK_UPDATED 0x60
66#define XLOG_HEAP2_NEW_CID 0x70
72#define XLH_INSERT_ALL_VISIBLE_CLEARED (1<<0)
73#define XLH_INSERT_LAST_IN_MULTI (1<<1)
74#define XLH_INSERT_IS_SPECULATIVE (1<<2)
75#define XLH_INSERT_CONTAINS_NEW_TUPLE (1<<3)
76#define XLH_INSERT_ON_TOAST_RELATION (1<<4)
79#define XLH_INSERT_ALL_FROZEN_SET (1<<5)
85#define XLH_UPDATE_OLD_ALL_VISIBLE_CLEARED (1<<0)
87#define XLH_UPDATE_NEW_ALL_VISIBLE_CLEARED (1<<1)
88#define XLH_UPDATE_CONTAINS_OLD_TUPLE (1<<2)
89#define XLH_UPDATE_CONTAINS_OLD_KEY (1<<3)
90#define XLH_UPDATE_CONTAINS_NEW_TUPLE (1<<4)
91#define XLH_UPDATE_PREFIX_FROM_OLD (1<<5)
92#define XLH_UPDATE_SUFFIX_FROM_OLD (1<<6)
95#define XLH_UPDATE_CONTAINS_OLD \
96 (XLH_UPDATE_CONTAINS_OLD_TUPLE | XLH_UPDATE_CONTAINS_OLD_KEY)
102#define XLH_DELETE_ALL_VISIBLE_CLEARED (1<<0)
103#define XLH_DELETE_CONTAINS_OLD_TUPLE (1<<1)
104#define XLH_DELETE_CONTAINS_OLD_KEY (1<<2)
105#define XLH_DELETE_IS_SUPER (1<<3)
106#define XLH_DELETE_IS_PARTITION_MOVE (1<<4)
109#define XLH_DELETE_CONTAINS_OLD \
110 (XLH_DELETE_CONTAINS_OLD_TUPLE | XLH_DELETE_CONTAINS_OLD_KEY)
121#define SizeOfHeapDelete (offsetof(xl_heap_delete, flags) + sizeof(uint8))
126#define XLH_TRUNCATE_CASCADE (1<<0)
127#define XLH_TRUNCATE_RESTART_SEQS (1<<1)
142#define SizeOfHeapTruncate (offsetof(xl_heap_truncate, relids))
157#define SizeOfHeapHeader (offsetof(xl_heap_header, t_hoff) + sizeof(uint8))
168#define SizeOfHeapInsert (offsetof(xl_heap_insert, flags) + sizeof(uint8))
188#define SizeOfHeapMultiInsert offsetof(xl_heap_multi_insert, offsets)
199#define SizeOfMultiInsertTuple (offsetof(xl_multi_insert_tuple, t_hoff) + sizeof(uint8))
233#define SizeOfHeapUpdate (offsetof(xl_heap_update, new_offnum) + sizeof(OffsetNumber))
296#define SizeOfHeapPrune (offsetof(xl_heap_prune, flags) + sizeof(uint8))
299#define XLHP_IS_CATALOG_REL (1 << 1)
309#define XLHP_CLEANUP_LOCK (1 << 2)
317#define XLHP_HAS_CONFLICT_HORIZON (1 << 3)
323#define XLHP_HAS_FREEZE_PLANS (1 << 4)
330#define XLHP_HAS_REDIRECTIONS (1 << 5)
331#define XLHP_HAS_DEAD_ITEMS (1 << 6)
332#define XLHP_HAS_NOW_UNUSED_ITEMS (1 << 7)
339#define XLH_FREEZE_XVAC 0x02
340#define XLH_INVALID_XVAC 0x04
386#define XLHL_XMAX_IS_MULTI 0x01
387#define XLHL_XMAX_LOCK_ONLY 0x02
388#define XLHL_XMAX_EXCL_LOCK 0x04
389#define XLHL_XMAX_KEYSHR_LOCK 0x08
390#define XLHL_KEYS_UPDATED 0x10
393#define XLH_LOCK_ALL_FROZEN_CLEARED 0x01
404#define SizeOfHeapLock (offsetof(xl_heap_lock, flags) + sizeof(uint8))
415#define SizeOfHeapLockUpdated (offsetof(xl_heap_lock_updated, flags) + sizeof(uint8))
423#define SizeOfHeapConfirm (offsetof(xl_heap_confirm, offnum) + sizeof(OffsetNumber))
436#define MinSizeOfHeapInplace (offsetof(xl_heap_inplace, nmsgs) + sizeof(int))
450#define SizeOfHeapVisible (offsetof(xl_heap_visible, flags) + sizeof(uint8))
470#define SizeOfHeapNewCid (offsetof(xl_heap_new_cid, target_tid) + sizeof(ItemPointerData))
#define FLEXIBLE_ARRAY_MEMBER
struct xlhp_freeze_plan xlhp_freeze_plan
struct xl_heap_rewrite_mapping xl_heap_rewrite_mapping
XLogRecPtr log_heap_visible(Relation rel, Buffer heap_buffer, Buffer vm_buffer, TransactionId snapshotConflictHorizon, uint8 vmflags)
struct xl_heap_delete xl_heap_delete
void heap_desc(StringInfo buf, XLogReaderState *record)
void heap_redo(XLogReaderState *record)
void heap2_desc(StringInfo buf, XLogReaderState *record)
void heap_xlog_deserialize_prune_and_freeze(char *cursor, uint8 flags, int *nplans, xlhp_freeze_plan **plans, OffsetNumber **frz_offsets, int *nredirected, OffsetNumber **redirected, int *ndead, OffsetNumber **nowdead, int *nunused, OffsetNumber **nowunused)
void heap_mask(char *pagedata, BlockNumber blkno)
void HeapTupleHeaderAdvanceConflictHorizon(HeapTupleHeader tuple, TransactionId *snapshotConflictHorizon)
struct xl_heap_new_cid xl_heap_new_cid
struct xl_heap_lock xl_heap_lock
void heap_xlog_logical_rewrite(XLogReaderState *r)
const char * heap2_identify(uint8 info)
struct xl_heap_prune xl_heap_prune
struct xl_heap_multi_insert xl_heap_multi_insert
struct xl_heap_confirm xl_heap_confirm
struct xl_heap_insert xl_heap_insert
const char * heap_identify(uint8 info)
struct xlhp_freeze_plans xlhp_freeze_plans
struct xl_heap_lock_updated xl_heap_lock_updated
struct xl_heap_inplace xl_heap_inplace
struct xlhp_prune_items xlhp_prune_items
void heap2_redo(XLogReaderState *record)
struct xl_heap_header xl_heap_header
struct xl_multi_insert_tuple xl_multi_insert_tuple
struct xl_heap_visible xl_heap_visible
struct xl_heap_update xl_heap_update
struct xl_heap_truncate xl_heap_truncate
SharedInvalidationMessage msgs[FLEXIBLE_ARRAY_MEMBER]
bool relcacheInitFileInval
OffsetNumber offsets[FLEXIBLE_ARRAY_MEMBER]
ItemPointerData target_tid
RelFileLocator target_locator
Oid relids[FLEXIBLE_ARRAY_MEMBER]
TransactionId snapshotConflictHorizon
xlhp_freeze_plan plans[FLEXIBLE_ARRAY_MEMBER]
OffsetNumber data[FLEXIBLE_ARRAY_MEMBER]