mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 15:50:51 +03:00 
			
		
		
		
	Import some ALTER TABLE test cases from MySQL 5.6 without modification. The adjustments will be in a separate commit.
		
			
				
	
	
		
			75 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| -- source include/have_innodb.inc
 | |
| -- source include/have_innodb_16k.inc
 | |
| --echo #
 | |
| --echo # Bug#15923864 (Bug#67718):
 | |
| --echo #  INNODB DRASTICALLY UNDER-FILLS PAGES IN CERTAIN CONDITIONS
 | |
| --echo #
 | |
| # InnoDB should try to insert to the next page before split,
 | |
| # if the insert record for split_and_insert is last of the page.
 | |
| # Otherwise, the follwing records 999,998,997 cause each page per record.
 | |
| #
 | |
| 
 | |
| --disable_query_log
 | |
| SET @old_innodb_file_per_table = @@innodb_file_per_table;
 | |
| --enable_query_log
 | |
| 
 | |
| SET GLOBAL innodb_file_per_table=ON;
 | |
| 
 | |
| CREATE TABLE t1 (a BIGINT PRIMARY KEY, b VARCHAR(4096)) ENGINE=InnoDB;
 | |
| INSERT INTO t1 VALUES (0, REPEAT('a', 4096));
 | |
| INSERT INTO t1 VALUES (1000, REPEAT('a', 4096));
 | |
| INSERT INTO t1 VALUES (1001, REPEAT('a', 4096));
 | |
| INSERT INTO t1 VALUES (1002, REPEAT('a', 4096));
 | |
| INSERT INTO t1 VALUES (1, REPEAT('a', 4096));
 | |
| INSERT INTO t1 VALUES (2, REPEAT('a', 4096));
 | |
| 
 | |
| # | 0, 1, 2 | 1000, 1001, 1002|
 | |
| 
 | |
| SELECT page_number, number_records
 | |
| FROM information_schema.innodb_sys_tablespaces s1,
 | |
| information_schema.innodb_buffer_page s2
 | |
| WHERE s1.space = s2.space AND name = 'test/t1'
 | |
| AND page_type = "INDEX" ORDER BY page_number;
 | |
| 
 | |
| INSERT INTO t1 VALUES (999, REPEAT('a', 4096));
 | |
| 
 | |
| # try to insert '999' to the end of '0,1,2' page, but no space
 | |
| # the next '1000,1001,1002' page has also no space.
 | |
| # | 0, 1, 2 | 999 | 1000, 1001, 1002|
 | |
| 
 | |
| SELECT page_number, number_records
 | |
| FROM information_schema.innodb_sys_tablespaces s1,
 | |
| information_schema.innodb_buffer_page s2
 | |
| WHERE s1.space = s2.space AND name = 'test/t1'
 | |
| AND page_type = "INDEX" ORDER BY page_number;
 | |
| 
 | |
| 
 | |
| INSERT INTO t1 VALUES (998, REPEAT('a', 4096));
 | |
| 
 | |
| # try to insert to the end of '0,1,2' page, but no space
 | |
| # the next '998' page has space.
 | |
| # | 0, 1, 2 | 998, 999 | 1000, 1001, 1002|
 | |
| 
 | |
| SELECT page_number, number_records
 | |
| FROM information_schema.innodb_sys_tablespaces s1,
 | |
| information_schema.innodb_buffer_page s2
 | |
| WHERE s1.space = s2.space AND name = 'test/t1'
 | |
| AND page_type = "INDEX" ORDER BY page_number;
 | |
| 
 | |
| INSERT INTO t1 VALUES (997, REPEAT('a', 4096));
 | |
| 
 | |
| # same
 | |
| # | 0, 1, 2 | 997, 998, 999 | 1000, 1001, 1002|
 | |
| 
 | |
| SELECT page_number, number_records
 | |
| FROM information_schema.innodb_sys_tablespaces s1,
 | |
| information_schema.innodb_buffer_page s2
 | |
| WHERE s1.space = s2.space AND name = 'test/t1'
 | |
| AND page_type = "INDEX" ORDER BY page_number;
 | |
| 
 | |
| DROP TABLE t1;
 | |
| 
 | |
| --disable_query_log
 | |
| SET GLOBAL innodb_file_per_table = @old_innodb_file_per_table;
 | |
| --enable_query_log
 |