diff --git a/storage/innobase/btr/btr0btr.cc b/storage/innobase/btr/btr0btr.cc index 76582d6bf37..0a7684ff997 100644 --- a/storage/innobase/btr/btr0btr.cc +++ b/storage/innobase/btr/btr0btr.cc @@ -2186,7 +2186,7 @@ static rec_t *btr_insert_into_right_sibling(uint32_t flags, btr_cur_t *cursor, page_t *next_page; btr_cur_t next_father_cursor; rec_t *rec = nullptr; - ulint max_size; + ulint max_size = 0; const space_id_t space = block->page.id.space(); @@ -2196,12 +2196,14 @@ static rec_t *btr_insert_into_right_sibling(uint32_t flags, btr_cur_t *cursor, bool is_leaf = page_is_leaf(next_page); - btr_page_get_father(cursor->index, next_block, mtr, &next_father_cursor); - page_cur_search(next_block, cursor->index, tuple, PAGE_CUR_LE, &next_page_cursor); - max_size = page_get_max_insert_size_after_reorganize(next_page, 1); + if (is_leaf && !cursor->index->is_clustered() && + !cursor->index->table->is_temporary() && + next_block->page.size.is_compressed()) { + max_size = page_get_max_insert_size_after_reorganize(next_page, 1); + } /* Extends gap lock for the next page */ if (!dict_table_is_locking_disabled(cursor->index->table)) { @@ -2223,6 +2225,8 @@ static rec_t *btr_insert_into_right_sibling(uint32_t flags, btr_cur_t *cursor, return (nullptr); } + btr_page_get_father(cursor->index, next_block, mtr, &next_father_cursor); + dberr_t err; ulint level = btr_page_get_level(next_page);