17 changed files with 770 additions and 55 deletions
-
2mysql-test/lib/My/Tee.pm
-
85mysql-test/suite/innodb/r/default_row_format_alter.result
-
108mysql-test/suite/innodb/r/default_row_format_compatibility.result
-
11mysql-test/suite/innodb/r/default_row_format_create,dynamic.rdiff
-
11mysql-test/suite/innodb/r/default_row_format_create,redundant.rdiff
-
26mysql-test/suite/innodb/r/default_row_format_create.result
-
74mysql-test/suite/innodb/r/file_format_defaults.result
-
98mysql-test/suite/innodb/t/default_row_format_alter.test
-
167mysql-test/suite/innodb/t/default_row_format_compatibility.test
-
28mysql-test/suite/innodb/t/default_row_format_create.test
-
1mysql-test/suite/innodb/t/file_format_defaults-master.opt
-
76mysql-test/suite/innodb/t/file_format_defaults.test
-
8storage/innobase/fts/fts0fts.cc
-
3storage/tokudb/CMakeLists.txt
-
8storage/xtradb/dict/dict0crea.cc
-
23storage/xtradb/fts/fts0fts.cc
-
96storage/xtradb/handler/ha_innodb.cc
@ -0,0 +1,85 @@ |
|||
SET @row_format = @@GLOBAL.innodb_default_row_format; |
|||
#################################### |
|||
# Check if table rebuilding alter isn't affect if table is created |
|||
# with explicit row_format |
|||
CREATE TABLE t1 (a INT PRIMARY KEY, b TEXT) ROW_FORMAT=COMPACT ENGINE=INNODB; |
|||
INSERT INTO t1 VALUES (1, 'abc'); |
|||
SHOW TABLE STATUS LIKE 't1'; |
|||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment |
|||
t1 InnoDB # Compact # # # # # # NULL # # NULL latin1_swedish_ci NULL row_format=COMPACT |
|||
SET GLOBAL innodb_default_row_format=DYNAMIC; |
|||
ALTER TABLE t1 DROP PRIMARY KEY, ADD COLUMN c INT PRIMARY KEY; |
|||
# Here we expect COMPACT because it was explicitly specified at CREATE |
|||
SHOW TABLE STATUS LIKE 't1'; |
|||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment |
|||
t1 InnoDB # Compact # # # # # # NULL # # NULL latin1_swedish_ci NULL row_format=COMPACT |
|||
DROP TABLE t1; |
|||
#################################### |
|||
# Check if table rebuilding alter is affected when there is no |
|||
# row_format specified at CREATE TABLE. |
|||
SET GLOBAL innodb_default_row_format = COMPACT; |
|||
CREATE TABLE t1 (a INT PRIMARY KEY, b TEXT) ENGINE=INNODB; |
|||
INSERT INTO t1 VALUES (1, 'abc'); |
|||
SHOW TABLE STATUS LIKE 't1'; |
|||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment |
|||
t1 InnoDB # Compact # # # # # # NULL # # NULL latin1_swedish_ci NULL |
|||
SET GLOBAL innodb_default_row_format = DYNAMIC; |
|||
ALTER TABLE t1 DROP PRIMARY KEY, ADD COLUMN c INT PRIMARY KEY; |
|||
# Here we expect DYNAMIC because there is no explicit ROW_FORMAT and the |
|||
# default_row_format is changed to DYNAMIC just before ALTER |
|||
SHOW TABLE STATUS LIKE 't1'; |
|||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment |
|||
t1 InnoDB # Dynamic # # # # # # NULL # # NULL latin1_swedish_ci NULL |
|||
DROP TABLE t1; |
|||
#################################### |
|||
# Check the row_format effect on ALTER, ALGORITHM=COPY |
|||
SET GLOBAL innodb_default_row_format = REDUNDANT; |
|||
CREATE TABLE t1 (a INT PRIMARY KEY, b TEXT) ENGINE=INNODB; |
|||
INSERT INTO t1 VALUES (1, REPEAT('abc',1000)); |
|||
SHOW TABLE STATUS LIKE 't1'; |
|||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment |
|||
t1 InnoDB # Redundant # # # # # # NULL # # NULL latin1_swedish_ci NULL |
|||
SET GLOBAL innoDB_default_row_format = COMPACT; |
|||
ALTER TABLE t1 ADD COLUMN c2 BLOB, ALGORITHM=COPY; |
|||
# Because of ALGORITHM=COPY, there is TABLE REBUILD and the table isn't |
|||
# created with explicit row_format, so we expect ROW_FORMAT=COMPACT |
|||
SHOW TABLE STATUS LIKE 't1'; |
|||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment |
|||
t1 InnoDB # Compact # # # # # # NULL # # NULL latin1_swedish_ci NULL |
|||
DROP TABLE t1; |
|||
|
|||
################################### |
|||
# Check the row_format effect on ALTER, ALGORITH=COPY on |
|||
# create table with explicit row_format |
|||
CREATE TABLE t1 (a INT PRIMARY KEY, b TEXT) ROW_FORMAT=REDUNDANT ENGINE=INNODB; |
|||
INSERT INTO t1 VALUES (1, REPEAT('abc',1000)); |
|||
SHOW TABLE STATUS LIKE 't1'; |
|||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment |
|||
t1 InnoDB # Redundant # # # # # # NULL # # NULL latin1_swedish_ci NULL row_format=REDUNDANT |
|||
SET GLOBAL innoDB_default_row_format = COMPACT; |
|||
ALTER TABLE t1 ADD COLUMN c2 BLOB, ALGORITHM=COPY; |
|||
# Because of ALGORITHM=COPY, there is TABLE REBUILD and the table is |
|||
# created with explicit row_format, so we expect original |
|||
# ROW_FORMAT=REDUNDANT |
|||
SHOW TABLE STATUS LIKE 't1'; |
|||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment |
|||
t1 InnoDB # Redundant # # # # # # NULL # # NULL latin1_swedish_ci NULL row_format=REDUNDANT |
|||
DROP TABLE t1; |
|||
|
|||
################################## |
|||
# Check row_format on ALTER ALGORITHM=INPLACE |
|||
SET GLOBAL innodb_default_row_format=COMPACT; |
|||
CREATE TABLE t1 (a INT PRIMARY KEY, b TEXT, KEY k1(b(10))) ENGINE=INNODB; |
|||
INSERT INTO t1 VALUES (1, REPEAT('abc',1000)); |
|||
SHOW TABLE STATUS LIKE 't1'; |
|||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment |
|||
t1 InnoDB # Compact # # # # # # NULL # # NULL latin1_swedish_ci NULL |
|||
SET GLOBAL innodb_default_row_format=DYNAMIC; |
|||
ALTER TABLE t1 DROP INDEX k1; |
|||
# Because it is in-place operation, there is no rebuild, so the |
|||
# original format has to be retained. |
|||
SHOW TABLE STATUS LIKE 't1'; |
|||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment |
|||
t1 InnoDB # Compact # # # # # # NULL # # NULL latin1_swedish_ci NULL |
|||
DROP TABLE t1; |
|||
SET GLOBAL innodb_default_row_format = @row_format; |
@ -0,0 +1,108 @@ |
|||
SET @row_format = @@GLOBAL.innodb_default_row_format; |
|||
SET @large_prefix = @@GLOBAL.innodb_large_prefix; |
|||
SET @file_format = @@GLOBAL.innodb_file_format; |
|||
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 https://mariadb.com/kb/en/library/xtradbinnodb-file-format/ |
|||
# ########################################################### |
|||
# Check with Import/Export tablespace with Default_row_format |
|||
SET GLOBAL innodb_default_row_format=Compact; |
|||
SELECT @@innodb_default_row_format; |
|||
@@innodb_default_row_format |
|||
compact |
|||
SELECT @@innodb_file_per_table; |
|||
@@innodb_file_per_table |
|||
1 |
|||
CREATE TABLE tab(a INT) ENGINE=InnoDB; |
|||
SHOW TABLE STATUS LIKE 'tab'; |
|||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment |
|||
tab InnoDB # Compact # # # # # # NULL # NULL NULL latin1_swedish_ci NULL |
|||
INSERT INTO tab VALUES(1); |
|||
INSERT INTO tab VALUES(2); |
|||
SELECT * FROM tab; |
|||
a |
|||
1 |
|||
2 |
|||
FLUSH TABLE tab FOR EXPORT; |
|||
UNLOCK TABLES; |
|||
DROP TABLE tab; |
|||
SET GLOBAL innodb_default_row_format=Dynamic; |
|||
CREATE TABLE tab(a INT) ENGINE=InnoDB; |
|||
ALTER TABLE tab DISCARD TABLESPACE; |
|||
ALTER TABLE tab IMPORT TABLESPACE; |
|||
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x21 and the meta-data file has 0x1) |
|||
DROP TABLE tab; |
|||
SET GLOBAL innodb_default_row_format=Compact; |
|||
SELECT @@innodb_default_row_format; |
|||
@@innodb_default_row_format |
|||
compact |
|||
CREATE TABLE tab(a INT) ENGINE=InnoDB; |
|||
SHOW TABLE STATUS LIKE 'tab'; |
|||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment |
|||
tab InnoDB # Compact # # # # # # NULL # NULL NULL latin1_swedish_ci NULL |
|||
ALTER TABLE tab DISCARD TABLESPACE; |
|||
ALTER TABLE tab IMPORT TABLESPACE; |
|||
SELECT * FROM tab; |
|||
a |
|||
1 |
|||
2 |
|||
DROP TABLE tab; |
|||
# ########################################################### |
|||
SET GLOBAL innodb_default_row_format=Dynamic; |
|||
SET GLOBAL innodb_large_prefix=ON; |
|||
Warnings: |
|||
Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/ |
|||
SELECT @@innodb_default_row_format; |
|||
@@innodb_default_row_format |
|||
dynamic |
|||
CREATE TABLE tab(a INT PRIMARY KEY, b VARCHAR(5000), KEY idx1(b(3070))) ENGINE= InnoDB; |
|||
SHOW TABLE STATUS LIKE 'tab'; |
|||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment |
|||
tab InnoDB # Dynamic # # # # # # NULL # NULL NULL latin1_swedish_ci NULL |
|||
INSERT INTO tab(a,b) VALUES(1,'Check with max column size'); |
|||
SELECT * FROM tab; |
|||
a b |
|||
1 Check with max column size |
|||
SET GLOBAL innodb_default_row_format=COMPACT; |
|||
ALTER TABLE tab ROW_FORMAT=COMPACT; |
|||
ERROR HY000: Index column size too large. The maximum column size is 767 bytes |
|||
DROP TABLE tab; |
|||
SET GLOBAL innodb_default_row_format=Default; |
|||
SELECT @@innodb_default_row_format; |
|||
@@innodb_default_row_format |
|||
dynamic |
|||
SET GLOBAL innodb_default_row_format=Dynamic; |
|||
SELECT @@innodb_default_row_format; |
|||
@@innodb_default_row_format |
|||
dynamic |
|||
CREATE TABLE tab(a INT PRIMARY KEY, b VARCHAR(5000), KEY idx1(b(767))) ENGINE= InnoDB; |
|||
SHOW TABLE STATUS LIKE 'tab'; |
|||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment |
|||
tab InnoDB # Dynamic # # # # # # NULL # NULL NULL latin1_swedish_ci NULL |
|||
INSERT INTO tab(a,b) VALUES(1,'Check with max column size'); |
|||
SELECT * FROM tab; |
|||
a b |
|||
1 Check with max column size |
|||
ALTER TABLE tab ROW_FORMAT=COMPACT; |
|||
SHOW TABLE STATUS LIKE 'tab'; |
|||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment |
|||
tab InnoDB # Compact # # # # # # NULL # NULL NULL latin1_swedish_ci NULL row_format=COMPACT |
|||
SELECT * FROM tab; |
|||
a b |
|||
1 Check with max column size |
|||
ALTER TABLE tab ROW_FORMAT=COMPRESSED; |
|||
SELECT * FROM tab; |
|||
a b |
|||
1 Check with max column size |
|||
ALTER TABLE tab ROW_FORMAT=Dynamic; |
|||
SHOW TABLE STATUS LIKE 'tab'; |
|||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment |
|||
tab InnoDB # Dynamic # # # # # # NULL # NULL NULL latin1_swedish_ci NULL row_format=DYNAMIC |
|||
DROP TABLE tab; |
|||
SET GLOBAL innodb_default_row_format = @row_format; |
|||
SET GLOBAL innodb_large_prefix = @large_prefix; |
|||
Warnings: |
|||
Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/ |
|||
SET GLOBAL innodb_file_format = @file_format; |
|||
Warnings: |
|||
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/ |
@ -0,0 +1,11 @@ |
|||
--- default_row_format_create.result |
|||
+++ default_row_format_create,dynamic.result |
|||
@@ -1,7 +1,7 @@ |
|||
CREATE TABLE t1(c1 TEXT,c2 BLOB) ENGINE=InnoDB; |
|||
SHOW TABLE STATUS LIKE 't1'; |
|||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment |
|||
-t1 InnoDB # Compact # # # # # # NULL # NULL NULL latin1_swedish_ci NULL |
|||
+t1 InnoDB # Dynamic # # # # # # NULL # NULL NULL latin1_swedish_ci NULL |
|||
DROP TABLE t1; |
|||
CREATE TABLE t1(c1 TEXT,c2 BLOB) ENGINE=InnoDB ROW_FORMAT=DYNAMIC; |
|||
SHOW TABLE STATUS LIKE 't1'; |
@ -0,0 +1,11 @@ |
|||
--- default_row_format_create.result |
|||
+++ default_row_format_create,redundant.result |
|||
@@ -1,7 +1,7 @@ |
|||
CREATE TABLE t1(c1 TEXT,c2 BLOB) ENGINE=InnoDB; |
|||
SHOW TABLE STATUS LIKE 't1'; |
|||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment |
|||
-t1 InnoDB # Compact # # # # # # NULL # NULL NULL latin1_swedish_ci NULL |
|||
+t1 InnoDB # Redundant # # # # # # NULL # NULL NULL latin1_swedish_ci NULL |
|||
DROP TABLE t1; |
|||
CREATE TABLE t1(c1 TEXT,c2 BLOB) ENGINE=InnoDB ROW_FORMAT=DYNAMIC; |
|||
SHOW TABLE STATUS LIKE 't1'; |
@ -0,0 +1,26 @@ |
|||
CREATE TABLE t1(c1 TEXT,c2 BLOB) ENGINE=InnoDB; |
|||
SHOW TABLE STATUS LIKE 't1'; |
|||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment |
|||
t1 InnoDB # Compact # # # # # # NULL # NULL NULL latin1_swedish_ci NULL |
|||
DROP TABLE t1; |
|||
CREATE TABLE t1(c1 TEXT,c2 BLOB) ENGINE=InnoDB ROW_FORMAT=DYNAMIC; |
|||
SHOW TABLE STATUS LIKE 't1'; |
|||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment |
|||
t1 InnoDB # Dynamic # # # # # # NULL # NULL NULL latin1_swedish_ci NULL row_format=DYNAMIC |
|||
DROP TABLE t1; |
|||
CREATE TABLE t1(c1 TEXT,c2 BLOB) ENGINE=InnoDB ROW_FORMAT=COMPACT; |
|||
SHOW TABLE STATUS LIKE 't1'; |
|||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment |
|||
t1 InnoDB # Compact # # # # # # NULL # NULL NULL latin1_swedish_ci NULL row_format=COMPACT |
|||
DROP TABLE t1; |
|||
CREATE TABLE t1(c1 TEXT,c2 BLOB) ENGINE=InnoDB ROW_FORMAT=REDUNDANT; |
|||
SHOW TABLE STATUS LIKE 't1'; |
|||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment |
|||
t1 InnoDB # Redundant # # # # # # NULL # NULL NULL latin1_swedish_ci NULL row_format=REDUNDANT |
|||
DROP TABLE t1; |
|||
CREATE TABLE t1(c1 TEXT,c2 BLOB) ENGINE=InnoDB |
|||
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1; |
|||
SHOW TABLE STATUS LIKE 't1'; |
|||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment |
|||
t1 InnoDB # Compressed # # # # # # NULL # NULL NULL latin1_swedish_ci NULL row_format=COMPRESSED key_block_size=1 |
|||
DROP TABLE t1; |
@ -0,0 +1,74 @@ |
|||
call mtr.add_suppression("InnoDB: Cannot add field `c1` in table `test`\\.`tab0`"); |
|||
SELECT @@innodb_strict_mode; |
|||
@@innodb_strict_mode |
|||
1 |
|||
SELECT @@innodb_file_per_table; |
|||
@@innodb_file_per_table |
|||
1 |
|||
SET @file_format = @@GLOBAL.innodb_file_format; |
|||
SET GLOBAL innodb_large_prefix=ON; |
|||
Warnings: |
|||
Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/ |
|||
SET SQL_MODE=strict_all_tables; |
|||
CREATE TABLE tab0 (c1 VARCHAR(65530), KEY(c1(3073))) ENGINE=InnoDB ROW_FORMAT=COMPRESSED; |
|||
Warnings: |
|||
Warning 1071 Specified key was too long; max key length is 3072 bytes |
|||
SHOW CREATE TABLE tab0; |
|||
Table Create Table |
|||
tab0 CREATE TABLE `tab0` ( |
|||
`c1` varchar(65530) DEFAULT NULL, |
|||
KEY `c1` (`c1`(3072)) |
|||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED |
|||
DROP TABLE tab0; |
|||
CREATE TABLE tab0 (c1 VARCHAR(65530), KEY(c1(3073))) ENGINE=InnoDB KEY_BLOCK_SIZE=2; |
|||
ERROR 42000: Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline. |
|||
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 https://mariadb.com/kb/en/library/xtradbinnodb-file-format/ |
|||
CREATE TABLE tab0(c1 INT,c2 LONGBLOB ) ENGINE=InnoDB ROW_FORMAT=Dynamic; |
|||
ERROR HY000: Can't create table `test`.`tab0` (errno: 140 "Wrong create options") |
|||
SET GLOBAL innodb_file_format=Default; |
|||
Warnings: |
|||
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/ |
|||
CREATE TABLE tab0(c1 INT,c2 LONGBLOB ) ENGINE=InnoDB ROW_FORMAT=Dynamic; |
|||
DROP TABLE tab0; |
|||
SELECT @@innodb_file_format; |
|||
@@innodb_file_format |
|||
Barracuda |
|||
SET GLOBAL innodb_strict_mode=OFF; |
|||
SET GLOBAL innodb_strict_mode=Default; |
|||
SELECT @@innodb_strict_mode; |
|||
@@innodb_strict_mode |
|||
1 |
|||
SET GLOBAL innodb_large_prefix=OFF; |
|||
Warnings: |
|||
Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/ |
|||
SELECT @@innodb_large_prefix; |
|||
@@innodb_large_prefix |
|||
0 |
|||
SET GLOBAL innodb_large_prefix=Default; |
|||
Warnings: |
|||
Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/ |
|||
SELECT @@innodb_large_prefix; |
|||
@@innodb_large_prefix |
|||
1 |
|||
SET GLOBAL innodb_file_format_max=Default; |
|||
Warnings: |
|||
Warning 131 Using innodb_file_format_max is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/ |
|||
SELECT @@innodb_file_format_max; |
|||
@@innodb_file_format_max |
|||
Antelope |
|||
CREATE TABLE tab1(c1 int ) ENGINE=InnoDB ROW_FORMAT=COMPRESSED; |
|||
SELECT @@innodb_file_format_max; |
|||
@@innodb_file_format_max |
|||
Barracuda |
|||
SET GLOBAL innodb_file_format_max=Default; |
|||
Warnings: |
|||
Warning 131 Using innodb_file_format_max is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/ |
|||
SET GLOBAL innodb_large_prefix=off; |
|||
Warnings: |
|||
Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/ |
|||
SET GLOBAL innodb_file_format = @file_format; |
|||
Warnings: |
|||
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/ |
|||
DROP TABLE tab1; |
@ -0,0 +1,98 @@ |
|||
--source include/have_innodb.inc |
|||
|
|||
SET @row_format = @@GLOBAL.innodb_default_row_format; |
|||
|
|||
--echo #################################### |
|||
--echo # Check if table rebuilding alter isn't affect if table is created |
|||
--echo # with explicit row_format |
|||
eval CREATE TABLE t1 (a INT PRIMARY KEY, b TEXT) ROW_FORMAT=COMPACT ENGINE=INNODB; |
|||
INSERT INTO t1 VALUES (1, 'abc'); |
|||
--replace_column 3 # 5 # 6 # 7 # 8 # 9 # 10 # 12 # 13 # |
|||
SHOW TABLE STATUS LIKE 't1'; |
|||
|
|||
SET GLOBAL innodb_default_row_format=DYNAMIC; |
|||
ALTER TABLE t1 DROP PRIMARY KEY, ADD COLUMN c INT PRIMARY KEY; |
|||
|
|||
--echo # Here we expect COMPACT because it was explicitly specified at CREATE |
|||
--replace_column 3 # 5 # 6 # 7 # 8 # 9 # 10 # 12 # 13 # |
|||
SHOW TABLE STATUS LIKE 't1'; |
|||
DROP TABLE t1; |
|||
|
|||
--echo #################################### |
|||
--echo # Check if table rebuilding alter is affected when there is no |
|||
--echo # row_format specified at CREATE TABLE. |
|||
SET GLOBAL innodb_default_row_format = COMPACT; |
|||
eval CREATE TABLE t1 (a INT PRIMARY KEY, b TEXT) ENGINE=INNODB; |
|||
INSERT INTO t1 VALUES (1, 'abc'); |
|||
|
|||
--replace_column 3 # 5 # 6 # 7 # 8 # 9 # 10 # 12 # 13 # |
|||
SHOW TABLE STATUS LIKE 't1'; |
|||
|
|||
SET GLOBAL innodb_default_row_format = DYNAMIC; |
|||
ALTER TABLE t1 DROP PRIMARY KEY, ADD COLUMN c INT PRIMARY KEY; |
|||
|
|||
--echo # Here we expect DYNAMIC because there is no explicit ROW_FORMAT and the |
|||
--echo # default_row_format is changed to DYNAMIC just before ALTER |
|||
--replace_column 3 # 5 # 6 # 7 # 8 # 9 # 10 # 12 # 13 # |
|||
SHOW TABLE STATUS LIKE 't1'; |
|||
DROP TABLE t1; |
|||
|
|||
--echo #################################### |
|||
--echo # Check the row_format effect on ALTER, ALGORITHM=COPY |
|||
SET GLOBAL innodb_default_row_format = REDUNDANT; |
|||
eval CREATE TABLE t1 (a INT PRIMARY KEY, b TEXT) ENGINE=INNODB; |
|||
INSERT INTO t1 VALUES (1, REPEAT('abc',1000)); |
|||
|
|||
--replace_column 3 # 5 # 6 # 7 # 8 # 9 # 10 # 12 # 13 # |
|||
SHOW TABLE STATUS LIKE 't1'; |
|||
|
|||
SET GLOBAL innoDB_default_row_format = COMPACT; |
|||
ALTER TABLE t1 ADD COLUMN c2 BLOB, ALGORITHM=COPY; |
|||
|
|||
--echo # Because of ALGORITHM=COPY, there is TABLE REBUILD and the table isn't |
|||
--echo # created with explicit row_format, so we expect ROW_FORMAT=COMPACT |
|||
--replace_column 3 # 5 # 6 # 7 # 8 # 9 # 10 # 12 # 13 # |
|||
SHOW TABLE STATUS LIKE 't1'; |
|||
DROP TABLE t1; |
|||
|
|||
--echo |
|||
--echo ################################### |
|||
--echo # Check the row_format effect on ALTER, ALGORITH=COPY on |
|||
--echo # create table with explicit row_format |
|||
eval CREATE TABLE t1 (a INT PRIMARY KEY, b TEXT) ROW_FORMAT=REDUNDANT ENGINE=INNODB; |
|||
INSERT INTO t1 VALUES (1, REPEAT('abc',1000)); |
|||
|
|||
--replace_column 3 # 5 # 6 # 7 # 8 # 9 # 10 # 12 # 13 # |
|||
SHOW TABLE STATUS LIKE 't1'; |
|||
|
|||
SET GLOBAL innoDB_default_row_format = COMPACT; |
|||
ALTER TABLE t1 ADD COLUMN c2 BLOB, ALGORITHM=COPY; |
|||
|
|||
--echo # Because of ALGORITHM=COPY, there is TABLE REBUILD and the table is |
|||
--echo # created with explicit row_format, so we expect original |
|||
--echo # ROW_FORMAT=REDUNDANT |
|||
--replace_column 3 # 5 # 6 # 7 # 8 # 9 # 10 # 12 # 13 # |
|||
SHOW TABLE STATUS LIKE 't1'; |
|||
DROP TABLE t1; |
|||
|
|||
--echo |
|||
--echo ################################## |
|||
--echo # Check row_format on ALTER ALGORITHM=INPLACE |
|||
SET GLOBAL innodb_default_row_format=COMPACT; |
|||
|
|||
eval CREATE TABLE t1 (a INT PRIMARY KEY, b TEXT, KEY k1(b(10))) ENGINE=INNODB; |
|||
INSERT INTO t1 VALUES (1, REPEAT('abc',1000)); |
|||
|
|||
--replace_column 3 # 5 # 6 # 7 # 8 # 9 # 10 # 12 # 13 # |
|||
SHOW TABLE STATUS LIKE 't1'; |
|||
|
|||
SET GLOBAL innodb_default_row_format=DYNAMIC; |
|||
ALTER TABLE t1 DROP INDEX k1; |
|||
|
|||
--echo # Because it is in-place operation, there is no rebuild, so the |
|||
--echo # original format has to be retained. |
|||
--replace_column 3 # 5 # 6 # 7 # 8 # 9 # 10 # 12 # 13 # |
|||
SHOW TABLE STATUS LIKE 't1'; |
|||
DROP TABLE t1; |
|||
|
|||
SET GLOBAL innodb_default_row_format = @row_format; |
@ -0,0 +1,167 @@ |
|||
--source include/have_innodb.inc |
|||
|
|||
SET @row_format = @@GLOBAL.innodb_default_row_format; |
|||
SET @large_prefix = @@GLOBAL.innodb_large_prefix; |
|||
SET @file_format = @@GLOBAL.innodb_file_format; |
|||
SET GLOBAL innodb_file_format = barracuda; |
|||
|
|||
# set the variables |
|||
let $MYSQLD_DATADIR = `SELECT @@datadir`; |
|||
|
|||
--echo # ########################################################### |
|||
--echo # Check with Import/Export tablespace with Default_row_format |
|||
|
|||
# Set row_format=Compact |
|||
SET GLOBAL innodb_default_row_format=Compact; |
|||
|
|||
# Check row_format=Compact |
|||
SELECT @@innodb_default_row_format; |
|||
|
|||
# Check file_per_table=1 |
|||
SELECT @@innodb_file_per_table; |
|||
|
|||
CREATE TABLE tab(a INT) ENGINE=InnoDB; |
|||
--replace_column 3 # 5 # 6 # 7 # 8 # 9 # 10 # 12 # |
|||
SHOW TABLE STATUS LIKE 'tab'; |
|||
|
|||
INSERT INTO tab VALUES(1); |
|||
INSERT INTO tab VALUES(2); |
|||
|
|||
# Check the rows |
|||
SELECT * FROM tab; |
|||
|
|||
FLUSH TABLE tab FOR EXPORT; |
|||
|
|||
# Take the backup of the ibd and cfg files |
|||
--copy_file $MYSQLD_DATADIR/test/tab.cfg $MYSQLD_DATADIR/tab.cfg |
|||
--copy_file $MYSQLD_DATADIR/test/tab.ibd $MYSQLD_DATADIR/tab.ibd |
|||
|
|||
UNLOCK TABLES; |
|||
|
|||
# Cleanup |
|||
DROP TABLE tab; |
|||
|
|||
# Set the default_row_format=Dynamic |
|||
SET GLOBAL innodb_default_row_format=Dynamic; |
|||
|
|||
CREATE TABLE tab(a INT) ENGINE=InnoDB; |
|||
|
|||
# Remove the *.ibd file |
|||
ALTER TABLE tab DISCARD TABLESPACE; |
|||
|
|||
# Move the *.ibd,*.cfg file into orginal location |
|||
--move_file $MYSQLD_DATADIR/tab.cfg $MYSQLD_DATADIR/test/tab.cfg |
|||
--move_file $MYSQLD_DATADIR/tab.ibd $MYSQLD_DATADIR/test/tab.ibd |
|||
|
|||
--error ER_TABLE_SCHEMA_MISMATCH |
|||
ALTER TABLE tab IMPORT TABLESPACE; |
|||
|
|||
# Take the backup of the ibd and cfg files |
|||
--copy_file $MYSQLD_DATADIR/test/tab.cfg $MYSQLD_DATADIR/tab.cfg |
|||
--copy_file $MYSQLD_DATADIR/test/tab.ibd $MYSQLD_DATADIR/tab.ibd |
|||
|
|||
# Cleanup |
|||
DROP TABLE tab; |
|||
|
|||
# Remove orphan files |
|||
--remove_file $MYSQLD_DATADIR/test/tab.cfg |
|||
--remove_file $MYSQLD_DATADIR/test/tab.ibd |
|||
|
|||
# Set the default_row_format=Compact |
|||
SET GLOBAL innodb_default_row_format=Compact; |
|||
|
|||
# Check row_format=Compact |
|||
SELECT @@innodb_default_row_format; |
|||
|
|||
CREATE TABLE tab(a INT) ENGINE=InnoDB; |
|||
--replace_column 3 # 5 # 6 # 7 # 8 # 9 # 10 # 12 # |
|||
SHOW TABLE STATUS LIKE 'tab'; |
|||
|
|||
# Remove the *.ibd file |
|||
ALTER TABLE tab DISCARD TABLESPACE; |
|||
|
|||
# Move the *ibd,*.cfg file into orginal location |
|||
--move_file $MYSQLD_DATADIR/tab.cfg $MYSQLD_DATADIR/test/tab.cfg |
|||
--move_file $MYSQLD_DATADIR/tab.ibd $MYSQLD_DATADIR/test/tab.ibd |
|||
|
|||
# Check import is successful (because same row_format) |
|||
ALTER TABLE tab IMPORT TABLESPACE; |
|||
|
|||
# Check the rows |
|||
SELECT * FROM tab; |
|||
|
|||
# Cleanup |
|||
DROP TABLE tab; |
|||
|
|||
--echo # ########################################################### |
|||
# Check when Index Column size (3070 bytes) is too long, Change row_format |
|||
# Check when Index Column size (767 bytes), Change row_format |
|||
# Dynamic to Compact to Dynamic |
|||
|
|||
# Set the default_row_format=Dynamic |
|||
SET GLOBAL innodb_default_row_format=Dynamic; |
|||
SET GLOBAL innodb_large_prefix=ON; |
|||
|
|||
SELECT @@innodb_default_row_format; |
|||
|
|||
CREATE TABLE tab(a INT PRIMARY KEY, b VARCHAR(5000), KEY idx1(b(3070))) ENGINE= InnoDB; |
|||
--replace_column 3 # 5 # 6 # 7 # 8 # 9 # 10 # 12 # |
|||
SHOW TABLE STATUS LIKE 'tab'; |
|||
|
|||
INSERT INTO tab(a,b) VALUES(1,'Check with max column size'); |
|||
|
|||
# Check by SELECT, no errors |
|||
SELECT * FROM tab; |
|||
|
|||
# Change row_format to Compact |
|||
SET GLOBAL innodb_default_row_format=COMPACT; |
|||
|
|||
# Check error ERROR 1709 (HY000): Index column size too large |
|||
-- error ER_INDEX_COLUMN_TOO_LONG |
|||
ALTER TABLE tab ROW_FORMAT=COMPACT; |
|||
|
|||
# Cleanup |
|||
DROP TABLE tab; |
|||
|
|||
# Change the default_row_format to default |
|||
SET GLOBAL innodb_default_row_format=Default; |
|||
SELECT @@innodb_default_row_format; |
|||
SET GLOBAL innodb_default_row_format=Dynamic; |
|||
|
|||
# Change row_format to Dynamic |
|||
SELECT @@innodb_default_row_format; |
|||
|
|||
CREATE TABLE tab(a INT PRIMARY KEY, b VARCHAR(5000), KEY idx1(b(767))) ENGINE= InnoDB; |
|||
--replace_column 3 # 5 # 6 # 7 # 8 # 9 # 10 # 12 # |
|||
SHOW TABLE STATUS LIKE 'tab'; |
|||
|
|||
INSERT INTO tab(a,b) VALUES(1,'Check with max column size'); |
|||
|
|||
# Check by SELECT, no errors |
|||
SELECT * FROM tab; |
|||
|
|||
# Check no errors because Compact allows 767 bytes |
|||
ALTER TABLE tab ROW_FORMAT=COMPACT; |
|||
--replace_column 3 # 5 # 6 # 7 # 8 # 9 # 10 # 12 # |
|||
SHOW TABLE STATUS LIKE 'tab'; |
|||
|
|||
# Check by SELECT, no errors |
|||
SELECT * FROM tab; |
|||
|
|||
# Check no errors |
|||
ALTER TABLE tab ROW_FORMAT=COMPRESSED; |
|||
|
|||
# Check by SELECT, no errors |
|||
SELECT * FROM tab; |
|||
|
|||
# Check no errors |
|||
ALTER TABLE tab ROW_FORMAT=Dynamic; |
|||
--replace_column 3 # 5 # 6 # 7 # 8 # 9 # 10 # 12 # |
|||
SHOW TABLE STATUS LIKE 'tab'; |
|||
|
|||
# Cleanup |
|||
DROP TABLE tab; |
|||
|
|||
SET GLOBAL innodb_default_row_format = @row_format; |
|||
SET GLOBAL innodb_large_prefix = @large_prefix; |
|||
SET GLOBAL innodb_file_format = @file_format; |
@ -0,0 +1,28 @@ |
|||
--source include/have_innodb.inc |
|||
--source include/innodb_row_format.inc |
|||
|
|||
CREATE TABLE t1(c1 TEXT,c2 BLOB) ENGINE=InnoDB; |
|||
--replace_column 3 # 5 # 6 # 7 # 8 # 9 # 10 # 12 # |
|||
SHOW TABLE STATUS LIKE 't1'; |
|||
DROP TABLE t1; |
|||
|
|||
CREATE TABLE t1(c1 TEXT,c2 BLOB) ENGINE=InnoDB ROW_FORMAT=DYNAMIC; |
|||
--replace_column 3 # 5 # 6 # 7 # 8 # 9 # 10 # 12 # |
|||
SHOW TABLE STATUS LIKE 't1'; |
|||
DROP TABLE t1; |
|||
|
|||
CREATE TABLE t1(c1 TEXT,c2 BLOB) ENGINE=InnoDB ROW_FORMAT=COMPACT; |
|||
--replace_column 3 # 5 # 6 # 7 # 8 # 9 # 10 # 12 # |
|||
SHOW TABLE STATUS LIKE 't1'; |
|||
DROP TABLE t1; |
|||
|
|||
CREATE TABLE t1(c1 TEXT,c2 BLOB) ENGINE=InnoDB ROW_FORMAT=REDUNDANT; |
|||
--replace_column 3 # 5 # 6 # 7 # 8 # 9 # 10 # 12 # |
|||
SHOW TABLE STATUS LIKE 't1'; |
|||
DROP TABLE t1; |
|||
|
|||
CREATE TABLE t1(c1 TEXT,c2 BLOB) ENGINE=InnoDB |
|||
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1; |
|||
--replace_column 3 # 5 # 6 # 7 # 8 # 9 # 10 # 12 # |
|||
SHOW TABLE STATUS LIKE 't1'; |
|||
DROP TABLE t1; |
@ -0,0 +1 @@ |
|||
--innodb_large_prefix=OFF --innodb_file_format=barracuda --innodb-file-format-check=off --innodb-file-format-max=antelope |
@ -0,0 +1,76 @@ |
|||
#*********************************************************** |
|||
# WL#7703: |
|||
# Check the max key length 3072 when innodb_large_prefix=ON |
|||
# Check boundary value of max key length 3073 |
|||
# When innodb_file_format=Antelope, compress DDLs fails |
|||
# Check file_format_max becomes Barracuda on DDL operation |
|||
# on compression table. |
|||
#*********************************************************** |
|||
-- source include/have_innodb.inc |
|||
-- source include/have_innodb_16k.inc |
|||
|
|||
call mtr.add_suppression("InnoDB: Cannot add field `c1` in table `test`\\.`tab0`"); |
|||
|
|||
# Check some default settings |
|||
SELECT @@innodb_strict_mode; |
|||
|
|||
SELECT @@innodb_file_per_table; |
|||
|
|||
SET @file_format = @@GLOBAL.innodb_file_format; |
|||
|
|||
SET GLOBAL innodb_large_prefix=ON; |
|||
SET SQL_MODE=strict_all_tables; |
|||
|
|||
CREATE TABLE tab0 (c1 VARCHAR(65530), KEY(c1(3073))) ENGINE=InnoDB ROW_FORMAT=COMPRESSED; |
|||
SHOW CREATE TABLE tab0; |
|||
DROP TABLE tab0; |
|||
|
|||
--error ER_TOO_BIG_ROWSIZE |
|||
CREATE TABLE tab0 (c1 VARCHAR(65530), KEY(c1(3073))) ENGINE=InnoDB KEY_BLOCK_SIZE=2; |
|||
|
|||
SET GLOBAL innodb_file_format=Antelope; |
|||
|
|||
--error ER_CANT_CREATE_TABLE |
|||
CREATE TABLE tab0(c1 INT,c2 LONGBLOB ) ENGINE=InnoDB ROW_FORMAT=Dynamic; |
|||
|
|||
SET GLOBAL innodb_file_format=Default; |
|||
|
|||
CREATE TABLE tab0(c1 INT,c2 LONGBLOB ) ENGINE=InnoDB ROW_FORMAT=Dynamic; |
|||
DROP TABLE tab0; |
|||
|
|||
SELECT @@innodb_file_format; |
|||
|
|||
SET GLOBAL innodb_strict_mode=OFF; |
|||
|
|||
# Check with default value |
|||
SET GLOBAL innodb_strict_mode=Default; |
|||
|
|||
SELECT @@innodb_strict_mode; |
|||
|
|||
SET GLOBAL innodb_large_prefix=OFF; |
|||
|
|||
SELECT @@innodb_large_prefix; |
|||
|
|||
SET GLOBAL innodb_large_prefix=Default; |
|||
|
|||
# Check with default value |
|||
SELECT @@innodb_large_prefix; |
|||
|
|||
SET GLOBAL innodb_file_format_max=Default; |
|||
|
|||
# Check with default value |
|||
SELECT @@innodb_file_format_max; |
|||
|
|||
CREATE TABLE tab1(c1 int ) ENGINE=InnoDB ROW_FORMAT=COMPRESSED; |
|||
|
|||
# Check file format changed to Barracuda, on DDL operation |
|||
SELECT @@innodb_file_format_max; |
|||
|
|||
SET GLOBAL innodb_file_format_max=Default; |
|||
|
|||
# Restore to the value that we explicitly used at startup. |
|||
SET GLOBAL innodb_large_prefix=off; |
|||
|
|||
SET GLOBAL innodb_file_format = @file_format; |
|||
|
|||
DROP TABLE tab1; |
Write
Preview
Loading…
Cancel
Save
Reference in new issue