maria:bb-11.0-MDEV-16329-online-alter

Last commit made on 2023-02-17
Get this branch:
git clone -b bb-11.0-MDEV-16329-online-alter https://git.launchpad.net/maria

Branch merges

Branch information

Name:
bb-11.0-MDEV-16329-online-alter
Repository:
lp:maria

Recent commits

57e3333... by Nikita Malyavin

fix after rebasing onto MDEV-30378 fix

d640df0... by Nikita Malyavin

MDEV-29068 Cascade foreign key updates do not apply in online alter

eaf25df... by Nikita Malyavin

fix main.query_cache_innodb and main.alter_table_{online,lock}

8bf9a3b... by Nikita Malyavin

MDEV-29069 follow-up: improve DEFAULT rules

previously, fields with DEFAULTs were allowed just when expression is
deterministic. In case of replication, we should recursively check that
underlying fields of expression also either have explicit values, or
have DEFAULT following this validity rule.

3378096... by Nikita Malyavin

few rgi assertions. this can proof that rgi is always present

f1ff63b... by Nikita Malyavin

MDEV-29069 follow-up optimize find_key

1. Avoid traversion of all key_parts for all keys for every event.
The key is enough to be determined only once per table open, so
RPL_TABLE_LIST can be used to store designated key.
We suppose here that no key can be deleted on the replica node.
The algorithm "choose PRIMARY KEY first, then if none, any other key" will
work for any ROW_FORMAT.
Proof:
For FULL any key is good. If PK is available, it'll be chosen.
For MINIMAL PK is always sent. If there's no PK, then a full image is sent.
So either it has PK, and it's chosen, or ROW_FORMAT fallbacks to FULL.
NOBLOB works same as MINIMAL.

2. Move optimization for avoiding m_key allocation inside find_key,
so now it is used by UPDATE events too.

3. Together with unpack_row, do_before_row_operations is now same for
Update_rows_log_event and Delete_rows_log_event, except for a few bits.
It's all moved to a common function
Rows_log_event::do_before_lookup_row_operations

553a6e2... by Nikita Malyavin

MDEV-29069 follow-up: fix replication with extra fields + tests

1. Set all extra fields in read_set, so that defaults calculation wouldn't
fail.

2. Allowing PK removal/change means that field_index <= master_columns
doesn't guarantee having a value. Master field should have explicit value.

6b5f488... by Nikita Malyavin

SHOW CREATE collations

21c8360... by Nikita Malyavin

rpl: check should go after defaults and vcols update

2801fd2... by Nikita Malyavin

MDEV-29069 follow-up: support partially usable keys