maria:bb-10.10-MDEV-28771

Last commit made on 2022-06-30
Get this branch:
git clone -b bb-10.10-MDEV-28771 https://git.launchpad.net/maria

Branch merges

Branch information

Name:
bb-10.10-MDEV-28771
Repository:
lp:maria

Recent commits

0c997f8... by Nikita Malyavin

speed up main.alter_table_online_debug

7d2f787... by Nikita Malyavin

MDEV-28771 control Cache_flip_event_log lifetime with reference count

77fbbaf... by Nikita Malyavin

Cherry-pick ffc338620

Mark online_alter_binlog->error when ALTER TABLE fails

3ba59b0... by Nikita Malyavin

Revert f4cf1776b8 MDEV-28771 (part 2) validate TABLE_SHARE

d32089d... by Nikita Malyavin

MDEV-28930 ALTER TABLE Deadlocks with parallel TL_WRITE

ALTER ONLINE TABLE acquires table with TL_READ. Myisam normally acquires
TL_WRITE for DML, which makes it hang until table is freed.

We deadlock once ALTER upgrades its MDL lock.

Solution:
Unlock table earlier. We don't need to hold TL_READ once we finished
copying. Relay log replication requires no data locks on `from` table.

6cfcb36... by Sergei Golubchik

separate online_alter_cache_data from binlog_cache_data

562d33d... by Sergei Golubchik

MDEV-28944 XA assertions failing in binlog_rollback and binlog_commit

f4cf177... by Sergei Golubchik

MDEV-28771 (part 2) validate TABLE_SHARE

TABLE_SHARE referenced by binlog_cache_data isn't protected in any way,
so if ALTER TABLE fails, it can free it and binlog_cache_data will
end up with a pointer to nowhere. Let's validate the share before
dereferencing the pointer.

Another approach would be to protect the share, but it'll affect
concurrency as other connections will have to wait for it.

Fixes the crash of main.alter_table_online_debug

71d87db... by Sergei Golubchik

MDEV-28771 Assertion `table->in_use&&tdc->flushed' failed after ALTER

don't simply set tdc->flushed, use flush_unused(1) that removes opened
but unused TABLE instances (that would otherwise prevent TABLE_SHARE from
being closed by keeping the ref_count>0).

f60c71b... by Sergei Golubchik

test rename alter_table_online -> alter_table_online_debug