diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2021-01-22 14:27:05 +0200 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2021-01-22 14:27:05 +0200 |
commit | a6937dfa1d7868205e3c67ab5aa0fe4d75815c09 (patch) | |
tree | fb7b4838f3fd1cc529b2641bcf06c0e732debc3c | |
parent | 18d3aaf3c0f268102cd4763abb2b9001d107665f (diff) | |
download | mariadb-git-bb-10.6-MDEV-24653.tar.gz |
MDEV-24653 assertion in innobase_instant_try()bb-10.6-MDEV-24653
-rw-r--r-- | storage/innobase/handler/handler0alter.cc | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/storage/innobase/handler/handler0alter.cc b/storage/innobase/handler/handler0alter.cc index 9cd65526930..54f2056f392 100644 --- a/storage/innobase/handler/handler0alter.cc +++ b/storage/innobase/handler/handler0alter.cc @@ -5822,11 +5822,13 @@ add_all_virtual: const rec_t* rec = btr_pcur_get_rec(&pcur); que_thr_t* thr = pars_complete_graph_for_exec( NULL, trx, ctx->heap, NULL); + const bool is_root = block->page.id().page_no() == index->page; dberr_t err = DB_SUCCESS; if (rec_is_metadata(rec, *index)) { ut_ad(page_rec_is_user_rec(rec)); - if (!rec_is_alter_metadata(rec, *index) + if (is_root + && !rec_is_alter_metadata(rec, *index) && !index->table->instant && !page_has_next(block->frame) && page_rec_is_last(rec, block->frame)) { @@ -5908,12 +5910,13 @@ add_all_virtual: } btr_pcur_close(&pcur); goto func_exit; - } else if (page_rec_is_supremum(rec) && !index->table->instant) { + } else if (is_root && page_rec_is_supremum(rec) + && !index->table->instant) { empty_table: /* The table is empty. */ ut_ad(fil_page_index_page_check(block->frame)); ut_ad(!page_has_siblings(block->frame)); - ut_ad(block->page.id().page_no() == index->page); + ut_ad(is_root); /* MDEV-17383: free metadata BLOBs! */ btr_page_empty(block, NULL, index, 0, &mtr); if (index->is_instant()) { |