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
-
Activity
Field | Original Value | New Value |
---|---|---|
Link |
This issue blocks |
Link |
This issue blocks |
Status | Open [ 1 ] | In Progress [ 3 ] |
Summary | Refactor mlog_write_ulint | Refactor mlog_write_ulint, mlog_memset, mlog_write_string |
issue.field.resolutiondate | 2019-12-03 09:25:06.0 | 2019-12-03 09:25:06.637 |
Fix Version/s | 10.5.0 [ 23709 ] | |
Fix Version/s | 10.5 [ 23123 ] | |
Resolution | Fixed [ 1 ] | |
Status | In Progress [ 3 ] | Closed [ 6 ] |
Link |
This issue causes |
Fix Version/s | 10.5.1 [ 24029 ] | |
Fix Version/s | 10.5.0 [ 23709 ] |
Link |
This issue causes |
Fixing Priority | 250 |
Link |
This issue causes |
Link |
This issue relates to |
Workflow | MariaDB v3 [ 101472 ] | MariaDB v4 [ 134149 ] |
Link |
This issue causes |
As part of this task, I replaced some more use of mlog_write_initial_log_record_fast() with the more efficient mlog_write_initial_log_record_low(), and replaced some page_get_page_no() calls with references to buf_page_t::id.