summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2020-06-12 20:30:01 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2020-06-12 20:33:39 +0300
commit431200090e404b1fd618f1b6bda1afd830e79ce0 (patch)
treefe73697efcf9e2ec478b9f84f5f2866729e81a83 /CMakeLists.txt
parentd7d80689b37f02129a32f5dc93729d539aca2a39 (diff)
downloadmariadb-git-431200090e404b1fd618f1b6bda1afd830e79ce0.tar.gz
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 2c4844c9e76427525e8c39a2d72686085efe89c3 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 ea37b144094a0c2ebfc6774047fd473c1b2a8658 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.
Diffstat (limited to 'CMakeLists.txt')
0 files changed, 0 insertions, 0 deletions