summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2021-01-22 14:27:05 +0200
committerMarko Mäkelä <marko.makela@mariadb.com>2021-01-22 14:27:05 +0200
commita6937dfa1d7868205e3c67ab5aa0fe4d75815c09 (patch)
treefb7b4838f3fd1cc529b2641bcf06c0e732debc3c
parent18d3aaf3c0f268102cd4763abb2b9001d107665f (diff)
downloadmariadb-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.cc9
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()) {