mariadb/storage/innobase/btr
Marko Mäkelä 431200090e MDEV-22867 Assertion instant.n_core_fields == n_core_fields failed
This is a race condition where a table on which a 10.3-style
instant ADD COLUMN is emptied during the execution of
ALTER TABLE ... DROP COLUMN ..., DROP INDEX ..., ALGORITHM=NOCOPY.

In commit 2c4844c9e7 the
function instant_metadata_lock() would prevent this race condition.
But, it would also hold a page latch on the leftmost leaf page of
clustered index for the duration of a possible DROP INDEX operation.

The race could be fixed by restoring the function
instant_metadata_lock() that was removed in
commit ea37b14409
but it would be more future-proof to prevent the
dict_index_t::clear_instant_add() call from being issued at all.

We at some point support DROP COLUMN ..., ADD INDEX ..., ALGORITHM=NOCOPY
and that would spend a non-trivial amount of
execution time in ha_innobase::inplace_alter(),
making a server hang possible. Currently this is not supported
and our added test case will notice when the support is introduced.

dict_index_t::must_avoid_clear_instant_add(): Determine if
a call to clear_instant_add() must be avoided.

btr_discard_only_page_on_level(): Preserve the metadata record
if must_avoid_clear_instant_add() holds.

btr_cur_optimistic_delete_func(), btr_cur_pessimistic_delete():
Do not remove the metadata record even if the table becomes empty
but must_avoid_clear_instant_add() holds.

btr_pcur_store_position(): Relax a debug assertion.

This is joint work with Thirunarayanan Balathandayuthapani.
2020-06-12 20:33:39 +03:00
..
btr0btr.cc MDEV-22867 Assertion instant.n_core_fields == n_core_fields failed 2020-06-12 20:33:39 +03:00
btr0bulk.cc Merge 10.4 into 10.5 2020-05-05 21:16:22 +03:00
btr0cur.cc MDEV-22867 Assertion instant.n_core_fields == n_core_fields failed 2020-06-12 20:33:39 +03:00
btr0defragment.cc Merge 10.4 into 10.5 2020-05-05 21:16:22 +03:00
btr0pcur.cc MDEV-22867 Assertion instant.n_core_fields == n_core_fields failed 2020-06-12 20:33:39 +03:00
btr0sea.cc MDEV-22877 Avoid unnecessary buf_pool.page_hash S-latch acquisition 2020-06-12 16:22:03 +03:00