summaryrefslogtreecommitdiff
path: root/mysql-test/suite/innodb
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2019-03-25 16:03:24 +0200
committerMarko Mäkelä <marko.makela@mariadb.com>2019-03-25 16:03:24 +0200
commit525e79b057ce1256aac9f8248b89d8d507ab22c3 (patch)
tree1bfdc7452ca5d981d905918b44930a1e0e3f9f65 /mysql-test/suite/innodb
parentade0a0e9d57906e6a32c145c7201dbf216392f12 (diff)
downloadmariadb-git-525e79b057ce1256aac9f8248b89d8d507ab22c3.tar.gz
MDEV-19022: InnoDB fails to cleanup useless B-tree pages
The test case for reproducing MDEV-14126 demonstrates that InnoDB can end up with an index tree where a non-leaf page has only one child page. The test case innodb.innodb_bug14676111 demonstrates that such pages are sometimes unavoidable, because InnoDB does not implement any sort of B-tree rotation. But, there is no reason to allow a root page with only one child page. btr_cur_node_ptr_delete(): Replaces btr_node_ptr_delete(). btr_page_get_father(): Declare globally. btr_discard_only_page_on_level(): Declare with ATTRIBUTE_COLD. It turns out that this function is not covered by the innodb.innodb_bug14676111 test case after all. btr_discard_page(): If the root page ends up having only one child page, shrink the tree by invoking btr_lift_page_up().
Diffstat (limited to 'mysql-test/suite/innodb')
-rw-r--r--mysql-test/suite/innodb/r/innodb_bug14676111.result6
1 files changed, 3 insertions, 3 deletions
diff --git a/mysql-test/suite/innodb/r/innodb_bug14676111.result b/mysql-test/suite/innodb/r/innodb_bug14676111.result
index d1e21c92d95..49d099263de 100644
--- a/mysql-test/suite/innodb/r/innodb_bug14676111.result
+++ b/mysql-test/suite/innodb/r/innodb_bug14676111.result
@@ -39,7 +39,7 @@ Table Op Msg_type Msg_text
test.t1 analyze status OK
select CLUST_INDEX_SIZE from information_schema.INNODB_SYS_TABLESTATS where NAME = 'test/t1';
CLUST_INDEX_SIZE
-5
+4
set global innodb_limit_optimistic_insert_debug = 10000;
connection con2;
rollback;
@@ -50,7 +50,7 @@ Table Op Msg_type Msg_text
test.t1 analyze status OK
select CLUST_INDEX_SIZE from information_schema.INNODB_SYS_TABLESTATS where NAME = 'test/t1';
CLUST_INDEX_SIZE
-3
+2
begin;
insert into t1 values (2);
rollback;
@@ -59,7 +59,7 @@ Table Op Msg_type Msg_text
test.t1 analyze status OK
select CLUST_INDEX_SIZE from information_schema.INNODB_SYS_TABLESTATS where NAME = 'test/t1';
CLUST_INDEX_SIZE
-2
+1
begin;
insert into t1 values (2);
rollback;