47 #define MVCC_REC_HEADER_INITIALIZER \ 48 { 0, 0, NULL_CHN, MVCCID_NULL, MVCCID_NULL, LSA_INITIALIZER } 51 #define MVCC_GET_INSID(header) \ 52 ((header)->mvcc_ins_id) 54 #define MVCC_SET_INSID(header, mvcc_id) \ 55 ((header)->mvcc_ins_id = (mvcc_id)) 57 #define MVCC_GET_DELID(header) \ 58 ((header)->mvcc_del_id) 60 #define MVCC_SET_DELID(header, mvcc_id) \ 61 ((header)->mvcc_del_id = (mvcc_id)) 63 #define MVCC_GET_REPID(header) \ 66 #define MVCC_SET_REPID(header, rep_id) \ 67 ((header)->repid = (rep_id)) 69 #define MVCC_GET_CHN(header) \ 72 #define MVCC_SET_CHN(header, chn_) \ 73 ((header)->chn = (chn_)) 75 #define MVCC_GET_FLAG(header) \ 78 #define MVCC_SET_FLAG(header, flag) \ 79 ((header)->mvcc_flag = (flag)) 81 #define MVCC_IS_ANY_FLAG_SET(rec_header_p) \ 82 (MVCC_IS_FLAG_SET (rec_header_p, OR_MVCC_FLAG_MASK)) 84 #define MVCC_IS_FLAG_SET(rec_header_p, flags) \ 85 ((rec_header_p)->mvcc_flag & (flags)) 87 #define MVCC_IS_HEADER_DELID_VALID(rec_header_p) \ 88 (MVCC_IS_FLAG_SET (rec_header_p, OR_MVCC_FLAG_VALID_DELID) \ 89 && MVCCID_IS_VALID (MVCC_GET_DELID (rec_header_p))) 91 #define MVCC_IS_HEADER_INSID_NOT_ALL_VISIBLE(rec_header_p) \ 92 (MVCC_IS_FLAG_SET (rec_header_p, OR_MVCC_FLAG_VALID_INSID) \ 93 && MVCC_GET_INSID (rec_header_p) != MVCCID_ALL_VISIBLE) 95 #define MVCC_SET_FLAG_BITS(rec_header_p, flag) \ 96 ((rec_header_p)->mvcc_flag |= (flag)) 98 #define MVCC_CLEAR_ALL_FLAG_BITS(rec_header_p) \ 99 (MVCC_CLEAR_FLAG_BITS (rec_header_p, OR_MVCC_FLAG_MASK)) 101 #define MVCC_CLEAR_FLAG_BITS(rec_header_p, flag) \ 102 ((rec_header_p)->mvcc_flag &= ~(flag)) 105 #define MVCC_SNAPSHOT_GET_LOWEST_ACTIVE_ID(snapshot) \ 106 ((snapshot)->lowest_active_mvccid) 108 #define MVCC_SNAPSHOT_GET_HIGHEST_COMMITTED_ID(snapshot) \ 109 ((snapshot)->highest_completed_mvccid) 114 #define MVCC_IS_REC_INSERTED_BY_ME(thread_p, rec_header_p) \ 115 (logtb_is_current_mvccid (thread_p, (rec_header_p)->mvcc_ins_id)) 118 #define MVCC_IS_REC_DELETED_BY_ME(thread_p, rec_header_p) \ 119 (logtb_is_current_mvccid (thread_p, (rec_header_p)->mvcc_del_id)) 122 #define MVCC_IS_REC_INSERTED_BY(rec_header_p, mvcc_id) \ 123 ((rec_header_p)->mvcc_ins_id == mvcc_id) 126 #define MVCC_IS_REC_DELETED_BY(rec_header_p, mvcc_id) \ 127 ((rec_header_p)->delid_chn.mvcc_del_id == mvcc_id) 133 #define MVCC_IS_CHN_UPTODATE(rec_header_p, chn) \ 135 && (chn == MVCC_GET_CHN (rec_header_p))) 137 #define MVCC_ID_PRECEDES(id1, id2) ((id1) < (id2)) 138 #define MVCC_ID_FOLLOW_OR_EQUAL(id1, id2) ((id1) >= (id2)) 140 #define MVCC_IS_HEADER_PREV_VERSION_VALID(rec_header_p) \ 141 (MVCC_IS_FLAG_SET (rec_header_p, OR_MVCC_FLAG_VALID_PREV_VERSION) \ 142 && !LSA_ISNULL (&MVCC_GET_PREV_VERSION_LSA (rec_header_p))) 144 #define MVCC_SET_PREVIOUS_VERSION_LSA(header, new_lsa) \ 147 (header)->prev_version_lsa.pageid = (new_lsa)->pageid; \ 148 (header)->prev_version_lsa.offset = (new_lsa)->offset; \ 152 #define MVCC_GET_PREV_VERSION_LSA(header) \ 153 ((header)->prev_version_lsa) 239 #define LOG_IS_MVCC_HEAP_OPERATION(rcvindex) \ 240 (((rcvindex) == RVHF_MVCC_DELETE_REC_HOME) \ 241 || ((rcvindex) == RVHF_MVCC_INSERT) \ 242 || ((rcvindex) == RVHF_UPDATE_NOTIFY_VACUUM) \ 243 || ((rcvindex) == RVHF_MVCC_DELETE_MODIFY_HOME) \ 244 || ((rcvindex) == RVHF_MVCC_NO_MODIFY_HOME) \ 245 || ((rcvindex) == RVHF_MVCC_REDISTRIBUTE)) 248 #define LOG_IS_MVCC_BTREE_OPERATION(rcvindex) \ 249 ((rcvindex) == RVBT_MVCC_DELETE_OBJECT \ 250 || (rcvindex) == RVBT_MVCC_INSERT_OBJECT \ 251 || (rcvindex) == RVBT_MVCC_INSERT_OBJECT_UNQ \ 252 || (rcvindex) == RVBT_MVCC_NOTIFY_VACUUM) 255 #define LOG_IS_MVCC_OPERATION(rcvindex) \ 256 (LOG_IS_MVCC_HEAP_OPERATION (rcvindex) \ 257 || LOG_IS_MVCC_BTREE_OPERATION (rcvindex) \ 258 || ((rcvindex) == RVES_NOTIFY_VACUUM)) MVCCID recent_snapshot_lowest_active_mvccid
enum mvcc_satisfies_delete_result MVCC_SATISFIES_DELETE_RESULT
MVCCID highest_completed_mvccid
MVCC_SATISFIES_VACUUM_RESULT mvcc_satisfies_vacuum(THREAD_ENTRY *thread_p, MVCC_REC_HEADER *rec_header, MVCCID oldest_mvccid)
mvcc_satisfies_snapshot_result
MVCCID lowest_active_mvccid
enum mvcc_satisfies_vacuum_result MVCC_SATISFIES_VACUUM_RESULT
MVCC_SATISFIES_SNAPSHOT_RESULT mvcc_is_not_deleted_for_snapshot(THREAD_ENTRY *thread_p, MVCC_REC_HEADER *rec_header, MVCC_SNAPSHOT *snapshot)
mvcc_active_tran m_active_mvccs
mvcc_satisfies_delete_result
MVCC_SATISFIES_SNAPSHOT_RESULT mvcc_satisfies_dirty(THREAD_ENTRY *thread_p, MVCC_REC_HEADER *rec_header, MVCC_SNAPSHOT *snapshot)
mvcc_satisfies_vacuum_result
MVCC_SATISFIES_DELETE_RESULT mvcc_satisfies_delete(THREAD_ENTRY *thread_p, MVCC_REC_HEADER *rec_header)
MVCC_SNAPSHOT_FUNC snapshot_fnc
enum mvcc_satisfies_snapshot_result MVCC_SATISFIES_SNAPSHOT_RESULT
bool mvcc_is_mvcc_disabled_class(const OID *class_oid)
std::vector< MVCCID > sub_ids
MVCC_SATISFIES_SNAPSHOT_RESULT(* MVCC_SNAPSHOT_FUNC)(THREAD_ENTRY *thread_p, MVCC_REC_HEADER *rec_header, MVCC_SNAPSHOT *snapshot)
MVCC_SATISFIES_SNAPSHOT_RESULT mvcc_satisfies_snapshot(THREAD_ENTRY *thread_p, MVCC_REC_HEADER *rec_header, MVCC_SNAPSHOT *snapshot)