📄 row0vers.h
字号:
/******************************************************Row versions(c) 1997 Innobase OyCreated 2/6/1997 Heikki Tuuri*******************************************************/#ifndef row0vers_h#define row0vers_h#include "univ.i"#include "data0data.h"#include "dict0types.h"#include "trx0types.h"#include "que0types.h"#include "rem0types.h"#include "mtr0mtr.h"#include "read0types.h"/*********************************************************************Finds out if an active transaction has inserted or modified a secondaryindex record. NOTE: the kernel mutex is temporarily released in thisfunction! */trx_t*row_vers_impl_x_locked_off_kernel(/*==============================*/ /* out: NULL if committed, else the active transaction; NOTE that the kernel mutex is temporarily released! */ rec_t* rec, /* in: record in a secondary index */ dict_index_t* index, /* in: the secondary index */ const ulint* offsets);/* in: rec_get_offsets(rec, index) *//*********************************************************************Finds out if we must preserve a delete marked earlier version of a clusteredindex record, because it is >= the purge view. */iboolrow_vers_must_preserve_del_marked(/*==============================*/ /* out: TRUE if earlier version should be preserved */ dulint trx_id, /* in: transaction id in the version */ mtr_t* mtr); /* in: mtr holding the latch on the clustered index record; it will also hold the latch on purge_view *//*********************************************************************Finds out if a version of the record, where the version >= the currentpurge view, should have ientry as its secondary index entry. We checkif there is any not delete marked version of the record where the trxid >= purge view, and the secondary index entry == ientry; exactly inthis case we return TRUE. */iboolrow_vers_old_has_index_entry(/*=========================*/ /* out: TRUE if earlier version should have */ ibool also_curr,/* in: TRUE if also rec is included in the versions to search; otherwise only versions prior to it are searched */ rec_t* rec, /* in: record in the clustered index; the caller must have a latch on the page */ mtr_t* mtr, /* in: mtr holding the latch on rec; it will also hold the latch on purge_view */ dict_index_t* index, /* in: the secondary index */ dtuple_t* ientry); /* in: the secondary index entry *//*********************************************************************Constructs the version of a clustered index record which a consistentread should see. We assume that the trx id stored in rec is such thatthe consistent read should not see rec in its present version. */ulintrow_vers_build_for_consistent_read(/*===============================*/ /* out: DB_SUCCESS or DB_MISSING_HISTORY */ rec_t* rec, /* in: record in a clustered index; the caller must have a latch on the page; this latch locks the top of the stack of versions of this records */ mtr_t* mtr, /* in: mtr holding the latch on rec; it will also hold the latch on purge_view */ dict_index_t* index, /* in: the clustered index */ ulint** offsets,/* in/out: offsets returned by rec_get_offsets(rec, index) */ read_view_t* view, /* in: the consistent read view */ mem_heap_t** offset_heap,/* in/out: memory heap from which the offsets are allocated */ mem_heap_t* in_heap,/* in: memory heap from which the memory for old_vers is allocated; memory for possible intermediate versions is allocated and freed locally within the function */ rec_t** old_vers);/* out, own: old version, or NULL if the record does not exist in the view, that is, it was freshly inserted afterwards */#ifndef UNIV_NONINL#include "row0vers.ic"#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -