diff options
Diffstat (limited to 'src/include/replication/reorderbuffer.h')
-rw-r--r-- | src/include/replication/reorderbuffer.h | 46 |
1 files changed, 28 insertions, 18 deletions
diff --git a/src/include/replication/reorderbuffer.h b/src/include/replication/reorderbuffer.h index e42d4c5971f..4f6c65d6f40 100644 --- a/src/include/replication/reorderbuffer.h +++ b/src/include/replication/reorderbuffer.h @@ -158,18 +158,38 @@ typedef struct ReorderBufferChange dlist_node node; } ReorderBufferChange; +/* ReorderBufferTXN txn_flags */ +#define RBTXN_HAS_CATALOG_CHANGES 0x0001 +#define RBTXN_IS_SUBXACT 0x0002 +#define RBTXN_IS_SERIALIZED 0x0004 + +/* Does the transaction have catalog changes? */ +#define rbtxn_has_catalog_changes(txn) \ +( \ + ((txn)->txn_flags & RBTXN_HAS_CATALOG_CHANGES) != 0 \ +) + +/* Is the transaction known as a subxact? */ +#define rbtxn_is_known_subxact(txn) \ +( \ + ((txn)->txn_flags & RBTXN_IS_SUBXACT) != 0 \ +) + +/* Has this transaction been spilled to disk? */ +#define rbtxn_is_serialized(txn) \ +( \ + ((txn)->txn_flags & RBTXN_IS_SERIALIZED) != 0 \ +) + typedef struct ReorderBufferTXN { - /* - * The transactions transaction id, can be a toplevel or sub xid. - */ - TransactionId xid; + /* See above */ + bits32 txn_flags; - /* did the TX have catalog changes */ - bool has_catalog_changes; + /* The transaction's transaction id, can be a toplevel or sub xid. */ + TransactionId xid; - /* Do we know this is a subxact? Xid of top-level txn if so */ - bool is_known_as_subxact; + /* Xid of top-level transaction, if known */ TransactionId toplevel_xid; /* @@ -238,15 +258,6 @@ typedef struct ReorderBufferTXN uint64 nentries_mem; /* - * Has this transaction been spilled to disk? It's not always possible to - * deduce that fact by comparing nentries with nentries_mem, because e.g. - * subtransactions of a large transaction might get serialized together - * with the parent - if they're restored to memory they'd have - * nentries_mem == nentries. - */ - bool serialized; - - /* * List of ReorderBufferChange structs, including new Snapshots and new * CommandIds */ @@ -298,7 +309,6 @@ typedef struct ReorderBufferTXN * Size of this transaction (changes currently in memory, in bytes). */ Size size; - } ReorderBufferTXN; /* so we can define the callbacks used inside struct ReorderBuffer itself */ |