mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	MySQL 5.7 introduced WL#7943: InnoDB: Implement Information_Schema.Files to provide a long-term alternative for accessing tablespace metadata. The INFORMATION_SCHEMA.INNODB_* views are considered internal interfaces that are subject to change or removal between releases. So, users should refer to I_S.FILES instead of I_S.INNODB_SYS_TABLESPACES to fetch metadata about CREATE TABLESPACE. Because MariaDB 10.2 does not support CREATE TABLESPACE or CREATE TABLE…TABLESPACE for InnoDB, it does not make sense to support I_S.FILES either. So, let MariaDB 10.2 omit the code that was added in MySQL 5.7. After this change, I_S.FILES will report the empty result, unless some other storage engine in MariaDB 10.2 implements the interface. (The I_S.FILES interface was originally created for the NDB Cluster.)
		
			
				
	
	
		
			453 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			453 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
SET default_storage_engine=InnoDB;
 | 
						|
# Test 1) Show the page size from Information Schema
 | 
						|
SELECT variable_value FROM information_schema.global_status
 | 
						|
WHERE LOWER(variable_name) = 'innodb_page_size';
 | 
						|
variable_value
 | 
						|
8192
 | 
						|
# Test 2) The number of buffer pool pages is dependent upon the page size.
 | 
						|
SELECT variable_value FROM information_schema.global_status
 | 
						|
WHERE LOWER(variable_name) = 'innodb_buffer_pool_pages_total';
 | 
						|
variable_value
 | 
						|
{checked_valid}
 | 
						|
# Test 3) Query some information_shema tables that are dependent upon
 | 
						|
#         the page size.
 | 
						|
SELECT	t.name table_name, t.n_cols, t.flag table_flags,
 | 
						|
i.name index_name, i.page_no root_page, i.type,
 | 
						|
i.n_fields, i.merge_threshold
 | 
						|
FROM	INFORMATION_SCHEMA.INNODB_SYS_TABLES  t,
 | 
						|
INFORMATION_SCHEMA.INNODB_SYS_INDEXES i
 | 
						|
WHERE	t.table_id = i.table_id
 | 
						|
AND	t.name LIKE 'mysql%'
 | 
						|
	ORDER BY t.name, i.index_id;
 | 
						|
table_name	n_cols	table_flags	index_name	root_page	type	n_fields	merge_threshold
 | 
						|
mysql/innodb_index_stats	11	33	PRIMARY	3	3	4	50
 | 
						|
mysql/innodb_table_stats	9	33	PRIMARY	3	3	2	50
 | 
						|
CREATE TABLE t1 (a INT KEY, b TEXT) ROW_FORMAT=REDUNDANT ENGINE=innodb;
 | 
						|
CREATE TABLE t2 (a INT KEY, b TEXT) ROW_FORMAT=COMPACT ENGINE=innodb;
 | 
						|
CREATE TABLE t3 (a INT KEY, b TEXT) ROW_FORMAT=COMPRESSED ENGINE=innodb;
 | 
						|
CREATE TABLE t4 (a INT KEY, b TEXT) ROW_FORMAT=DYNAMIC ENGINE=innodb;
 | 
						|
SELECT	t.name table_name, t.n_cols, t.flag table_flags,
 | 
						|
i.name index_name, i.page_no root_page, i.type,
 | 
						|
i.n_fields, i.merge_threshold
 | 
						|
FROM	INFORMATION_SCHEMA.INNODB_SYS_TABLES  t,
 | 
						|
INFORMATION_SCHEMA.INNODB_SYS_INDEXES i
 | 
						|
WHERE	t.table_id = i.table_id
 | 
						|
AND	t.name LIKE 'test%'
 | 
						|
	ORDER BY t.name, i.name;
 | 
						|
table_name	n_cols	table_flags	index_name	root_page	type	n_fields	merge_threshold
 | 
						|
test/t1	5	0	PRIMARY	3	3	1	50
 | 
						|
test/t2	5	1	PRIMARY	3	3	1	50
 | 
						|
test/t3	5	39	PRIMARY	3	3	1	50
 | 
						|
test/t4	5	33	PRIMARY	3	3	1	50
 | 
						|
=== information_schema.innodb_sys_tablespaces and innodb_sys_datafiles ===
 | 
						|
Space_Name	Space_Type	Page_Size	Zip_Size	Formats_Permitted	Path
 | 
						|
test/t1	Single	DEFAULT	0	Compact or Redundant	MYSQLD_DATADIR/test/t1.ibd
 | 
						|
test/t2	Single	DEFAULT	0	Compact or Redundant	MYSQLD_DATADIR/test/t2.ibd
 | 
						|
test/t3	Single	DEFAULT	4096	Compressed	MYSQLD_DATADIR/test/t3.ibd
 | 
						|
test/t4	Single	DEFAULT	0	Dynamic	MYSQLD_DATADIR/test/t4.ibd
 | 
						|
DROP TABLE t1, t2, t3, t4;
 | 
						|
# Test 4) The maximum row size is dependent upon the page size.
 | 
						|
#         Redundant: 4027, Compact: 4030.
 | 
						|
#         Compressed: 4030, Dynamic: 4030.
 | 
						|
#         Each row format has its own amount of overhead that
 | 
						|
#         varies depending on number of fields and other overhead.
 | 
						|
SET SESSION innodb_strict_mode = ON;
 | 
						|
CREATE TABLE t1 (
 | 
						|
c01 char(200), c02 char(200), c03 char(200), c04 char(200), c05 char(200),
 | 
						|
c06 char(200), c07 char(200), c08 char(200), c09 char(200), c10 char(200),
 | 
						|
c11 char(200), c12 char(200), c13 char(200), c14 char(200), c15 char(200),
 | 
						|
c16 char(200), c17 char(200), c18 char(200), c19 char(200), c20 char(155)
 | 
						|
) ROW_FORMAT=redundant;
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
c01 char(200), c02 char(200), c03 char(200), c04 char(200), c05 char(200),
 | 
						|
c06 char(200), c07 char(200), c08 char(200), c09 char(200), c10 char(200),
 | 
						|
c11 char(200), c12 char(200), c13 char(200), c14 char(200), c15 char(200),
 | 
						|
c16 char(200), c17 char(200), c18 char(200), c19 char(200), c20 char(156)
 | 
						|
) ROW_FORMAT=redundant;
 | 
						|
ERROR 42000: Row size too large (> max_row_size). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
 | 
						|
CREATE TABLE t1 (
 | 
						|
c01 char(200), c02 char(200), c03 char(200), c04 char(200), c05 char(200),
 | 
						|
c06 char(200), c07 char(200), c08 char(200), c09 char(200), c10 char(200),
 | 
						|
c11 char(200), c12 char(200), c13 char(200), c14 char(200), c15 char(200),
 | 
						|
c16 char(200), c17 char(200), c18 char(200), c19 char(200), c20 char(202)
 | 
						|
) ROW_FORMAT=compact;
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
c01 char(200), c02 char(200), c03 char(200), c04 char(200), c05 char(200),
 | 
						|
c06 char(200), c07 char(200), c08 char(200), c09 char(200), c10 char(200),
 | 
						|
c11 char(200), c12 char(200), c13 char(200), c14 char(200), c15 char(200),
 | 
						|
c16 char(200), c17 char(200), c18 char(200), c19 char(200), c20 char(203)
 | 
						|
) ROW_FORMAT=compact;
 | 
						|
ERROR 42000: Row size too large (> max_row_size). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
 | 
						|
CREATE TABLE t1 (
 | 
						|
c01 char(200), c02 char(200), c03 char(200), c04 char(200), c05 char(200),
 | 
						|
c06 char(200), c07 char(200), c08 char(200), c09 char(200), c10 char(200),
 | 
						|
c11 char(200), c12 char(200), c13 char(200), c14 char(200), c15 char(200),
 | 
						|
c16 char(200), c17 char(200), c18 char(200), c19 char(200), c20 char(103)
 | 
						|
) ROW_FORMAT=compressed;
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
c01 char(200), c02 char(200), c03 char(200), c04 char(200), c05 char(200),
 | 
						|
c06 char(200), c07 char(200), c08 char(200), c09 char(200), c10 char(200),
 | 
						|
c11 char(200), c12 char(200), c13 char(200), c14 char(200), c15 char(200),
 | 
						|
c16 char(200), c17 char(200), c18 char(200), c19 char(200), c20 char(106)
 | 
						|
) ROW_FORMAT=compressed;
 | 
						|
ERROR 42000: Row size too large (> max_row_size). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
 | 
						|
CREATE TABLE t1 (
 | 
						|
c01 char(200), c02 char(200), c03 char(200), c04 char(200), c05 char(200),
 | 
						|
c06 char(200), c07 char(200), c08 char(200), c09 char(200), c10 char(200),
 | 
						|
c11 char(200), c12 char(200), c13 char(200), c14 char(200), c15 char(200),
 | 
						|
c16 char(200), c17 char(200), c18 char(200), c19 char(200), c20 char(202)
 | 
						|
) ROW_FORMAT=dynamic;
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
c01 char(200), c02 char(200), c03 char(200), c04 char(200), c05 char(200),
 | 
						|
c06 char(200), c07 char(200), c08 char(200), c09 char(200), c10 char(200),
 | 
						|
c11 char(200), c12 char(200), c13 char(200), c14 char(200), c15 char(200),
 | 
						|
c16 char(200), c17 char(200), c18 char(200), c19 char(200), c20 char(203)
 | 
						|
) ROW_FORMAT=dynamic;
 | 
						|
ERROR 42000: Row size too large (> max_row_size). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
 | 
						|
CREATE TABLE t1 (a varchar(128) character set utf8,
 | 
						|
b varchar(128) character set utf8,
 | 
						|
c varchar(128) character set utf8,
 | 
						|
d varchar(128) character set utf8,
 | 
						|
PRIMARY KEY (a,b,c,d))
 | 
						|
ENGINE=innodb;
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (a varchar(128) character set utf8,
 | 
						|
b varchar(128) character set utf8,
 | 
						|
c varchar(128) character set utf8,
 | 
						|
d varchar(129) character set utf8,
 | 
						|
PRIMARY KEY (a,b,c,d))
 | 
						|
ENGINE=innodb;
 | 
						|
ERROR 42000: Specified key was too long; max key length is 1536 bytes
 | 
						|
CREATE TABLE t1 (a varchar(128) character set utf8,
 | 
						|
b varchar(128) character set utf8,
 | 
						|
c varchar(128) character set utf8,
 | 
						|
d varchar(128) character set utf8,
 | 
						|
e varchar(128) character set utf8,
 | 
						|
PRIMARY KEY (a), KEY (b,c,d,e))
 | 
						|
ENGINE=innodb;
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (a varchar(128) character set utf8,
 | 
						|
b varchar(128) character set utf8,
 | 
						|
c varchar(128) character set utf8,
 | 
						|
d varchar(128) character set utf8,
 | 
						|
e varchar(129) character set utf8,
 | 
						|
PRIMARY KEY (a), KEY (b,c,d,e))
 | 
						|
ENGINE=innodb;
 | 
						|
ERROR 42000: Specified key was too long; max key length is 1536 bytes
 | 
						|
# Test 5) Make sure that KEY_BLOCK_SIZE=8, 4, 2 & 1 are all
 | 
						|
#         accepted and that KEY_BLOCK_SIZE=16 is rejected in
 | 
						|
#         strict mode and converted to 8 in non-strict mode.
 | 
						|
SET SESSION innodb_strict_mode = ON;
 | 
						|
CREATE TABLE t1 (i int) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=16;
 | 
						|
ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options")
 | 
						|
SHOW WARNINGS;
 | 
						|
Level	Code	Message
 | 
						|
Warning	1478	InnoDB: KEY_BLOCK_SIZE=16 cannot be larger than 8.
 | 
						|
Error	1005	Can't create table `test`.`t1` (errno: 140 "Wrong create options")
 | 
						|
Warning	1030	Got error 140 "Wrong create options" from storage engine InnoDB
 | 
						|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
 | 
						|
SHOW WARNINGS;
 | 
						|
Level	Code	Message
 | 
						|
SELECT table_name, row_format, create_options
 | 
						|
FROM information_schema.tables WHERE table_name = 't1';
 | 
						|
table_name	row_format	create_options
 | 
						|
t1	Compressed	row_format=COMPRESSED key_block_size=8
 | 
						|
ALTER TABLE t1 KEY_BLOCK_SIZE=4;
 | 
						|
SHOW WARNINGS;
 | 
						|
Level	Code	Message
 | 
						|
SELECT table_name, row_format, create_options
 | 
						|
FROM information_schema.tables WHERE table_name = 't1';
 | 
						|
table_name	row_format	create_options
 | 
						|
t1	Compressed	row_format=COMPRESSED key_block_size=4
 | 
						|
ALTER TABLE t1 KEY_BLOCK_SIZE=2;
 | 
						|
SHOW WARNINGS;
 | 
						|
Level	Code	Message
 | 
						|
SELECT table_name, row_format, create_options
 | 
						|
FROM information_schema.tables WHERE table_name = 't1';
 | 
						|
table_name	row_format	create_options
 | 
						|
t1	Compressed	row_format=COMPRESSED key_block_size=2
 | 
						|
ALTER TABLE t1 KEY_BLOCK_SIZE=1;
 | 
						|
SHOW WARNINGS;
 | 
						|
Level	Code	Message
 | 
						|
SELECT table_name, row_format, create_options
 | 
						|
FROM information_schema.tables WHERE table_name = 't1';
 | 
						|
table_name	row_format	create_options
 | 
						|
t1	Compressed	row_format=COMPRESSED key_block_size=1
 | 
						|
ALTER TABLE t1 KEY_BLOCK_SIZE=0;
 | 
						|
SHOW WARNINGS;
 | 
						|
Level	Code	Message
 | 
						|
SELECT table_name, row_format, create_options
 | 
						|
FROM information_schema.tables WHERE table_name = 't1';
 | 
						|
table_name	row_format	create_options
 | 
						|
t1	Compressed	row_format=COMPRESSED
 | 
						|
DROP TABLE t1;
 | 
						|
SET SESSION innodb_strict_mode = OFF;
 | 
						|
CREATE TABLE t1 (i int) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=16;
 | 
						|
Warnings:
 | 
						|
Warning	1478	InnoDB: ignoring KEY_BLOCK_SIZE=16.
 | 
						|
SHOW WARNINGS;
 | 
						|
Level	Code	Message
 | 
						|
Warning	1478	InnoDB: ignoring KEY_BLOCK_SIZE=16.
 | 
						|
SELECT table_name, row_format, create_options
 | 
						|
FROM information_schema.tables WHERE table_name = 't1';
 | 
						|
table_name	row_format	create_options
 | 
						|
t1	Compressed	row_format=COMPRESSED key_block_size=16
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
 | 
						|
SHOW WARNINGS;
 | 
						|
Level	Code	Message
 | 
						|
SELECT table_name, row_format, create_options
 | 
						|
FROM information_schema.tables WHERE table_name = 't1';
 | 
						|
table_name	row_format	create_options
 | 
						|
t1	Compressed	row_format=COMPRESSED key_block_size=8
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
 | 
						|
SHOW WARNINGS;
 | 
						|
Level	Code	Message
 | 
						|
SELECT table_name, row_format, create_options
 | 
						|
FROM information_schema.tables WHERE table_name = 't1';
 | 
						|
table_name	row_format	create_options
 | 
						|
t1	Compressed	row_format=COMPRESSED key_block_size=4
 | 
						|
ALTER TABLE t1 KEY_BLOCK_SIZE=2;
 | 
						|
SHOW WARNINGS;
 | 
						|
Level	Code	Message
 | 
						|
SELECT table_name, row_format, create_options
 | 
						|
FROM information_schema.tables WHERE table_name = 't1';
 | 
						|
table_name	row_format	create_options
 | 
						|
t1	Compressed	row_format=COMPRESSED key_block_size=2
 | 
						|
ALTER TABLE t1 KEY_BLOCK_SIZE=1;
 | 
						|
SHOW WARNINGS;
 | 
						|
Level	Code	Message
 | 
						|
SELECT table_name, row_format, create_options
 | 
						|
FROM information_schema.tables WHERE table_name = 't1';
 | 
						|
table_name	row_format	create_options
 | 
						|
t1	Compressed	row_format=COMPRESSED key_block_size=1
 | 
						|
ALTER TABLE t1 KEY_BLOCK_SIZE=0;
 | 
						|
SHOW WARNINGS;
 | 
						|
Level	Code	Message
 | 
						|
SELECT table_name, row_format, create_options
 | 
						|
FROM information_schema.tables WHERE table_name = 't1';
 | 
						|
table_name	row_format	create_options
 | 
						|
t1	Compressed	row_format=COMPRESSED
 | 
						|
DROP TABLE t1;
 | 
						|
# Test 6) Make sure that KEY_BLOCK_SIZE = 8 and 16
 | 
						|
# are rejected when innodb_file_per_table=OFF
 | 
						|
SET SESSION innodb_strict_mode = ON;
 | 
						|
SET GLOBAL innodb_file_per_table = OFF;
 | 
						|
SHOW VARIABLES LIKE 'innodb_file_per_table';
 | 
						|
Variable_name	Value
 | 
						|
innodb_file_per_table	OFF
 | 
						|
CREATE TABLE t4 (id int PRIMARY KEY) ENGINE=innodb KEY_BLOCK_SIZE=8;
 | 
						|
ERROR HY000: Can't create table `test`.`t4` (errno: 140 "Wrong create options")
 | 
						|
SHOW WARNINGS;
 | 
						|
Level	Code	Message
 | 
						|
Warning	1478	InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table.
 | 
						|
Error	1005	Can't create table `test`.`t4` (errno: 140 "Wrong create options")
 | 
						|
Warning	1030	Got error 140 "Wrong create options" from storage engine InnoDB
 | 
						|
CREATE TABLE t5 (id int PRIMARY KEY) ENGINE=innodb KEY_BLOCK_SIZE=16;
 | 
						|
ERROR HY000: Can't create table `test`.`t5` (errno: 140 "Wrong create options")
 | 
						|
SHOW WARNINGS;
 | 
						|
Level	Code	Message
 | 
						|
Warning	1478	InnoDB: KEY_BLOCK_SIZE=16 cannot be larger than 8.
 | 
						|
Warning	1478	InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table.
 | 
						|
Error	1005	Can't create table `test`.`t5` (errno: 140 "Wrong create options")
 | 
						|
Warning	1030	Got error 140 "Wrong create options" from storage engine InnoDB
 | 
						|
SET GLOBAL innodb_file_per_table = ON;
 | 
						|
SET GLOBAL innodb_file_format = `Antelope`;
 | 
						|
Warnings:
 | 
						|
Warning	131	Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
 | 
						|
CREATE TABLE t4 (id int PRIMARY KEY) ENGINE=innodb KEY_BLOCK_SIZE=8;
 | 
						|
ERROR HY000: Can't create table `test`.`t4` (errno: 140 "Wrong create options")
 | 
						|
SHOW WARNINGS;
 | 
						|
Level	Code	Message
 | 
						|
Warning	1478	InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
 | 
						|
Error	1005	Can't create table `test`.`t4` (errno: 140 "Wrong create options")
 | 
						|
Warning	1030	Got error 140 "Wrong create options" from storage engine InnoDB
 | 
						|
CREATE TABLE t5 (id int PRIMARY KEY) ENGINE=innodb KEY_BLOCK_SIZE=16;
 | 
						|
ERROR HY000: Can't create table `test`.`t5` (errno: 140 "Wrong create options")
 | 
						|
SHOW WARNINGS;
 | 
						|
Level	Code	Message
 | 
						|
Warning	1478	InnoDB: KEY_BLOCK_SIZE=16 cannot be larger than 8.
 | 
						|
Warning	1478	InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
 | 
						|
Error	1005	Can't create table `test`.`t5` (errno: 140 "Wrong create options")
 | 
						|
Warning	1030	Got error 140 "Wrong create options" from storage engine InnoDB
 | 
						|
SET GLOBAL innodb_file_format = `Barracuda`;
 | 
						|
Warnings:
 | 
						|
Warning	131	Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
 | 
						|
# Test 7) Not included here; 16k only
 | 
						|
# Test 8) Test creating a table that could lead to undo log overflow.
 | 
						|
CREATE TABLE t1(a blob,b blob,c blob,d blob,e blob,f blob,g blob,
 | 
						|
h blob,i blob,j blob,k blob,l blob,m blob,n blob,
 | 
						|
o blob,p blob,q blob,r blob,s blob,t blob,u blob)
 | 
						|
ENGINE=InnoDB ROW_FORMAT=dynamic;
 | 
						|
SET @a = repeat('a', 767);
 | 
						|
SET @b = repeat('b', 767);
 | 
						|
SET @c = repeat('c', 767);
 | 
						|
SET @d = repeat('d', 767);
 | 
						|
SET @e = repeat('e', 767);
 | 
						|
INSERT INTO t1 VALUES (@a,@a,@a,@a,@a,@a,@a,@a,@a,@a,@a,@a,@a,@a,@a,@a,@a,@a,@a,@a,@a);
 | 
						|
UPDATE t1 SET a=@b,b=@b,c=@b,d=@b,e=@b,f=@b,g=@b,h=@b,i=@b,j=@b,
 | 
						|
k=@b,l=@b,m=@b,n=@b,o=@b,p=@b,q=@b,r=@b,s=@b,t=@b,u=@b;
 | 
						|
CREATE INDEX t1a ON t1 (a(767));
 | 
						|
CREATE INDEX t1b ON t1 (b(767));
 | 
						|
UPDATE t1 SET a=@c,b=@c,c=@c,d=@c,e=@c,f=@c,g=@c,h=@c,i=@c,j=@c,
 | 
						|
k=@c,l=@c,m=@c,n=@c,o=@c,p=@c,q=@c,r=@c,s=@c,t=@c,u=@c;
 | 
						|
CREATE INDEX t1c ON t1 (c(767));
 | 
						|
UPDATE t1 SET a=@d,b=@d,c=@d,d=@d,e=@d,f=@d,g=@d,h=@d,i=@d,j=@d,
 | 
						|
k=@d,l=@d,m=@d,n=@d,o=@d,p=@d,q=@d,r=@d,s=@d,t=@d,u=@d;
 | 
						|
ERROR HY000: Undo log record is too big
 | 
						|
BEGIN;
 | 
						|
UPDATE t1 SET a=@d,b=@d,c=@d,d=@d,e=@d;
 | 
						|
UPDATE t1 SET f=@d,g=@d,h=@d,i=@d,j=@d,k=@d,l=@d,m=@d,
 | 
						|
n=@d,o=@d,p=@d,q=@d,r=@d,s=@d,t=@d,u=@d;
 | 
						|
COMMIT;
 | 
						|
CREATE INDEX t1d ON t1 (d(767));
 | 
						|
UPDATE t1 SET d=@e;
 | 
						|
CREATE INDEX t1e ON t1 (e(767));
 | 
						|
UPDATE t1 SET e=@e;
 | 
						|
CREATE INDEX t1f ON t1 (f(767));
 | 
						|
UPDATE t1 SET f=@e;
 | 
						|
CREATE INDEX t1g ON t1 (g(767));
 | 
						|
UPDATE t1 SET g=@e;
 | 
						|
CREATE INDEX t1h ON t1 (h(767));
 | 
						|
UPDATE t1 SET h=@e;
 | 
						|
CREATE INDEX t1i ON t1 (i(767));
 | 
						|
UPDATE t1 SET i=@e;
 | 
						|
CREATE INDEX t1k ON t1 (j(767));
 | 
						|
CREATE INDEX t1j ON t1 (j(500));
 | 
						|
UPDATE t1 SET j=@e;
 | 
						|
ERROR HY000: Undo log record is too big
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `a` blob DEFAULT NULL,
 | 
						|
  `b` blob DEFAULT NULL,
 | 
						|
  `c` blob DEFAULT NULL,
 | 
						|
  `d` blob DEFAULT NULL,
 | 
						|
  `e` blob DEFAULT NULL,
 | 
						|
  `f` blob DEFAULT NULL,
 | 
						|
  `g` blob DEFAULT NULL,
 | 
						|
  `h` blob DEFAULT NULL,
 | 
						|
  `i` blob DEFAULT NULL,
 | 
						|
  `j` blob DEFAULT NULL,
 | 
						|
  `k` blob DEFAULT NULL,
 | 
						|
  `l` blob DEFAULT NULL,
 | 
						|
  `m` blob DEFAULT NULL,
 | 
						|
  `n` blob DEFAULT NULL,
 | 
						|
  `o` blob DEFAULT NULL,
 | 
						|
  `p` blob DEFAULT NULL,
 | 
						|
  `q` blob DEFAULT NULL,
 | 
						|
  `r` blob DEFAULT NULL,
 | 
						|
  `s` blob DEFAULT NULL,
 | 
						|
  `t` blob DEFAULT NULL,
 | 
						|
  `u` blob DEFAULT NULL,
 | 
						|
  KEY `t1a` (`a`(767)),
 | 
						|
  KEY `t1b` (`b`(767)),
 | 
						|
  KEY `t1c` (`c`(767)),
 | 
						|
  KEY `t1d` (`d`(767)),
 | 
						|
  KEY `t1e` (`e`(767)),
 | 
						|
  KEY `t1f` (`f`(767)),
 | 
						|
  KEY `t1g` (`g`(767)),
 | 
						|
  KEY `t1h` (`h`(767)),
 | 
						|
  KEY `t1i` (`i`(767)),
 | 
						|
  KEY `t1k` (`j`(767)),
 | 
						|
  KEY `t1j` (`j`(500))
 | 
						|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC
 | 
						|
DROP TABLE t1;
 | 
						|
SET SESSION innodb_strict_mode = OFF;
 | 
						|
CREATE TABLE t1(
 | 
						|
pk01 varchar(96), pk02 varchar(96), pk03 varchar(96), pk04 varchar(96),
 | 
						|
pk05 varchar(96), pk06 varchar(96), pk07 varchar(96), pk08 varchar(96),
 | 
						|
pk09 varchar(96), pk10 varchar(96), pk11 varchar(96), pk12 varchar(96),
 | 
						|
pk13 varchar(96), pk14 varchar(96), pk15 varchar(96), pk16 varchar(96),
 | 
						|
sk01 varchar(96), sk02 varchar(96), sk03 varchar(96), sk04 varchar(96),
 | 
						|
sk05 varchar(96), sk06 varchar(96), sk07 varchar(96), sk08 varchar(96),
 | 
						|
sk09 varchar(96), sk10 varchar(96), sk11 varchar(96), sk12 varchar(96),
 | 
						|
sk13 varchar(96), sk14 varchar(96), sk15 varchar(96), sk16 varchar(96),
 | 
						|
PRIMARY KEY pk(pk01,pk02,pk03,pk04,pk05,pk06,pk07,pk08,
 | 
						|
pk09,pk10,pk11,pk12,pk13,pk14,pk15,pk16),
 | 
						|
KEY pk(sk01,sk02,sk03,sk04,sk05,sk06,sk07,sk08,
 | 
						|
sk09,sk10,sk11,sk12,sk13,sk14,sk15,sk16))
 | 
						|
ROW_FORMAT=Redundant ENGINE=InnoDB;
 | 
						|
SET @r = repeat('a', 96);
 | 
						|
INSERT INTO t1 VALUES(@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,
 | 
						|
@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r);
 | 
						|
SET @r = repeat('b', 96);
 | 
						|
INSERT INTO t1 VALUES(@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,
 | 
						|
@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r);
 | 
						|
SET @r = repeat('c', 96);
 | 
						|
INSERT INTO t1 VALUES(@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,
 | 
						|
@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r);
 | 
						|
SET @r = repeat('d', 96);
 | 
						|
INSERT INTO t1 VALUES(@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,
 | 
						|
@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r);
 | 
						|
SET @r = repeat('e', 96);
 | 
						|
INSERT INTO t1 VALUES(@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,
 | 
						|
@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r);
 | 
						|
DELETE from t1;
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1(
 | 
						|
pk01 varchar(96), pk02 varchar(96), pk03 varchar(96), pk04 varchar(96),
 | 
						|
pk05 varchar(96), pk06 varchar(96), pk07 varchar(96), pk08 varchar(96),
 | 
						|
pk09 varchar(96), pk10 varchar(96), pk11 varchar(96), pk12 varchar(96),
 | 
						|
pk13 varchar(96), pk14 varchar(96), pk15 varchar(96), pk16 varchar(96),
 | 
						|
sk01 varchar(96), sk02 varchar(96), sk03 varchar(96), sk04 varchar(96),
 | 
						|
sk05 varchar(96), sk06 varchar(96), sk07 varchar(96), sk08 varchar(96),
 | 
						|
sk09 varchar(96), sk10 varchar(96), sk11 varchar(96), sk12 varchar(96),
 | 
						|
sk13 varchar(96), sk14 varchar(96), sk15 varchar(96), sk16 varchar(96),
 | 
						|
PRIMARY KEY pk(pk01,pk02,pk03,pk04,pk05,pk06,pk07,pk08,
 | 
						|
pk09,pk10,pk11,pk12,pk13,pk14,pk15,pk16),
 | 
						|
KEY pk(sk01,sk02,sk03,sk04,sk05,sk06,sk07,sk08,
 | 
						|
sk09,sk10,sk11,sk12,sk13,sk14,sk15,sk16))
 | 
						|
ROW_FORMAT=Compressed KEY_BLOCK_SIZE=8 ENGINE=InnoDB;
 | 
						|
SET @r = repeat('a', 96);
 | 
						|
INSERT INTO t1 VALUES(@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,
 | 
						|
@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r);
 | 
						|
SET @r = repeat('b', 96);
 | 
						|
INSERT INTO t1 VALUES(@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,
 | 
						|
@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r);
 | 
						|
SET @r = repeat('c', 96);
 | 
						|
INSERT INTO t1 VALUES(@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,
 | 
						|
@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r);
 | 
						|
SET @r = repeat('d', 96);
 | 
						|
INSERT INTO t1 VALUES(@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,
 | 
						|
@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r);
 | 
						|
SET @r = repeat('e', 96);
 | 
						|
INSERT INTO t1 VALUES(@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,
 | 
						|
@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r,@r);
 | 
						|
DELETE from t1;
 | 
						|
DROP TABLE t1;
 | 
						|
SET SESSION innodb_strict_mode = off;
 | 
						|
CREATE TABLE t1(
 | 
						|
c text NOT NULL, d text NOT NULL,
 | 
						|
PRIMARY KEY (c(767),d(767)))
 | 
						|
ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1 CHARSET=ASCII;
 | 
						|
Warnings:
 | 
						|
Warning	139	Row size too large (> max_row_size). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1(
 | 
						|
c text NOT NULL, d text NOT NULL,
 | 
						|
PRIMARY KEY (c(767),d(767)))
 | 
						|
ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=2 CHARSET=ASCII;
 | 
						|
Warnings:
 | 
						|
Warning	139	Row size too large (> max_row_size). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1(
 | 
						|
c text NOT NULL, d text NOT NULL,
 | 
						|
PRIMARY KEY (c(767),d(767)))
 | 
						|
ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4 CHARSET=ASCII;
 | 
						|
drop table t1;
 | 
						|
CREATE TABLE t1(c text, PRIMARY KEY (c(440)))
 | 
						|
ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1 CHARSET=ASCII;
 | 
						|
Warnings:
 | 
						|
Warning	139	Row size too large (> max_row_size). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1(c text, PRIMARY KEY (c(438)))
 | 
						|
ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1 CHARSET=ASCII;
 | 
						|
INSERT INTO t1 VALUES(REPEAT('A',512)),(REPEAT('B',512));
 | 
						|
DROP TABLE t1;
 |