MySQL 8.4.2
Source Code Documentation
|
Purge obsolete records. More...
#include "univ.i"
#include "btr0pcur.h"
#include "btr0types.h"
#include "data0data.h"
#include "dict0types.h"
#include "que0types.h"
#include "row0types.h"
#include "trx0types.h"
#include "ut0vec.h"
Go to the source code of this file.
Classes | |
struct | Compare_page_free_tuple |
struct | purge_node_t |
struct | purge_node_t::rec_t |
Info required to purge a record. More... | |
Typedefs | |
using | Page_free_tuple = std::tuple< index_id_t, page_id_t, table_id_t > |
Functions | |
purge_node_t * | row_purge_node_create (que_thr_t *parent, mem_heap_t *heap) |
Create a purge node to a query graph. More... | |
bool | row_purge_poss_sec (purge_node_t *node, dict_index_t *index, const dtuple_t *entry) |
Determines if it is possible to remove a secondary index entry. More... | |
que_thr_t * | row_purge_step (que_thr_t *thr) |
in: query thread More... | |
Purge obsolete records.
Created 3/14/1997 Heikki Tuuri
using Page_free_tuple = std::tuple<index_id_t, page_id_t, table_id_t> |
purge_node_t * row_purge_node_create | ( | que_thr_t * | parent, |
mem_heap_t * | heap | ||
) |
Create a purge node to a query graph.
[in] | parent | parent node, i.e., a thr node |
[in] | heap | memory heap where created |
bool row_purge_poss_sec | ( | purge_node_t * | node, |
dict_index_t * | index, | ||
const dtuple_t * | entry | ||
) |
Determines if it is possible to remove a secondary index entry.
Removal is possible if the secondary index entry does not refer to any not delete marked version of a clustered index record where DB_TRX_ID is newer than the purge view.
NOTE: This function should only be called by the purge thread, only while holding a latch on the leaf page of the secondary index entry (or keeping the buffer pool watch on the page). It is possible that this function first returns true and then false, if a user transaction inserts a record that the secondary index entry would refer to. However, in that case, the user transaction would also re-insert the secondary index entry after purge has removed it and released the leaf page latch.
Removal is possible if the secondary index entry does not refer to any not delete marked version of a clustered index record where DB_TRX_ID is newer than the purge view.
NOTE: This function should only be called by the purge thread, only while holding a latch on the leaf page of the secondary index entry (or keeping the buffer pool watch on the page). It is possible that this function first returns true and then false, if a user transaction inserts a record that the secondary index entry would refer to. However, in that case, the user transaction would also re-insert the secondary index entry after purge has removed it and released the leaf page latch.
node | in/out: row purge node |
index | in: secondary index |
entry | in: secondary index entry |