mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 15:50:51 +03:00 
			
		
		
		
	Move row size check to early CREATE/ALTER TABLE phase. Stop checking on table open. dict_index_add_to_cache(): remove parameter 'strict', stop checking row size dict_index_t::record_size_info_t: this is a result of row size check operation create_table_info_t::row_size_is_acceptable(): performs row size check. Issues error or warning. Writes first overflow field to InnoDB log. create_table_info_t::create_table(): add row size check dict_index_t::record_size_info(): this is a refactored version of dict_index_t::rec_potentially_too_big(). New version doesn't change global state of a program but return all interesting info. And it's callers who decide how to handle row size overflow. dict_index_t::rec_potentially_too_big(): removed
		
			
				
	
	
		
			24 lines
		
	
	
		
			746 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			24 lines
		
	
	
		
			746 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| -- source include/innodb_page_size_small.inc
 | |
| 
 | |
| call mtr.add_suppression('InnoDB: Cannot add field.*because after adding it, the row size is');
 | |
| 
 | |
| let $file_per_table=`select @@innodb_file_per_table`;
 | |
| 
 | |
| SET GLOBAL innodb_file_per_table=on;
 | |
| SET GLOBAL innodb_strict_mode=on;
 | |
| 
 | |
| set old_alter_table=0;
 | |
| 
 | |
| CREATE TABLE bug53591(a text charset utf8 not null)
 | |
| ENGINE=InnoDB KEY_BLOCK_SIZE=1;
 | |
| -- replace_result 8126 {checked_valid} 4030 {checked_valid} 1982 {checked_valid}
 | |
| -- error ER_TOO_BIG_ROWSIZE
 | |
| ALTER TABLE bug53591 ADD PRIMARY KEY(a(220));
 | |
| -- replace_result 8126 {checked_valid} 4030 {checked_valid} 1982 {checked_valid}
 | |
| SHOW WARNINGS;
 | |
| 
 | |
| DROP TABLE bug53591;
 | |
| 
 | |
| EVAL SET GLOBAL innodb_file_per_table=$file_per_table;
 | |
| SET GLOBAL innodb_strict_mode=DEFAULT;
 |