diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2018-06-04 15:55:37 +0300 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2018-06-04 15:55:37 +0300 |
commit | 8dc70c862b8ec115fd9a3c2b37c746ffc4f0d3cc (patch) | |
tree | 3e2a87e5740123c9e497da1c222a82e4ce0cd57b /mysql-test/main/cte_nonrecursive.test | |
parent | 5932a4e77de93880d06ac537a566a8a0f312d675 (diff) | |
download | mariadb-git-8dc70c862b8ec115fd9a3c2b37c746ffc4f0d3cc.tar.gz |
MDEV-16376 ASAN: heap-use-after-free in gcol.innodb_virtual_debug
After a failed ADD INDEX, dict_index_remove_from_cache_low()
could iterate the index fields and dereference a freed virtual
column object when trying to remove the index from the v_indexes
of the virtual column.
This regression was caused by a merge of
MDEV-16119 InnoDB lock->index refers to a freed object.
ha_innobase_inplace_ctx::clear_added_indexes(): Detach the
indexes of uncommitted indexes from virtual columns, so that
the iteration in dict_index_remove_from_cache_low() can be avoided.
ha_innobase::prepare_inplace_alter_table(): Ignore uncommitted
corrupted indexes when rejecting ALTER TABLE. (This minor bug was
revealed by the extension of the test case.)
dict_index_t::detach_columns(): Detach an index from virtual columns.
Invoked by both dict_index_remove_from_cache_low() and
ha_innobase_inplace_ctx::clear_added_indexes().
dict_col_t::detach(const dict_index_t& index): Detach an index from
a column.
dict_col_t::is_virtual(): Replaces dict_col_is_virtual().
dict_index_t::has_virtual(): Replaces dict_index_has_virtual().
Diffstat (limited to 'mysql-test/main/cte_nonrecursive.test')
0 files changed, 0 insertions, 0 deletions