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

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

Branch merges

Branch information

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

Recent commits

084dce0... by Nikita Malyavin

fix Run-Time Check Failure on Windows

d8deeed... by Nikita Malyavin

fix build

0c059c4... by Nikita Malyavin

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

da87ced... by Nikita Malyavin

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

cbb7d06... by Nikita Malyavin

MDEV-29069 follow-up: improve DEFAULT rules

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

37d6850... by Nikita Malyavin

MDEV-29069 follow-up: support partially usable keys

10c1c45... by Nikita Malyavin

MDEV-29069 follow-up: allow non-deterministic DEFAULTs

e0177ff... by Nikita Malyavin

MDEV-29069 ER_KEY_NOT_FOUND on online autoinc addition + concurrent DELETE

We can't rely on keys formed with columns that were added during this
ALTER. These columns can be set with non-deterministic values, which can
end up with broken or incorrect search.

The same applies to the keys that contain reliable columns, but also have
bogus ones. Using them can narrow the search, but they're also ignored.

Also, added columns shouldn't be considered during the record match. To
determine them, table->has_value_set bitmap is used.

To fill has_value_set bitmap in the find_key call, extra unpack_row call
has been added.

For replication case, extra replica columns can be considered for this
case. We try to ignore them, too.

66ca9b3... by Sergei Golubchik

cleanup: cache the result of Rows_log_event::find_key()

334c64a... by Sergei Golubchik

cleanup: remove rpl_group_info::get_table_data()

use table->pos_in_table_list instead.

Also, table->in_use is always set