mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 15:50:51 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			131 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| # Test for bug #14676111: WRONG PAGE_LEVEL WRITTEN FOR UPPER THAN FATHER PAGE AT BTR_LIFT_PAGE_UP()
 | |
| 
 | |
| -- source include/have_innodb.inc
 | |
| -- source include/have_debug.inc
 | |
| -- source include/count_sessions.inc
 | |
| 
 | |
| set @old_innodb_limit_optimistic_insert_debug = @@innodb_limit_optimistic_insert_debug;
 | |
| 
 | |
| CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB STATS_PERSISTENT=0;
 | |
| 
 | |
| #
 | |
| # make 4 leveled straight tree
 | |
| #
 | |
| set global innodb_limit_optimistic_insert_debug = 2;
 | |
| insert into t1 values (1);
 | |
| --connect (con5,localhost,root)
 | |
| begin;
 | |
| insert into t1 values (5);
 | |
| #current tree form
 | |
| # (1, 5)
 | |
| 
 | |
| --connect (con4,localhost,root)
 | |
| begin;
 | |
| insert into t1 values (4);
 | |
| #records in a page is limited to 2 artificially. root rise occurs
 | |
| #current tree form
 | |
| #   (1, 5)
 | |
| #(1, 4) (5)
 | |
| 
 | |
| --connection default
 | |
| insert into t1 values (3);
 | |
| #current tree form
 | |
| #    (1, 5)
 | |
| #  (1, 4) (5)
 | |
| #(1, 3) (4) (5)
 | |
| 
 | |
| --connect (con2,localhost,root)
 | |
| begin;
 | |
| insert into t1 values (2);
 | |
| #current tree form
 | |
| #      (1, 5)
 | |
| #    (1, 4) (5)
 | |
| #  (1, 3) (4) (5)
 | |
| #(1, 2) (3) (4) (5)
 | |
| 
 | |
| --connection default
 | |
| analyze table t1;
 | |
| select CLUST_INDEX_SIZE from information_schema.INNODB_SYS_TABLESTATS where NAME = 'test/t1';
 | |
| 
 | |
| --connection con4
 | |
| rollback;
 | |
| --disconnect con4
 | |
| --connection default
 | |
| 
 | |
| #deleting 1 record of 2 records don't cause merge artificially.
 | |
| #current tree form
 | |
| #      (1, 5)
 | |
| #    (1)    (5)
 | |
| #  (1, 3)     (5)
 | |
| #(1, 2) (3)     (5)
 | |
| 
 | |
| analyze table t1;
 | |
| select CLUST_INDEX_SIZE from information_schema.INNODB_SYS_TABLESTATS where NAME = 'test/t1';
 | |
| 
 | |
| --connection con5
 | |
| rollback;
 | |
| --disconnect con5
 | |
| --connection default
 | |
| 
 | |
| #deleting 1 record of 2 records don't cause merge artificially.
 | |
| #current tree form
 | |
| #      (1)
 | |
| #    (1)
 | |
| #  (1, 3) <- lift up this level next, when deleting node ptr
 | |
| #(1, 2) (3) <- merged next
 | |
| 
 | |
| analyze table t1;
 | |
| select CLUST_INDEX_SIZE from information_schema.INNODB_SYS_TABLESTATS where NAME = 'test/t1';
 | |
| 
 | |
| #
 | |
| # cause merge at level 0
 | |
| #
 | |
| 
 | |
| #disable the artificial limitation of records in a page
 | |
| set global innodb_limit_optimistic_insert_debug = 10000;
 | |
| --connection con2
 | |
| rollback;
 | |
| --disconnect con2
 | |
| --connection default
 | |
| 
 | |
| #merge page occurs. and lift up occurs.
 | |
| #current tree form
 | |
| #      (1)
 | |
| #    (1)
 | |
| #  (1, 3)
 | |
| 
 | |
| analyze table t1;
 | |
| select CLUST_INDEX_SIZE from information_schema.INNODB_SYS_TABLESTATS where NAME = 'test/t1';
 | |
| 
 | |
| begin;
 | |
| insert into t1 values (2);
 | |
| #current tree form
 | |
| #      (1)
 | |
| #    (1) <- lift up this level next, because it is not root
 | |
| #  (1, 2, 3)
 | |
| rollback;
 | |
| 
 | |
| #current tree form
 | |
| #      (1)
 | |
| #    (1, 3)
 | |
| 
 | |
| analyze table t1;
 | |
| select CLUST_INDEX_SIZE from information_schema.INNODB_SYS_TABLESTATS where NAME = 'test/t1';
 | |
| 
 | |
| begin;
 | |
| insert into t1 values (2);
 | |
| #current tree form
 | |
| #      (1)
 | |
| #    (1, 2, 3) <- lift up this level next, because the father is root
 | |
| rollback;
 | |
| #current tree form
 | |
| #      (1, 3)
 | |
| 
 | |
| analyze table t1;
 | |
| select CLUST_INDEX_SIZE from information_schema.INNODB_SYS_TABLESTATS where NAME = 'test/t1';
 | |
| 
 | |
| drop table t1;
 | |
| 
 | |
| set global innodb_limit_optimistic_insert_debug = @old_innodb_limit_optimistic_insert_debug;
 | |
| -- source include/wait_until_count_sessions.inc
 |