63 std::ostream &
print(std::ostream &out)
const;
76 return (obj.
print(out));
138 const byte zero[
SIZE] = {0x00};
190 entry.move_version_base_node(*
this);
373 std::ostream &
print(std::ostream &out)
const;
456 return (obj.
print(out));
uint32_t page_no_t
Page number.
Definition: api0api.h:48
static buf_frame_t * buf_block_get_frame(const buf_block_t *block)
Gets a pointer to the memory frame of a block.
page_id_t id
Page id.
Definition: buf0buf.h:1319
page_no_t page_no() const
Retrieve the page number.
Definition: buf0types.h:242
Fido Client Authentication nullptr
Definition: fido_client_plugin.cc:221
fil_addr_t fil_addr_null
The null file address.
Definition: fil0fil.cc:324
constexpr page_no_t FIL_NULL
'null' (undefined) page offset in the context of file spaces
Definition: fil0fil.h:1122
constexpr size_t FIL_ADDR_SIZE
Address size is 6 bytes.
Definition: fil0types.h:127
void flst_add_last(flst_base_node_t *base, flst_node_t *node, mtr_t *mtr)
Adds a node as the last node in a list.
Definition: fut0lst.cc:89
void flst_remove(flst_base_node_t *base, flst_node_t *node2, mtr_t *mtr)
Removes a node.
Definition: fut0lst.cc:286
void flst_add_first(flst_base_node_t *base, flst_node_t *node, mtr_t *mtr)
Adds a node as the first node in a list.
Definition: fut0lst.cc:132
void flst_insert_after(flst_base_node_t *base, flst_node_t *node1, flst_node_t *node2, mtr_t *mtr)
Inserts a node after another in a list.
Definition: fut0lst.cc:171
void flst_insert_before(flst_base_node_t *base, flst_node_t *node2, flst_node_t *node3, mtr_t *mtr)
Inserts a node before another in a list.
Definition: fut0lst.cc:227
File-based list utilities.
constexpr ulint FLST_BASE_NODE_SIZE
Definition: fut0lst.h:49
static void flst_write_addr(fil_faddr_t *faddr, fil_addr_t addr, mtr_t *mtr)
Writes a file address.
byte flst_base_node_t
Definition: fut0lst.h:45
static fil_addr_t flst_read_addr(const fil_faddr_t *faddr, mtr_t *mtr)
Reads a file address.
static ulint flst_get_len(const flst_base_node_t *base)
Get the length of a list.
static void flst_init(flst_base_node_t *base, mtr_t *mtr)
Initializes a list base node.
byte flst_node_t
Definition: fut0lst.h:46
static uint16_t mach_read_from_2(const byte *b)
The following function is used to fetch data from 2 consecutive bytes.
static uint32_t mach_read_from_4(const byte *b)
The following function is used to fetch data from 4 consecutive bytes.
static void mach_write_to_6(byte *b, uint64_t id)
The following function is used to store data in 6 consecutive bytes.
static uint64_t mach_read_from_6(const byte *b)
The following function is used to fetch data from 6 consecutive bytes.
void mlog_log_string(byte *ptr, ulint len, mtr_t *mtr)
Logs a write of a string to a file page buffered in the buffer pool.
Definition: mtr0log.cc:341
void mlog_write_ulint(byte *ptr, ulint val, mlog_id_t type, mtr_t *mtr)
Writes 1, 2 or 4 bytes to a file page.
Definition: mtr0log.cc:255
@ MLOG_4BYTES
4 bytes ...
Definition: mtr0types.h:75
@ MLOG_2BYTES
2 bytes ...
Definition: mtr0types.h:72
Provides the large objects (LOB) module.
Definition: lob0del.h:31
std::list< index_entry_mem_t > List_iem_t
List of index entry memory (iem) objects.
Definition: lob0index.h:67
std::map< page_no_t, buf_block_t * > BlockCache
Definition: lob0index.h:36
std::ostream & operator<<(std::ostream &out, const plist_node_t &obj)
Definition: lob0impl.h:238
required uint64 version
Definition: replication_group_member_actions.proto:40
void free_list(I_List< i_string > *list)
Definition: sql_list.cc:30
Definition: completion_hash.h:34
The buffer control block structure.
Definition: buf0buf.h:1690
buf_page_t page
page information; this must be the first field, so that buf_pool->page_hash can point to buf_page_t o...
Definition: buf0buf.h:1696
Data structure for an index.
Definition: dict0mem.h:1045
File space address.
Definition: fil0fil.h:1139
uint32_t boffset
Byte offset within the page.
Definition: fil0fil.h:1171
page_no_t page
Page number within a space.
Definition: fil0fil.h:1168
bool is_equal(const fil_addr_t &rhs) const
Compare to instances.
Definition: fil0fil.h:1151
bool is_null() const
Check if the file address is null.
Definition: fil0fil.h:1157
In-memory representation of flst_base_node_t.
Definition: fut0lst.h:147
The first page of an uncompressed LOB.
Definition: lob0first.h:42
An in-memory copy of an index_entry_t data.
Definition: lob0index.h:40
trx_id_t m_trx_id_modifier
Definition: lob0index.h:46
undo_no_t m_undo_no
Definition: lob0index.h:47
undo_no_t m_undo_no_modifier
Definition: lob0index.h:48
flst_bnode_t m_versions
Definition: lob0index.h:44
fil_addr_t m_next
Definition: lob0index.h:43
fil_addr_t m_prev
Definition: lob0index.h:42
bool is_null()
Definition: lob0index.h:56
trx_id_t m_trx_id
Definition: lob0index.h:45
index_entry_mem_t()
Definition: lob0index.h:52
fil_addr_t m_self
Definition: lob0index.h:41
void reset()
Definition: lob0index.cc:207
page_no_t get_page_no() const
Definition: lob0index.h:58
std::ostream & print(std::ostream &out) const
Print this object into the given output stream.
Definition: lob0index.cc:223
ulint m_data_len
Definition: lob0index.h:50
page_no_t m_page_no
Definition: lob0index.h:49
An index entry pointing to an LOB page.
Definition: lob0index.h:80
void free_data_page(const page_no_t first_page_no)
Free the data page pointed to by this index entry.
Definition: lob0index.cc:234
void reset(flst_node_t *node)
Definition: lob0index.h:135
void insert_after(flst_base_node_t *base, index_entry_t &entry)
Definition: lob0index.h:391
ulint get_data_len() const
Definition: lob0index.h:368
void set_versions_null()
The versions base node is set to NULL.
Definition: lob0index.h:157
static const ulint OFFSET_PAGE_NO
Definition: lob0index.h:98
bool is_same(const index_entry_t &that)
Definition: lob0index.h:375
byte * get_lob_version_ptr() const
Definition: lob0index.h:430
void set_next_null()
Definition: lob0index.h:354
fil_addr_t get_self() const
Get the location of the current index entry.
Definition: lob0index.cc:143
void read(index_entry_mem_t &entry_mem) const
Definition: lob0index.cc:155
fil_addr_t get_next() const
Definition: lob0index.h:261
buf_block_t * m_block
Definition: lob0index.h:448
page_no_t get_page_no() const
Definition: lob0index.h:358
uint32_t get_lob_version() const
Definition: lob0index.h:249
index_entry_t(flst_node_t *node, mtr_t *mtr)
Definition: lob0index.h:112
static const ulint OFFSET_PREV
Index entry offsets within node.
Definition: lob0index.h:82
void push_back(flst_base_node_t *bnode)
Add this node as the last node in the given list.
Definition: lob0index.h:224
mtr_t * m_mtr
Definition: lob0index.h:446
void reset(fil_addr_t &addr)
Definition: lob0index.h:123
void set_prev_null()
Definition: lob0index.h:350
static const ulint OFFSET_NEXT
Definition: lob0index.h:83
static const ulint OFFSET_LOB_VERSION
The LOB version number.
Definition: lob0index.h:102
byte * get_node() const
Definition: lob0index.h:442
byte * get_trx_undo_no_ptr() const
Definition: lob0index.h:428
flst_bnode_t get_versions_mem() const
Get the base node of the list of versions.
Definition: lob0index.h:229
fil_addr_t make_old_version_current(dict_index_t *index, first_page_t &first_page)
The current index entry points to a latest LOB page.
Definition: lob0index.cc:46
void set_trx_id(trx_id_t id)
Definition: lob0index.h:311
byte * get_trx_undo_no_modifier_ptr() const
Definition: lob0index.h:432
void set_old_version(index_entry_t &entry)
Definition: lob0index.h:185
byte * get_trxid_modifier_ptr() const
Definition: lob0index.h:424
void add_version(index_entry_t &entry) const
Definition: lob0index.h:214
void set_trx_id_modifier(trx_id_t id)
Definition: lob0index.h:317
void set_trx_undo_no_modifier(undo_no_t undo_no)
Definition: lob0index.h:337
buf_block_t * get_block() const
Definition: lob0index.h:131
void set_trx_undo_no(undo_no_t undo_no)
Definition: lob0index.h:325
void move_version_base_node(index_entry_t &to_entry)
Move the version base node from current entry to the given entry.
Definition: lob0index.cc:38
void init()
Initialize the object fully.
Definition: lob0index.h:143
void purge(dict_index_t *index)
Purge the current index entry.
Definition: lob0index.cc:82
byte * get_pageno_ptr() const
Definition: lob0index.h:436
void set_trx_id_modifier_no_redo(trx_id_t id)
Write the modifier trx identifier to the index entry.
Definition: lob0index.h:306
buf_block_t * load_s(const fil_addr_t &addr)
Load the index entry available in the given file address.
Definition: lob0index.cc:194
fil_addr_t get_prev() const
Get the previous index entry.
Definition: lob0index.h:289
static const ulint OFFSET_VERSIONS
Points to base node of the list of versions.
Definition: lob0index.h:87
void set_page_no(page_no_t num)
Definition: lob0index.h:344
void remove(flst_base_node_t *bnode)
Definition: lob0index.h:399
flst_base_node_t * get_versions_list() const
Definition: lob0index.h:220
void set_trx_id_no_redo(trx_id_t id)
Write the trx identifier to the index entry.
Definition: lob0index.h:297
index_entry_t(flst_node_t *node)
Constructor.
Definition: lob0index.h:109
index_entry_t(flst_node_t *node, mtr_t *mtr, dict_index_t *index)
Definition: lob0index.h:115
static const ulint OFFSET_TRX_UNDO_NO_MODIFIER
The undo number of the modifier trx.
Definition: lob0index.h:97
bool can_rollback(trx_id_t trxid, undo_no_t undo_no)
Determine if the current index entry be rolled back.
Definition: lob0index.h:168
static const ulint OFFSET_TRXID_MODIFIER
The modifier trx id.
Definition: lob0index.h:93
void insert_before(flst_base_node_t *base, index_entry_t &entry)
Definition: lob0index.h:395
static const ulint OFFSET_TRX_UNDO_NO
Definition: lob0index.h:94
buf_block_t * load_x(const fil_addr_t &addr)
Load the index entry available in the given file address.
Definition: lob0index.cc:177
undo_no_t get_trx_undo_no_modifier() const
Get the undo number of the modifier trx.
Definition: lob0index.h:256
const dict_index_t * m_index
Definition: lob0index.h:447
fil_addr_t purge_version(dict_index_t *index, flst_base_node_t *lst, flst_base_node_t *free_list)
Purge the current entry.
Definition: lob0index.cc:110
buf_block_t * next()
Make the current index entry object to point to the next index entry object.
Definition: lob0index.h:270
static const ulint SIZE
Total length of an index node.
Definition: lob0index.h:105
undo_no_t get_trx_undo_no() const
Definition: lob0index.h:244
static const ulint OFFSET_DATA_LEN
Definition: lob0index.h:99
byte * m_node
Definition: lob0index.h:445
static const ulint OFFSET_TRXID
The creator trx id.
Definition: lob0index.h:90
void set_lob_version(uint32_t version)
Set the LOB version of this entry.
Definition: lob0index.h:332
byte * get_node_ptr() const
Definition: lob0index.h:440
bool is_null() const
Definition: lob0index.h:137
byte * get_versions_ptr() const
Definition: lob0index.h:420
byte * get_datalen_ptr() const
Definition: lob0index.h:438
index_entry_t(mtr_t *mtr, const dict_index_t *index)
Definition: lob0index.h:118
std::ostream & print(std::ostream &out) const
Definition: lob0index.cc:129
trx_id_t get_trx_id() const
Definition: lob0index.h:234
bool can_be_purged(trx_id_t trxid, undo_no_t undo_no)
Determine if the current index entry be purged.
Definition: lob0index.h:177
trx_id_t get_trx_id_modifier() const
Definition: lob0index.h:239
byte * get_trxid_ptr() const
Definition: lob0index.h:422
void set_data_len(ulint len)
Definition: lob0index.h:363
Mini-transaction handle and buffer.
Definition: mtr0mtr.h:181
ib_id_t undo_no_t
Undo number.
Definition: trx0types.h:141
ib_id_t trx_id_t
Transaction identifier (DB_TRX_ID, DATA_TRX_ID)
Definition: trx0types.h:137
Version control for database, common definitions, and include files.
unsigned long int ulint
Definition: univ.i:407
#define ut_ad(EXPR)
Debug assertion.
Definition: ut0dbg.h:68