CUBRID Engine
latest
|
#include "mvcc.h"
#include "dbtype.h"
#include "heap_file.h"
#include "page_buffer.h"
#include "overflow_file.h"
#include "perf_monitor.h"
#include "porting_inline.hpp"
#include "vacuum.h"
Go to the source code of this file.
Macros | |
#define | MVCC_IS_REC_INSERTER_ACTIVE(thread_p, rec_header_p) (mvcc_is_active_id (thread_p, (rec_header_p)->mvcc_ins_id)) |
#define | MVCC_IS_REC_DELETER_ACTIVE(thread_p, rec_header_p) (mvcc_is_active_id (thread_p, (rec_header_p)->mvcc_del_id)) |
#define | MVCC_IS_REC_INSERTER_IN_SNAPSHOT(thread_p, rec_header_p, snapshot) (mvcc_is_id_in_snapshot (thread_p, (rec_header_p)->mvcc_ins_id, (snapshot))) |
#define | MVCC_IS_REC_DELETER_IN_SNAPSHOT(thread_p, rec_header_p, snapshot) (mvcc_is_id_in_snapshot (thread_p, (rec_header_p)->mvcc_del_id, (snapshot))) |
#define | MVCC_IS_REC_INSERTED_SINCE_MVCCID(rec_header_p, mvcc_id) (!MVCC_ID_PRECEDES ((rec_header_p)->mvcc_ins_id, (mvcc_id))) |
#define | MVCC_IS_REC_DELETED_SINCE_MVCCID(rec_header_p, mvcc_id) (!MVCC_ID_PRECEDES ((rec_header_p)->mvcc_del_id, (mvcc_id))) |
Enumerations | |
enum | { NOT_VISITED = -1, VISITED_DEAD = -2, VISITED_ALIVE = -3 } |
Functions | |
static INLINE bool | mvcc_is_id_in_snapshot (THREAD_ENTRY *thread_p, MVCCID mvcc_id, MVCC_SNAPSHOT *snapshot) __attribute__((ALWAYS_INLINE)) |
static INLINE bool | mvcc_is_active_id (THREAD_ENTRY *thread_p, MVCCID mvccid) __attribute__((ALWAYS_INLINE)) |
MVCC_SATISFIES_SNAPSHOT_RESULT | mvcc_satisfies_snapshot (THREAD_ENTRY *thread_p, MVCC_REC_HEADER *rec_header, MVCC_SNAPSHOT *snapshot) |
MVCC_SATISFIES_SNAPSHOT_RESULT | mvcc_is_not_deleted_for_snapshot (THREAD_ENTRY *thread_p, MVCC_REC_HEADER *rec_header, MVCC_SNAPSHOT *snapshot) |
MVCC_SATISFIES_VACUUM_RESULT | mvcc_satisfies_vacuum (THREAD_ENTRY *thread_p, MVCC_REC_HEADER *rec_header, MVCCID oldest_mvccid) |
MVCC_SATISFIES_DELETE_RESULT | mvcc_satisfies_delete (THREAD_ENTRY *thread_p, MVCC_REC_HEADER *rec_header) |
MVCC_SATISFIES_SNAPSHOT_RESULT | mvcc_satisfies_dirty (THREAD_ENTRY *thread_p, MVCC_REC_HEADER *rec_header, MVCC_SNAPSHOT *snapshot) |
bool | mvcc_is_mvcc_disabled_class (const OID *class_oid) |
#define MVCC_IS_REC_DELETED_SINCE_MVCCID | ( | rec_header_p, | |
mvcc_id | |||
) | (!MVCC_ID_PRECEDES ((rec_header_p)->mvcc_del_id, (mvcc_id))) |
Definition at line 49 of file mvcc.c.
Referenced by mvcc_satisfies_vacuum().
#define MVCC_IS_REC_DELETER_ACTIVE | ( | thread_p, | |
rec_header_p | |||
) | (mvcc_is_active_id (thread_p, (rec_header_p)->mvcc_del_id)) |
Definition at line 37 of file mvcc.c.
Referenced by mvcc_satisfies_delete(), and mvcc_satisfies_dirty().
#define MVCC_IS_REC_DELETER_IN_SNAPSHOT | ( | thread_p, | |
rec_header_p, | |||
snapshot | |||
) | (mvcc_is_id_in_snapshot (thread_p, (rec_header_p)->mvcc_del_id, (snapshot))) |
Definition at line 43 of file mvcc.c.
Referenced by mvcc_is_not_deleted_for_snapshot(), and mvcc_satisfies_snapshot().
#define MVCC_IS_REC_INSERTED_SINCE_MVCCID | ( | rec_header_p, | |
mvcc_id | |||
) | (!MVCC_ID_PRECEDES ((rec_header_p)->mvcc_ins_id, (mvcc_id))) |
Definition at line 46 of file mvcc.c.
Referenced by mvcc_satisfies_vacuum().
#define MVCC_IS_REC_INSERTER_ACTIVE | ( | thread_p, | |
rec_header_p | |||
) | (mvcc_is_active_id (thread_p, (rec_header_p)->mvcc_ins_id)) |
Definition at line 34 of file mvcc.c.
Referenced by mvcc_satisfies_delete(), and mvcc_satisfies_dirty().
#define MVCC_IS_REC_INSERTER_IN_SNAPSHOT | ( | thread_p, | |
rec_header_p, | |||
snapshot | |||
) | (mvcc_is_id_in_snapshot (thread_p, (rec_header_p)->mvcc_ins_id, (snapshot))) |
Definition at line 40 of file mvcc.c.
Referenced by mvcc_satisfies_snapshot().
anonymous enum |
|
static |
Definition at line 111 of file mvcc.c.
References assert, mvcctable::is_active(), LOG_FIND_TDES(), LOG_FIND_THREAD_TRAN_INDEX, log_Gl, logtb_is_current_mvccid(), MVCC_ID_PRECEDES, log_global::mvcc_table, MVCCID_NULL, log_tdes::mvccinfo, NULL, and mvcc_info::recent_snapshot_lowest_active_mvccid.
|
static |
Definition at line 79 of file mvcc.c.
References assert, mvcc_snapshot::highest_completed_mvccid, mvcc_active_tran::is_active(), mvcc_snapshot::lowest_active_mvccid, mvcc_snapshot::m_active_mvccs, MVCC_ID_FOLLOW_OR_EQUAL, MVCC_ID_PRECEDES, NULL, and STATIC_INLINE.
Definition at line 616 of file mvcc.c.
References OID_CACHE_COLLATION_CLASS_ID, OID_CACHE_HA_APPLY_INFO_CLASS_ID, oid_check_cached_class_oid(), OID_IS_ROOTOID, oid_is_serial(), and OID_ISNULL.
Referenced by btree_fix_root_for_delete(), heap_attrinfo_transform_to_disk_internal(), heap_delete_logical(), heap_get_visible_version_internal(), heap_insert_logical(), heap_update_home(), heap_update_logical(), locator_add_or_remove_index_internal(), locator_delete_force_internal(), locator_get_object(), locator_lock_and_get_object_internal(), locator_update_force(), locator_update_index(), lock_rep_read_tran(), qexec_open_scan(), scan_next_heap_scan(), scan_next_index_lookup_heap(), xbtree_find_unique(), and xlocator_fetch().
MVCC_SATISFIES_SNAPSHOT_RESULT mvcc_is_not_deleted_for_snapshot | ( | THREAD_ENTRY * | thread_p, |
MVCC_REC_HEADER * | rec_header, | ||
MVCC_SNAPSHOT * | snapshot | ||
) |
Definition at line 268 of file mvcc.c.
References assert, MVCC_IS_HEADER_DELID_VALID, MVCC_IS_REC_DELETED_BY_ME, MVCC_IS_REC_DELETER_IN_SNAPSHOT, NULL, SNAPSHOT_SATISFIED, and TOO_OLD_FOR_SNAPSHOT.
Referenced by heap_is_object_not_null().
MVCC_SATISFIES_DELETE_RESULT mvcc_satisfies_delete | ( | THREAD_ENTRY * | thread_p, |
MVCC_REC_HEADER * | rec_header | ||
) |
Definition at line 377 of file mvcc.c.
References assert, DELETE_RECORD_CAN_DELETE, DELETE_RECORD_DELETE_IN_PROGRESS, DELETE_RECORD_DELETED, DELETE_RECORD_INSERT_IN_PROGRESS, DELETE_RECORD_SELF_DELETED, mvcc_rec_header::mvcc_del_id, mvcc_rec_header::mvcc_ins_id, MVCC_IS_FLAG_SET, MVCC_IS_HEADER_DELID_VALID, MVCC_IS_REC_DELETED_BY_ME, MVCC_IS_REC_DELETER_ACTIVE, MVCC_IS_REC_INSERTED_BY_ME, MVCC_IS_REC_INSERTER_ACTIVE, MVCCID_ALL_VISIBLE, NULL, OR_MVCC_FLAG_VALID_INSID, PERF_SNAPSHOT_INVISIBLE, PERF_SNAPSHOT_RECORD_DELETED_COMMITTED, PERF_SNAPSHOT_RECORD_DELETED_COMMITTED_LOST, PERF_SNAPSHOT_RECORD_DELETED_CURR_TRAN, PERF_SNAPSHOT_RECORD_DELETED_OTHER_TRAN, PERF_SNAPSHOT_RECORD_INSERTED_COMMITED, PERF_SNAPSHOT_RECORD_INSERTED_COMMITED_LOST, PERF_SNAPSHOT_RECORD_INSERTED_CURR_TRAN, PERF_SNAPSHOT_RECORD_INSERTED_OTHER_TRAN, PERF_SNAPSHOT_RECORD_INSERTED_VACUUMED, PERF_SNAPSHOT_SATISFIES_DELETE, PERF_SNAPSHOT_VISIBLE, PERFMON_ACTIVATION_FLAG_MVCC_SNAPSHOT, perfmon_is_perf_tracking_and_active(), and vacuum_is_mvccid_vacuumed().
Referenced by btree_fk_object_does_exist(), btree_key_find_and_lock_unique_of_non_unique(), and btree_key_find_and_lock_unique_of_unique().
MVCC_SATISFIES_SNAPSHOT_RESULT mvcc_satisfies_dirty | ( | THREAD_ENTRY * | thread_p, |
MVCC_REC_HEADER * | rec_header, | ||
MVCC_SNAPSHOT * | snapshot | ||
) |
Definition at line 501 of file mvcc.c.
References assert, mvcc_snapshot::highest_completed_mvccid, mvcc_snapshot::lowest_active_mvccid, mvcc_rec_header::mvcc_del_id, MVCC_GET_INSID, mvcc_rec_header::mvcc_ins_id, MVCC_IS_FLAG_SET, MVCC_IS_HEADER_DELID_VALID, MVCC_IS_REC_DELETED_BY_ME, MVCC_IS_REC_DELETER_ACTIVE, MVCC_IS_REC_INSERTED_BY_ME, MVCC_IS_REC_INSERTER_ACTIVE, MVCCID_ALL_VISIBLE, MVCCID_NULL, NULL, OR_MVCC_FLAG_VALID_INSID, PERF_SNAPSHOT_INVISIBLE, PERF_SNAPSHOT_RECORD_DELETED_COMMITTED, PERF_SNAPSHOT_RECORD_DELETED_COMMITTED_LOST, PERF_SNAPSHOT_RECORD_DELETED_CURR_TRAN, PERF_SNAPSHOT_RECORD_DELETED_OTHER_TRAN, PERF_SNAPSHOT_RECORD_INSERTED_COMMITED, PERF_SNAPSHOT_RECORD_INSERTED_COMMITED_LOST, PERF_SNAPSHOT_RECORD_INSERTED_CURR_TRAN, PERF_SNAPSHOT_RECORD_INSERTED_OTHER_TRAN, PERF_SNAPSHOT_RECORD_INSERTED_VACUUMED, PERF_SNAPSHOT_SATISFIES_DIRTY, PERF_SNAPSHOT_VISIBLE, PERFMON_ACTIVATION_FLAG_MVCC_SNAPSHOT, perfmon_is_perf_tracking_and_active(), SNAPSHOT_SATISFIED, TOO_OLD_FOR_SNAPSHOT, and vacuum_is_mvccid_vacuumed().
Referenced by btree_key_delete_remove_object(), btree_key_find_and_insert_delete_mvccid(), btree_key_find_first_visible_row(), btree_key_lock_and_append_object_unique(), btree_key_record_check_no_visible(), btree_load_check_fk(), btree_sort_get_next(), xbtree_find_unique(), xlocator_fetch(), and xlocator_fetch_all().
MVCC_SATISFIES_SNAPSHOT_RESULT mvcc_satisfies_snapshot | ( | THREAD_ENTRY * | thread_p, |
MVCC_REC_HEADER * | rec_header, | ||
MVCC_SNAPSHOT * | snapshot | ||
) |
Definition at line 144 of file mvcc.c.
References assert, mvcc_rec_header::mvcc_del_id, mvcc_rec_header::mvcc_ins_id, MVCC_IS_FLAG_SET, MVCC_IS_HEADER_DELID_VALID, MVCC_IS_REC_DELETED_BY_ME, MVCC_IS_REC_DELETER_IN_SNAPSHOT, MVCC_IS_REC_INSERTED_BY_ME, MVCC_IS_REC_INSERTER_IN_SNAPSHOT, MVCCID_ALL_VISIBLE, NULL, OR_MVCC_FLAG_VALID_INSID, PERF_SNAPSHOT_INVISIBLE, PERF_SNAPSHOT_RECORD_DELETED_COMMITTED, PERF_SNAPSHOT_RECORD_DELETED_COMMITTED_LOST, PERF_SNAPSHOT_RECORD_DELETED_CURR_TRAN, PERF_SNAPSHOT_RECORD_DELETED_OTHER_TRAN, PERF_SNAPSHOT_RECORD_INSERTED_COMMITED, PERF_SNAPSHOT_RECORD_INSERTED_COMMITED_LOST, PERF_SNAPSHOT_RECORD_INSERTED_CURR_TRAN, PERF_SNAPSHOT_RECORD_INSERTED_DELETED, PERF_SNAPSHOT_RECORD_INSERTED_OTHER_TRAN, PERF_SNAPSHOT_RECORD_INSERTED_VACUUMED, PERF_SNAPSHOT_SATISFIES_SNAPSHOT, PERF_SNAPSHOT_VISIBLE, PERFMON_ACTIVATION_FLAG_MVCC_SNAPSHOT, perfmon_is_perf_tracking_and_active(), SNAPSHOT_SATISFIED, TOO_NEW_FOR_SNAPSHOT, TOO_OLD_FOR_SNAPSHOT, and vacuum_is_mvccid_vacuumed().
Referenced by mvcctable::build_mvcc_info().
MVCC_SATISFIES_VACUUM_RESULT mvcc_satisfies_vacuum | ( | THREAD_ENTRY * | thread_p, |
MVCC_REC_HEADER * | rec_header, | ||
MVCCID | oldest_mvccid | ||
) |
Definition at line 309 of file mvcc.c.
References MVCC_IS_HEADER_DELID_VALID, MVCC_IS_HEADER_INSID_NOT_ALL_VISIBLE, MVCC_IS_REC_DELETED_SINCE_MVCCID, MVCC_IS_REC_INSERTED_SINCE_MVCCID, PERF_SNAPSHOT_INVISIBLE, PERF_SNAPSHOT_RECORD_DELETED_COMMITTED, PERF_SNAPSHOT_RECORD_DELETED_OTHER_TRAN, PERF_SNAPSHOT_RECORD_INSERTED_COMMITED, PERF_SNAPSHOT_RECORD_INSERTED_OTHER_TRAN, PERF_SNAPSHOT_RECORD_INSERTED_VACUUMED, PERF_SNAPSHOT_SATISFIES_VACUUM, PERF_SNAPSHOT_VISIBLE, PERFMON_ACTIVATION_FLAG_MVCC_SNAPSHOT, perfmon_is_perf_tracking_and_active(), VACUUM_RECORD_CANNOT_VACUUM, VACUUM_RECORD_DELETE_INSID_PREV_VER, and VACUUM_RECORD_REMOVE.
Referenced by is_not_vacuumed_and_lost(), vacuum_heap_page(), and vacuum_rv_check_at_undo().