diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2019-03-25 16:03:24 +0200 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2019-03-25 16:03:24 +0200 |
commit | 525e79b057ce1256aac9f8248b89d8d507ab22c3 (patch) | |
tree | 1bfdc7452ca5d981d905918b44930a1e0e3f9f65 /mysql-test/suite/innodb | |
parent | ade0a0e9d57906e6a32c145c7201dbf216392f12 (diff) | |
download | mariadb-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.result | 6 |
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; |