Details
-
Task
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
Description
The function mlog_write_ulint() writes 1, 2, 4, or 8 bytes to an index page and to the redo log buffer of a mini-transaction. The following interface ought to be more suitable for future refactoring:
/** Write request types */ |
enum write_type |
{
|
/** the page is guaranteed to always change */ |
NORMAL= 0,
|
/** optional: the page contents might not change */ |
OPT,
|
/** force a write, even if the page contents is not changing */ |
FORCED
|
};
|
|
/** Write 1, 2, 4, or 8 bytes to a file page. |
@param[in] block file page
|
@param[in,out] ptr pointer in file page
|
@param[in] val value to write
|
@tparam l number of bytes to write
|
@tparam w write request type
|
@tparam V type of val */
|
template<unsigned l,write_type w= NORMAL,typename V> |
inline void write(const buf_block_t &block, byte *ptr, V val) |
MY_ATTRIBUTE((nonnull));
|
The write_type allows redundant writes to be optimized away. Passing buf_block_t will allow the function mlog_write_initial_log_record_fast() to be replaced with the even faster mlog_write_initial_log_record_low(), and it could also allow the mtr_t::m_memo and mtr_t::m_log to be replaced with a std::map<buf_block_t&,log_t>.
Attachments
Issue Links
- blocks
-
MDEV-12353 Efficient InnoDB redo log record format
- Closed
-
MDEV-14462 Confusing error message: ib_logfiles are too small for innodb_thread_concurrency=0
- Closed
- causes
-
MDEV-21205 Assertion failure in btr_sec_min_rec_mark
- Closed
-
MDEV-21259 Assertion `w != NORMAL || mach_read_from_4(ptr) != val' failed in mtr_t::write
- Closed
-
MDEV-22904 Compressed row format table tries to access freed blob
- Closed
-
MDEV-30404 Inconsistent updates of PAGE_MAX_TRX_ID on ROW_FORMAT=COMPRESSED pages
- Closed
- relates to
-
MDEV-26322 Last binlog file and position are "empty" in mariabackup --prepare output
- Closed