maria:10.5-mdev21784-reg1-vfuncs

Last commit made on 2020-03-08
Get this branch:
git clone -b 10.5-mdev21784-reg1-vfuncs https://git.launchpad.net/maria

Branch merges

Branch information

Name:
10.5-mdev21784-reg1-vfuncs
Repository:
lp:maria

Recent commits

ee6c668... by Sergey Petrunia

MDEV-21784: Performance testing for packed sort keys

A piece of cumulative patch for

  MDEV-21580 Allow packed sort keys in sort buffer

which just adds some virtual functions (without any calls to them)

0c35e80... by varun

MDEV-21838: Add information about packed addon fields in ANALYZE FORMAT=JSON

It is useful to know whether sorting uses addon fields[packed|unpacked] or ROWID.
Provide this information in ANALYZE FORMAT=JSON output.

8db6230... by Marko Mäkelä

Fix GCC -Wsign-compare

a263ca2... by Marko Mäkelä

Fix GCC -Wparentheses

138cbec... by Marko Mäkelä

MDEV-21724: Optimize page_cur_insert_low() redo logging

Inserting a record into an index page involves updating multiple
fields in the page header as well as updating the next-record links
and potentially updating fields related to the sparse page directory.

Let us cover the insert operations by higher-level log records, to avoid
'redundant' logging about the writes.

The code for applying the high-level log records will check the
consistency of the page thoroughly, to avoid crashes during recovery.
We will refuse to replay the inserts if any inconsistency is detected.
With innodb_force_recovery=1, recovery will continue, but the affected
pages may be more inconsistent if some changes were omitted.

mrec_ext_t: Introduce the EXTENDED record subtypes
INSERT_HEAP_REDUNDANT, INSERT_REUSE_REDUNDANT,
INSERT_HEAP_DYNAMIC, INSERT_REUSE_DYNAMIC.
The record will explicitly identify the page type and whether
the space will be allocated from PAGE_HEAP_TOP or reused from
the PAGE_FREE list. It will also tell how many bytes to copy
from the preceding record header and payload, and how to
initialize the rest of the record header and payload.

mtr_t::page_insert(): Write the high-level log records.

log_phys_t::apply(): Parse the high-level log records.

page_apply_insert_redundant(), page_apply_insert_dynamic():
Apply the high-level log records.

page_dir_split_slot(): Introduce a variant that does not write log
nor deal with ROW_FORMAT=COMPRESSED pages.

page_mem_alloc_heap(): Remove the mtr_t parameter

page_cur_insert_rec_low(): Write log only via mtr_t::page_insert().

dee6fb3... by Marko Mäkelä

MDEV-12353 Cleanup: Remove page_rec_get_base_extra_size()

The function page_rec_get_base_extra_size() became dead code in
commit 08ba388713946c03aa591899cd3a446a6202f882.

e15ae1c... by Marko Mäkelä

MDEV-12353: Improve page_cur_delete_rec() recovery

This is a follow-up to commit 572d20757be38157fa2309c35efdec19e68087f1
where we introduced the EXTENDED log record subtypes
DELETE_ROW_FORMAT_REDUNDANT and DELETE_ROW_FORMAT_DYNAMIC.

log_phys_t::apply(): If corruption was noticed, stop applying the log
unless innodb_force_recovery is set.

4431144... by Marko Mäkelä

MDEV-12353: Make UNDO_APPEND more robust

This is a follow-up to commit 84e3f9ce84c3e7fce70142cff4bea1c8b916810b
that introduced the EXTENDED log record of UNDO_APPEND subtype.

mtr_t::undo_append(): Accurately enforce the mtr_buf_t::MAX_DATA_SIZE
limit. Also, replace mtr_buf_t::push() with simpler code, to append 1 byte
to the log.

log_phys_t::undo_append(): Return whether the page was found to
be in an inconsistent state.

log_phys_t::apply(): If corruption was noticed, stop applying log
unless innodb_force_recovery is set.

a346ff3... by Sergey Vojtovich

cleanup trailing ws

127fee9... by Daniel-Solo <email address hidden>

MDEV-10569: Add RELEASE_ALL_LOCKS function. Implementing the SQL
function to release all named locks