Last commit made on 2022-06-29
Get this branch:
git clone -b bb-10.10-MDEV-28930

Branch merges

Branch information


Recent commits

86ee039... 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.

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

51de80a... by Sergei Golubchik

put binlog_cache_data on a memroot

cb1f08b... by Sergei Golubchik

always commit for non-trans engines

even if called from binlog_rollback()

8fdb14f... by Nikita Malyavin


913de27... by Sergei Golubchik

don't crash if ALTER TABLE fails and a long transaction blocks MDL upgrade