Browse Source
In this patch, existing tests innodb_bug54679.test and innodb_bug56632.test are
In this patch, existing tests innodb_bug54679.test and innodb_bug56632.test are
removed and replaced by the comprehensive innodb-create-options.test. It uses the rules listed in the comments at the top of that test. This patch introduces these differences from previous behavior; 1) KEY_BLOCK_SIZE=0 is allowed by Innodb in both strict and non-strict mode with no errors or warnings. It was previously used by the server to set KEY_BLOCK_SIZE to undefined. (Bug#56628) 2) An explicit valid non-DEFAULT ROW_FORMAT always takes priority over a valid KEY_BLOCK_SIZE. (bug#56632) 3) Automatic use of COMPRESSED row format is only done if the ROW_FORMAT is DEFAULT or unspecified. 4) ROW_FORMAT=FIXED is prevented in strict mode. This patch also includes various formatting changes for consistency with InnoDB coding standards. Related Bugs Bug#54679: ALTER TABLE causes compressed row_format to revert to compact Bug#56628: ALTER TABLE .. KEY_BLOCK_SIZE=0 produces untrue warning or unnecessary error Bug#56632: ALTER TABLE implicitly changes ROW_FORMAT to COMPRESSEDpull/73/head
9 changed files with 1573 additions and 870 deletions
-
854mysql-test/suite/innodb/r/innodb-create-options.result
-
20mysql-test/suite/innodb/r/innodb-zip.result
-
88mysql-test/suite/innodb/r/innodb_bug54679.result
-
294mysql-test/suite/innodb/r/innodb_bug56632.result
-
575mysql-test/suite/innodb/t/innodb-create-options.test
-
8mysql-test/suite/innodb/t/innodb-zip.test
-
101mysql-test/suite/innodb/t/innodb_bug54679.test
-
216mysql-test/suite/innodb/t/innodb_bug56632.test
-
287storage/innobase/handler/ha_innodb.cc
@ -0,0 +1,854 @@ |
|||
SET storage_engine=InnoDB; |
|||
SET GLOBAL innodb_file_format=`Barracuda`; |
|||
SET GLOBAL innodb_file_per_table=ON; |
|||
SET SESSION innodb_strict_mode = ON; |
|||
# Test 1) StrictMode=ON, CREATE and ALTER with each ROW_FORMAT & KEY_BLOCK_SIZE=0 |
|||
# KEY_BLOCK_SIZE=0 means 'no KEY_BLOCK_SIZE is specified' |
|||
DROP TABLE IF EXISTS t1; |
|||
Warnings: |
|||
Note 1051 Unknown table 't1' |
|||
# 'FIXED' is sent to InnoDB since it is used by MyISAM. |
|||
# But it is an invalid mode in InnoDB |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=FIXED; |
|||
ERROR HY000: Can't create table 'test.t1' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: invalid ROW_FORMAT specifier. |
|||
Error 1005 Can't create table 'test.t1' (errno: 1478) |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED 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 |
|||
ALTER TABLE t1 ROW_FORMAT=COMPACT 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 Compact row_format=COMPACT |
|||
ALTER TABLE t1 ROW_FORMAT=DYNAMIC 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 Dynamic row_format=DYNAMIC |
|||
ALTER TABLE t1 ROW_FORMAT=REDUNDANT 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 Redundant row_format=REDUNDANT |
|||
ALTER TABLE t1 ROW_FORMAT=DEFAULT 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 Compact |
|||
ALTER TABLE t1 ROW_FORMAT=FIXED KEY_BLOCK_SIZE=0; |
|||
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: invalid ROW_FORMAT specifier. |
|||
Error 1005 Can't create table '#sql-temporary' (errno: 1478) |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
t1 Compact |
|||
# Test 2) StrictMode=ON, CREATE with each ROW_FORMAT & a valid non-zero KEY_BLOCK_SIZE |
|||
# KEY_BLOCK_SIZE is incompatible with COMPACT, REDUNDANT, & DYNAMIC |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1; |
|||
ERROR HY000: Can't create table 'test.t1' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: cannot specify ROW_FORMAT = COMPACT with KEY_BLOCK_SIZE. |
|||
Error 1005 Can't create table 'test.t1' (errno: 1478) |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=REDUNDANT KEY_BLOCK_SIZE=2; |
|||
ERROR HY000: Can't create table 'test.t1' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: cannot specify ROW_FORMAT = REDUNDANT with KEY_BLOCK_SIZE. |
|||
Error 1005 Can't create table 'test.t1' (errno: 1478) |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=4; |
|||
ERROR HY000: Can't create table 'test.t1' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: cannot specify ROW_FORMAT = DYNAMIC with KEY_BLOCK_SIZE. |
|||
Error 1005 Can't create table 'test.t1' (errno: 1478) |
|||
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 ADD COLUMN f1 INT; |
|||
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 IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=16; |
|||
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 KEY_BLOCK_SIZE=16 |
|||
ALTER TABLE t1 ADD COLUMN f1 INT; |
|||
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 KEY_BLOCK_SIZE=16 |
|||
# Test 3) StrictMode=ON, ALTER with each ROW_FORMAT & a valid non-zero KEY_BLOCK_SIZE |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ); |
|||
ALTER TABLE t1 ROW_FORMAT=FIXED KEY_BLOCK_SIZE=1; |
|||
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: invalid ROW_FORMAT specifier. |
|||
Error 1005 Can't create table '#sql-temporary' (errno: 1478) |
|||
ALTER TABLE t1 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=2; |
|||
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: cannot specify ROW_FORMAT = COMPACT with KEY_BLOCK_SIZE. |
|||
Error 1005 Can't create table '#sql-temporary' (errno: 1478) |
|||
ALTER TABLE t1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=4; |
|||
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: cannot specify ROW_FORMAT = DYNAMIC with KEY_BLOCK_SIZE. |
|||
Error 1005 Can't create table '#sql-temporary' (errno: 1478) |
|||
ALTER TABLE t1 ROW_FORMAT=REDUNDANT KEY_BLOCK_SIZE=8; |
|||
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: cannot specify ROW_FORMAT = REDUNDANT with KEY_BLOCK_SIZE. |
|||
Error 1005 Can't create table '#sql-temporary' (errno: 1478) |
|||
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=16; |
|||
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 KEY_BLOCK_SIZE=16 |
|||
ALTER TABLE t1 ROW_FORMAT=COMPRESSED 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 |
|||
# Test 4) StrictMode=ON, CREATE with ROW_FORMAT=COMPACT, ALTER with a valid non-zero KEY_BLOCK_SIZE |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
t1 Compact row_format=COMPACT |
|||
ALTER TABLE t1 KEY_BLOCK_SIZE=2; |
|||
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: cannot specify ROW_FORMAT = COMPACT with KEY_BLOCK_SIZE. |
|||
Error 1005 Can't create table '#sql-temporary' (errno: 1478) |
|||
ALTER TABLE t1 ROW_FORMAT=REDUNDANT; |
|||
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 Redundant row_format=REDUNDANT |
|||
ALTER TABLE t1 KEY_BLOCK_SIZE=4; |
|||
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: cannot specify ROW_FORMAT = REDUNDANT with KEY_BLOCK_SIZE. |
|||
Error 1005 Can't create table '#sql-temporary' (errno: 1478) |
|||
ALTER TABLE t1 ROW_FORMAT=DYNAMIC; |
|||
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 Dynamic row_format=DYNAMIC |
|||
ALTER TABLE t1 KEY_BLOCK_SIZE=8; |
|||
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: cannot specify ROW_FORMAT = DYNAMIC with KEY_BLOCK_SIZE. |
|||
Error 1005 Can't create table '#sql-temporary' (errno: 1478) |
|||
ALTER TABLE t1 ROW_FORMAT=COMPRESSED; |
|||
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 |
|||
ALTER TABLE t1 KEY_BLOCK_SIZE=16; |
|||
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=16 |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT; |
|||
ALTER TABLE t1 ROW_FORMAT=DEFAULT 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 KEY_BLOCK_SIZE=1 |
|||
# Test 5) StrictMode=ON, CREATE with a valid KEY_BLOCK_SIZE |
|||
# ALTER with each ROW_FORMAT |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) KEY_BLOCK_SIZE=2; |
|||
SHOW CREATE TABLE t1; |
|||
Table Create Table |
|||
t1 CREATE TABLE `t1` ( |
|||
`i` int(11) DEFAULT NULL |
|||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 KEY_BLOCK_SIZE=2 |
|||
ALTER TABLE t1 ADD COLUMN f1 INT; |
|||
SHOW CREATE TABLE t1; |
|||
Table Create Table |
|||
t1 CREATE TABLE `t1` ( |
|||
`i` int(11) DEFAULT NULL, |
|||
`f1` int(11) DEFAULT NULL |
|||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 KEY_BLOCK_SIZE=2 |
|||
ALTER TABLE t1 ROW_FORMAT=COMPACT; |
|||
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: cannot specify ROW_FORMAT = COMPACT with KEY_BLOCK_SIZE. |
|||
Error 1005 Can't create table '#sql-temporary' (errno: 1478) |
|||
ALTER TABLE t1 ROW_FORMAT=REDUNDANT; |
|||
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: cannot specify ROW_FORMAT = REDUNDANT with KEY_BLOCK_SIZE. |
|||
Error 1005 Can't create table '#sql-temporary' (errno: 1478) |
|||
ALTER TABLE t1 ROW_FORMAT=DYNAMIC; |
|||
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: cannot specify ROW_FORMAT = DYNAMIC with KEY_BLOCK_SIZE. |
|||
Error 1005 Can't create table '#sql-temporary' (errno: 1478) |
|||
ALTER TABLE t1 ROW_FORMAT=COMPRESSED; |
|||
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 ROW_FORMAT=DEFAULT 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 Compact |
|||
ALTER TABLE t1 ROW_FORMAT=COMPACT; |
|||
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 Compact row_format=COMPACT |
|||
# Test 6) StrictMode=ON, CREATE with an invalid KEY_BLOCK_SIZE. |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) KEY_BLOCK_SIZE=9; |
|||
ERROR HY000: Can't create table 'test.t1' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: invalid KEY_BLOCK_SIZE = 9. Valid values are [1, 2, 4, 8, 16] |
|||
Error 1005 Can't create table 'test.t1' (errno: 1478) |
|||
# Test 7) StrictMode=ON, Make sure ROW_FORMAT= COMPRESSED & DYNAMIC and |
|||
# and a valid non-zero KEY_BLOCK_SIZE are rejected with Antelope |
|||
# and that they can be set to default values during strict mode. |
|||
SET GLOBAL innodb_file_format=Antelope; |
|||
DROP TABLE IF EXISTS t1; |
|||
Warnings: |
|||
Note 1051 Unknown table 't1' |
|||
CREATE TABLE t1 ( i INT ) KEY_BLOCK_SIZE=4; |
|||
ERROR HY000: Can't create table 'test.t1' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope. |
|||
Error 1005 Can't create table 'test.t1' (errno: 1478) |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED; |
|||
ERROR HY000: Can't create table 'test.t1' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_format > Antelope. |
|||
Error 1005 Can't create table 'test.t1' (errno: 1478) |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DYNAMIC; |
|||
ERROR HY000: Can't create table 'test.t1' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_format > Antelope. |
|||
Error 1005 Can't create table 'test.t1' (errno: 1478) |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=REDUNDANT; |
|||
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 Redundant row_format=REDUNDANT |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT; |
|||
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 Compact row_format=COMPACT |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DEFAULT; |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
ALTER TABLE t1 KEY_BLOCK_SIZE=8; |
|||
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope. |
|||
Error 1005 Can't create table '#sql-temporary' (errno: 1478) |
|||
ALTER TABLE t1 ROW_FORMAT=COMPRESSED; |
|||
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_format > Antelope. |
|||
Error 1005 Can't create table '#sql-temporary' (errno: 1478) |
|||
ALTER TABLE t1 ROW_FORMAT=DYNAMIC; |
|||
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_format > Antelope. |
|||
Error 1005 Can't create table '#sql-temporary' (errno: 1478) |
|||
SET GLOBAL innodb_file_format=Barracuda; |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4; |
|||
SET GLOBAL innodb_file_format=Antelope; |
|||
ALTER TABLE t1 ADD COLUMN f1 INT; |
|||
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope. |
|||
Warning 1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_format > Antelope. |
|||
Error 1005 Can't create table '#sql-temporary' (errno: 1478) |
|||
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=0; |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
ALTER TABLE t1 ADD COLUMN f2 INT; |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
SET GLOBAL innodb_file_format=Barracuda; |
|||
# Test 8) StrictMode=ON, Make sure ROW_FORMAT= COMPRESSED & DYNAMIC and |
|||
# and a valid non-zero KEY_BLOCK_SIZE are rejected with |
|||
# innodb_file_per_table=OFF and that they can be set to default |
|||
# values during strict mode. |
|||
SET GLOBAL innodb_file_per_table=OFF; |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) KEY_BLOCK_SIZE=16; |
|||
ERROR HY000: Can't create table 'test.t1' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table. |
|||
Error 1005 Can't create table 'test.t1' (errno: 1478) |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED; |
|||
ERROR HY000: Can't create table 'test.t1' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_per_table. |
|||
Error 1005 Can't create table 'test.t1' (errno: 1478) |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DYNAMIC; |
|||
ERROR HY000: Can't create table 'test.t1' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_per_table. |
|||
Error 1005 Can't create table 'test.t1' (errno: 1478) |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=REDUNDANT; |
|||
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 Redundant row_format=REDUNDANT |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT; |
|||
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 Compact row_format=COMPACT |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DEFAULT; |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
ALTER TABLE t1 KEY_BLOCK_SIZE=1; |
|||
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table. |
|||
Error 1005 Can't create table '#sql-temporary' (errno: 1478) |
|||
ALTER TABLE t1 ROW_FORMAT=COMPRESSED; |
|||
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_per_table. |
|||
Error 1005 Can't create table '#sql-temporary' (errno: 1478) |
|||
ALTER TABLE t1 ROW_FORMAT=DYNAMIC; |
|||
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_per_table. |
|||
Error 1005 Can't create table '#sql-temporary' (errno: 1478) |
|||
ALTER TABLE t1 ROW_FORMAT=COMPACT; |
|||
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 Compact row_format=COMPACT |
|||
ALTER TABLE t1 ROW_FORMAT=REDUNDANT; |
|||
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 Redundant row_format=REDUNDANT |
|||
ALTER TABLE t1 ROW_FORMAT=DEFAULT; |
|||
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 Compact |
|||
SET GLOBAL innodb_file_per_table=ON; |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4; |
|||
SET GLOBAL innodb_file_per_table=OFF; |
|||
ALTER TABLE t1 ADD COLUMN f1 INT; |
|||
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table. |
|||
Warning 1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_per_table. |
|||
Error 1005 Can't create table '#sql-temporary' (errno: 1478) |
|||
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=0; |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
ALTER TABLE t1 ADD COLUMN f2 INT; |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
SET GLOBAL innodb_file_per_table=ON; |
|||
################################################## |
|||
SET SESSION innodb_strict_mode = OFF; |
|||
# Test 9) StrictMode=OFF, CREATE and ALTER with each ROW_FORMAT & KEY_BLOCK_SIZE=0 |
|||
# KEY_BLOCK_SIZE=0 means 'no KEY_BLOCK_SIZE is specified' |
|||
# 'FIXED' is sent to InnoDB since it is used by MyISAM. |
|||
# It is an invalid mode in InnoDB, use COMPACT |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=FIXED; |
|||
Warnings: |
|||
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT. |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT. |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
t1 Compact row_format=FIXED |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED 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 |
|||
ALTER TABLE t1 ROW_FORMAT=COMPACT 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 Compact row_format=COMPACT |
|||
ALTER TABLE t1 ROW_FORMAT=DYNAMIC 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 Dynamic row_format=DYNAMIC |
|||
ALTER TABLE t1 ROW_FORMAT=REDUNDANT 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 Redundant row_format=REDUNDANT |
|||
ALTER TABLE t1 ROW_FORMAT=DEFAULT 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 Compact |
|||
ALTER TABLE t1 ROW_FORMAT=FIXED KEY_BLOCK_SIZE=0; |
|||
Warnings: |
|||
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT. |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT. |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
t1 Compact row_format=FIXED |
|||
# Test 10) StrictMode=OFF, CREATE with each ROW_FORMAT & a valid KEY_BLOCK_SIZE |
|||
# KEY_BLOCK_SIZE is ignored with COMPACT, REDUNDANT, & DYNAMIC |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1; |
|||
Warnings: |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=1 unless ROW_FORMAT=COMPRESSED. |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=1 unless ROW_FORMAT=COMPRESSED. |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
t1 Compact row_format=COMPACT KEY_BLOCK_SIZE=1 |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=REDUNDANT KEY_BLOCK_SIZE=2; |
|||
Warnings: |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=2 unless ROW_FORMAT=COMPRESSED. |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=2 unless ROW_FORMAT=COMPRESSED. |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
t1 Redundant row_format=REDUNDANT KEY_BLOCK_SIZE=2 |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=4; |
|||
Warnings: |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=4 unless ROW_FORMAT=COMPRESSED. |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=4 unless ROW_FORMAT=COMPRESSED. |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
t1 Dynamic row_format=DYNAMIC KEY_BLOCK_SIZE=4 |
|||
DROP TABLE IF EXISTS 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 |
|||
ALTER TABLE t1 ADD COLUMN f1 INT; |
|||
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 IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=16; |
|||
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 KEY_BLOCK_SIZE=16 |
|||
ALTER TABLE t1 ADD COLUMN f1 INT; |
|||
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 KEY_BLOCK_SIZE=16 |
|||
# Test 11) StrictMode=OFF, ALTER with each ROW_FORMAT & a valid KEY_BLOCK_SIZE |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ); |
|||
ALTER TABLE t1 ROW_FORMAT=FIXED KEY_BLOCK_SIZE=1; |
|||
Warnings: |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=1 unless ROW_FORMAT=COMPRESSED. |
|||
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT. |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=1 unless ROW_FORMAT=COMPRESSED. |
|||
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT. |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
t1 Compact row_format=FIXED KEY_BLOCK_SIZE=1 |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ); |
|||
ALTER TABLE t1 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=2; |
|||
Warnings: |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=2 unless ROW_FORMAT=COMPRESSED. |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=2 unless ROW_FORMAT=COMPRESSED. |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
t1 Compact row_format=COMPACT KEY_BLOCK_SIZE=2 |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ); |
|||
ALTER TABLE t1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=4; |
|||
Warnings: |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=4 unless ROW_FORMAT=COMPRESSED. |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=4 unless ROW_FORMAT=COMPRESSED. |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
t1 Dynamic row_format=DYNAMIC KEY_BLOCK_SIZE=4 |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ); |
|||
ALTER TABLE t1 ROW_FORMAT=REDUNDANT KEY_BLOCK_SIZE=8; |
|||
Warnings: |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=8 unless ROW_FORMAT=COMPRESSED. |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=8 unless ROW_FORMAT=COMPRESSED. |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
t1 Redundant row_format=REDUNDANT KEY_BLOCK_SIZE=8 |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ); |
|||
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=16; |
|||
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 KEY_BLOCK_SIZE=16 |
|||
ALTER TABLE t1 ROW_FORMAT=COMPRESSED 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 |
|||
# Test 12) StrictMode=OFF, CREATE with ROW_FORMAT=COMPACT, ALTER with a valid KEY_BLOCK_SIZE |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
t1 Compact row_format=COMPACT |
|||
ALTER TABLE t1 KEY_BLOCK_SIZE=2; |
|||
Warnings: |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=2 unless ROW_FORMAT=COMPRESSED. |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=2 unless ROW_FORMAT=COMPRESSED. |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
t1 Compact row_format=COMPACT KEY_BLOCK_SIZE=2 |
|||
ALTER TABLE t1 ROW_FORMAT=REDUNDANT; |
|||
Warnings: |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=2 unless ROW_FORMAT=COMPRESSED. |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=2 unless ROW_FORMAT=COMPRESSED. |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
t1 Redundant row_format=REDUNDANT KEY_BLOCK_SIZE=2 |
|||
ALTER TABLE t1 ROW_FORMAT=DYNAMIC; |
|||
Warnings: |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=2 unless ROW_FORMAT=COMPRESSED. |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=2 unless ROW_FORMAT=COMPRESSED. |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
t1 Dynamic row_format=DYNAMIC KEY_BLOCK_SIZE=2 |
|||
ALTER TABLE t1 ROW_FORMAT=COMPRESSED; |
|||
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=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 |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT; |
|||
ALTER TABLE t1 ROW_FORMAT=DEFAULT 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 KEY_BLOCK_SIZE=8 |
|||
# Test 13) StrictMode=OFF, CREATE with a valid KEY_BLOCK_SIZE |
|||
# ALTER with each ROW_FORMAT |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) KEY_BLOCK_SIZE=16; |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
SHOW CREATE TABLE t1; |
|||
Table Create Table |
|||
t1 CREATE TABLE `t1` ( |
|||
`i` int(11) DEFAULT NULL |
|||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 KEY_BLOCK_SIZE=16 |
|||
ALTER TABLE t1 ADD COLUMN f1 INT; |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
SHOW CREATE TABLE t1; |
|||
Table Create Table |
|||
t1 CREATE TABLE `t1` ( |
|||
`i` int(11) DEFAULT NULL, |
|||
`f1` int(11) DEFAULT NULL |
|||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 KEY_BLOCK_SIZE=16 |
|||
ALTER TABLE t1 ROW_FORMAT=COMPACT; |
|||
Warnings: |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=16 unless ROW_FORMAT=COMPRESSED. |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=16 unless ROW_FORMAT=COMPRESSED. |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
t1 Compact row_format=COMPACT KEY_BLOCK_SIZE=16 |
|||
ALTER TABLE t1 ROW_FORMAT=REDUNDANT; |
|||
Warnings: |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=16 unless ROW_FORMAT=COMPRESSED. |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=16 unless ROW_FORMAT=COMPRESSED. |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
t1 Redundant row_format=REDUNDANT KEY_BLOCK_SIZE=16 |
|||
ALTER TABLE t1 ROW_FORMAT=DYNAMIC; |
|||
Warnings: |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=16 unless ROW_FORMAT=COMPRESSED. |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=16 unless ROW_FORMAT=COMPRESSED. |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
t1 Dynamic row_format=DYNAMIC KEY_BLOCK_SIZE=16 |
|||
ALTER TABLE t1 ROW_FORMAT=COMPRESSED; |
|||
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=16 |
|||
ALTER TABLE t1 ROW_FORMAT=DEFAULT 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 Compact |
|||
ALTER TABLE t1 ROW_FORMAT=COMPACT; |
|||
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 Compact row_format=COMPACT |
|||
# Test 14) StrictMode=OFF, CREATE with an invalid KEY_BLOCK_SIZE, it defaults to 8 |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) KEY_BLOCK_SIZE=15; |
|||
Warnings: |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=15. |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=15. |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
t1 Compact KEY_BLOCK_SIZE=15 |
|||
# Test 15) StrictMode=OFF, Make sure ROW_FORMAT= COMPRESSED & DYNAMIC and a |
|||
valid KEY_BLOCK_SIZE are remembered but not used when ROW_FORMAT |
|||
is reverted to Antelope and then used again when ROW_FORMAT=Barracuda. |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED 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 |
|||
SET GLOBAL innodb_file_format=Antelope; |
|||
ALTER TABLE t1 ADD COLUMN f1 INT; |
|||
Warnings: |
|||
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope. |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=1. |
|||
Warning 1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_format > Antelope. |
|||
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT. |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope. |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=1. |
|||
Warning 1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_format > Antelope. |
|||
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT. |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
t1 Compact row_format=COMPRESSED KEY_BLOCK_SIZE=1 |
|||
SET GLOBAL innodb_file_format=Barracuda; |
|||
ALTER TABLE t1 ADD COLUMN f2 INT; |
|||
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 |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DYNAMIC; |
|||
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 Dynamic row_format=DYNAMIC |
|||
SET GLOBAL innodb_file_format=Antelope; |
|||
ALTER TABLE t1 ADD COLUMN f1 INT; |
|||
Warnings: |
|||
Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_format > Antelope. |
|||
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT. |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_format > Antelope. |
|||
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT. |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
t1 Compact row_format=DYNAMIC |
|||
SET GLOBAL innodb_file_format=Barracuda; |
|||
ALTER TABLE t1 ADD COLUMN f2 INT; |
|||
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 Dynamic row_format=DYNAMIC |
|||
# Test 16) StrictMode=OFF, Make sure ROW_FORMAT= COMPRESSED & DYNAMIC and a |
|||
valid KEY_BLOCK_SIZE are remembered but not used when innodb_file_per_table=OFF |
|||
and then used again when innodb_file_per_table=ON. |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED 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 |
|||
SET GLOBAL innodb_file_per_table=OFF; |
|||
ALTER TABLE t1 ADD COLUMN f1 INT; |
|||
Warnings: |
|||
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table. |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=2. |
|||
Warning 1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_per_table. |
|||
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT. |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table. |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=2. |
|||
Warning 1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_per_table. |
|||
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT. |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
t1 Compact row_format=COMPRESSED KEY_BLOCK_SIZE=2 |
|||
SET GLOBAL innodb_file_per_table=ON; |
|||
ALTER TABLE t1 ADD COLUMN f2 INT; |
|||
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 |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DYNAMIC; |
|||
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 Dynamic row_format=DYNAMIC |
|||
SET GLOBAL innodb_file_per_table=OFF; |
|||
ALTER TABLE t1 ADD COLUMN f1 INT; |
|||
Warnings: |
|||
Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_per_table. |
|||
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT. |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_per_table. |
|||
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT. |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
t1 Compact row_format=DYNAMIC |
|||
SET GLOBAL innodb_file_per_table=ON; |
|||
ALTER TABLE t1 ADD COLUMN f2 INT; |
|||
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 Dynamic row_format=DYNAMIC |
|||
# Cleanup |
|||
DROP TABLE IF EXISTS t1; |
|||
@ -1,88 +0,0 @@ |
|||
SET GLOBAL innodb_file_format='Barracuda'; |
|||
SET GLOBAL innodb_file_per_table=ON; |
|||
SET innodb_strict_mode=ON; |
|||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=COMPRESSED; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables |
|||
WHERE TABLE_NAME='bug54679'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
bug54679 Compressed row_format=COMPRESSED |
|||
ALTER TABLE bug54679 ADD COLUMN b INT; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables |
|||
WHERE TABLE_NAME='bug54679'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
bug54679 Compressed row_format=COMPRESSED |
|||
DROP TABLE bug54679; |
|||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables |
|||
WHERE TABLE_NAME='bug54679'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
bug54679 Compact |
|||
ALTER TABLE bug54679 KEY_BLOCK_SIZE=1; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables |
|||
WHERE TABLE_NAME='bug54679'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
bug54679 Compressed KEY_BLOCK_SIZE=1 |
|||
ALTER TABLE bug54679 ROW_FORMAT=REDUNDANT; |
|||
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: cannot specify ROW_FORMAT = REDUNDANT with KEY_BLOCK_SIZE. |
|||
Error 1005 Can't create table '#sql-temporary' (errno: 1478) |
|||
DROP TABLE bug54679; |
|||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=REDUNDANT; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables |
|||
WHERE TABLE_NAME='bug54679'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
bug54679 Redundant row_format=REDUNDANT |
|||
ALTER TABLE bug54679 KEY_BLOCK_SIZE=2; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables |
|||
WHERE TABLE_NAME='bug54679'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
bug54679 Compressed row_format=REDUNDANT KEY_BLOCK_SIZE=2 |
|||
SET GLOBAL innodb_file_format=Antelope; |
|||
ALTER TABLE bug54679 KEY_BLOCK_SIZE=4; |
|||
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope. |
|||
Error 1005 Can't create table '#sql-temporary' (errno: 1478) |
|||
ALTER TABLE bug54679 ROW_FORMAT=DYNAMIC; |
|||
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope. |
|||
Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_format > Antelope. |
|||
Warning 1478 InnoDB: cannot specify ROW_FORMAT = DYNAMIC with KEY_BLOCK_SIZE. |
|||
Error 1005 Can't create table '#sql-temporary' (errno: 1478) |
|||
DROP TABLE bug54679; |
|||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC; |
|||
ERROR HY000: Can't create table 'test.bug54679' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_format > Antelope. |
|||
Error 1005 Can't create table 'test.bug54679' (errno: 1478) |
|||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB; |
|||
SET GLOBAL innodb_file_format=Barracuda; |
|||
SET GLOBAL innodb_file_per_table=OFF; |
|||
ALTER TABLE bug54679 KEY_BLOCK_SIZE=4; |
|||
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table. |
|||
Error 1005 Can't create table '#sql-temporary' (errno: 1478) |
|||
ALTER TABLE bug54679 ROW_FORMAT=DYNAMIC; |
|||
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_per_table. |
|||
Error 1005 Can't create table '#sql-temporary' (errno: 1478) |
|||
DROP TABLE bug54679; |
|||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC; |
|||
ERROR HY000: Can't create table 'test.bug54679' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_per_table. |
|||
Error 1005 Can't create table 'test.bug54679' (errno: 1478) |
|||
SET GLOBAL innodb_file_per_table=ON; |
|||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC; |
|||
DROP TABLE bug54679; |
|||
@ -1,294 +0,0 @@ |
|||
SET storage_engine=InnoDB; |
|||
SET GLOBAL innodb_file_format=`Barracuda`; |
|||
SET GLOBAL innodb_file_per_table=ON; |
|||
SET SESSION innodb_strict_mode = ON; |
|||
# Test 1) CREATE with ROW_FORMAT & KEY_BLOCK_SIZE, ALTER with neither |
|||
DROP TABLE IF EXISTS bug56632; |
|||
Warnings: |
|||
Note 1051 Unknown table 'bug56632' |
|||
CREATE TABLE bug56632 ( i INT ) ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1; |
|||
ERROR HY000: Can't create table 'test.bug56632' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: cannot specify ROW_FORMAT = COMPACT with KEY_BLOCK_SIZE. |
|||
Error 1005 Can't create table 'test.bug56632' (errno: 1478) |
|||
# Test 2) CREATE with ROW_FORMAT, ALTER with KEY_BLOCK_SIZE |
|||
DROP TABLE IF EXISTS bug56632; |
|||
Warnings: |
|||
Note 1051 Unknown table 'bug56632' |
|||
CREATE TABLE bug56632 ( i INT ) ROW_FORMAT=COMPACT; |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
SHOW CREATE TABLE bug56632; |
|||
Table Create Table |
|||
bug56632 CREATE TABLE `bug56632` ( |
|||
`i` int(11) DEFAULT NULL |
|||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
bug56632 Compact row_format=COMPACT |
|||
ALTER TABLE bug56632 KEY_BLOCK_SIZE=1; |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
SHOW CREATE TABLE bug56632; |
|||
Table Create Table |
|||
bug56632 CREATE TABLE `bug56632` ( |
|||
`i` int(11) DEFAULT NULL |
|||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1 |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
bug56632 Compressed row_format=COMPACT KEY_BLOCK_SIZE=1 |
|||
# Test 3) CREATE with KEY_BLOCK_SIZE, ALTER with ROW_FORMAT |
|||
DROP TABLE IF EXISTS bug56632; |
|||
CREATE TABLE bug56632 ( i INT ) KEY_BLOCK_SIZE=1; |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
SHOW CREATE TABLE bug56632; |
|||
Table Create Table |
|||
bug56632 CREATE TABLE `bug56632` ( |
|||
`i` int(11) DEFAULT NULL |
|||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 KEY_BLOCK_SIZE=1 |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
bug56632 Compressed KEY_BLOCK_SIZE=1 |
|||
ALTER TABLE bug56632 ROW_FORMAT=COMPACT; |
|||
SHOW CREATE TABLE bug56632; |
|||
Table Create Table |
|||
bug56632 CREATE TABLE `bug56632` ( |
|||
`i` int(11) DEFAULT NULL |
|||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 KEY_BLOCK_SIZE=1 |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
bug56632 Compressed KEY_BLOCK_SIZE=1 |
|||
# Test 4) CREATE with neither, ALTER with ROW_FORMAT & KEY_BLOCK_SIZE |
|||
DROP TABLE IF EXISTS bug56632; |
|||
CREATE TABLE bug56632 ( i INT ); |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
SHOW CREATE TABLE bug56632; |
|||
Table Create Table |
|||
bug56632 CREATE TABLE `bug56632` ( |
|||
`i` int(11) DEFAULT NULL |
|||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
bug56632 Compact |
|||
ALTER TABLE bug56632 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1; |
|||
SHOW CREATE TABLE bug56632; |
|||
Table Create Table |
|||
bug56632 CREATE TABLE `bug56632` ( |
|||
`i` int(11) DEFAULT NULL |
|||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
bug56632 Compact |
|||
# Test 5) CREATE with KEY_BLOCK_SIZE=3 (invalid). |
|||
DROP TABLE IF EXISTS bug56632; |
|||
CREATE TABLE bug56632 ( i INT ) KEY_BLOCK_SIZE=3; |
|||
ERROR HY000: Can't create table 'test.bug56632' (errno: 1478) |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: invalid KEY_BLOCK_SIZE = 3. Valid values are [1, 2, 4, 8, 16] |
|||
Error 1005 Can't create table 'test.bug56632' (errno: 1478) |
|||
SET SESSION innodb_strict_mode = OFF; |
|||
# Test 6) CREATE with ROW_FORMAT & KEY_BLOCK_SIZE, ALTER with neither |
|||
DROP TABLE IF EXISTS bug56632; |
|||
Warnings: |
|||
Note 1051 Unknown table 'bug56632' |
|||
CREATE TABLE bug56632 ( i INT ) ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1; |
|||
Warnings: |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=1 unless ROW_FORMAT=COMPRESSED. |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=1 unless ROW_FORMAT=COMPRESSED. |
|||
SHOW CREATE TABLE bug56632; |
|||
Table Create Table |
|||
bug56632 CREATE TABLE `bug56632` ( |
|||
`i` int(11) DEFAULT NULL |
|||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1 |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
bug56632 Compact row_format=COMPACT KEY_BLOCK_SIZE=1 |
|||
ALTER TABLE bug56632 ADD COLUMN f1 INT; |
|||
Warnings: |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=1 unless ROW_FORMAT=COMPRESSED. |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=1 unless ROW_FORMAT=COMPRESSED. |
|||
SHOW CREATE TABLE bug56632; |
|||
Table Create Table |
|||
bug56632 CREATE TABLE `bug56632` ( |
|||
`i` int(11) DEFAULT NULL, |
|||
`f1` int(11) DEFAULT NULL |
|||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1 |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
bug56632 Compact row_format=COMPACT KEY_BLOCK_SIZE=1 |
|||
# Test 7) CREATE with ROW_FORMAT, ALTER with KEY_BLOCK_SIZE |
|||
DROP TABLE IF EXISTS bug56632; |
|||
CREATE TABLE bug56632 ( i INT ) ROW_FORMAT=COMPACT; |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
SHOW CREATE TABLE bug56632; |
|||
Table Create Table |
|||
bug56632 CREATE TABLE `bug56632` ( |
|||
`i` int(11) DEFAULT NULL |
|||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
bug56632 Compact row_format=COMPACT |
|||
ALTER TABLE bug56632 KEY_BLOCK_SIZE=1; |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
SHOW CREATE TABLE bug56632; |
|||
Table Create Table |
|||
bug56632 CREATE TABLE `bug56632` ( |
|||
`i` int(11) DEFAULT NULL |
|||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1 |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
bug56632 Compressed row_format=COMPACT KEY_BLOCK_SIZE=1 |
|||
# Test 8) CREATE with KEY_BLOCK_SIZE, ALTER with ROW_FORMAT |
|||
DROP TABLE IF EXISTS bug56632; |
|||
CREATE TABLE bug56632 ( i INT ) KEY_BLOCK_SIZE=1; |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
SHOW CREATE TABLE bug56632; |
|||
Table Create Table |
|||
bug56632 CREATE TABLE `bug56632` ( |
|||
`i` int(11) DEFAULT NULL |
|||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 KEY_BLOCK_SIZE=1 |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
bug56632 Compressed KEY_BLOCK_SIZE=1 |
|||
ALTER TABLE bug56632 ROW_FORMAT=COMPACT; |
|||
Warnings: |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=1 unless ROW_FORMAT=COMPRESSED. |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=1 unless ROW_FORMAT=COMPRESSED. |
|||
SHOW CREATE TABLE bug56632; |
|||
Table Create Table |
|||
bug56632 CREATE TABLE `bug56632` ( |
|||
`i` int(11) DEFAULT NULL |
|||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1 |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
bug56632 Compact row_format=COMPACT KEY_BLOCK_SIZE=1 |
|||
# Test 9) CREATE with neither, ALTER with ROW_FORMAT & KEY_BLOCK_SIZE |
|||
DROP TABLE IF EXISTS bug56632; |
|||
CREATE TABLE bug56632 ( i INT ); |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
SHOW CREATE TABLE bug56632; |
|||
Table Create Table |
|||
bug56632 CREATE TABLE `bug56632` ( |
|||
`i` int(11) DEFAULT NULL |
|||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
bug56632 Compact |
|||
ALTER TABLE bug56632 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1; |
|||
Warnings: |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=1 unless ROW_FORMAT=COMPRESSED. |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=1 unless ROW_FORMAT=COMPRESSED. |
|||
SHOW CREATE TABLE bug56632; |
|||
Table Create Table |
|||
bug56632 CREATE TABLE `bug56632` ( |
|||
`i` int(11) DEFAULT NULL |
|||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1 |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
bug56632 Compact row_format=COMPACT KEY_BLOCK_SIZE=1 |
|||
# Test 10) CREATE with KEY_BLOCK_SIZE=3 (invalid), ALTER with neither. |
|||
DROP TABLE IF EXISTS bug56632; |
|||
CREATE TABLE bug56632 ( i INT ) KEY_BLOCK_SIZE=3; |
|||
Warnings: |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=3. |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=3. |
|||
SHOW CREATE TABLE bug56632; |
|||
Table Create Table |
|||
bug56632 CREATE TABLE `bug56632` ( |
|||
`i` int(11) DEFAULT NULL |
|||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 KEY_BLOCK_SIZE=3 |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
bug56632 Compact KEY_BLOCK_SIZE=3 |
|||
ALTER TABLE bug56632 ADD COLUMN f1 INT; |
|||
Warnings: |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=3. |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=3. |
|||
SHOW CREATE TABLE bug56632; |
|||
Table Create Table |
|||
bug56632 CREATE TABLE `bug56632` ( |
|||
`i` int(11) DEFAULT NULL, |
|||
`f1` int(11) DEFAULT NULL |
|||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 KEY_BLOCK_SIZE=3 |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
bug56632 Compact KEY_BLOCK_SIZE=3 |
|||
# Test 11) CREATE with KEY_BLOCK_SIZE=3 (invalid), ALTER with ROW_FORMAT=COMPACT. |
|||
DROP TABLE IF EXISTS bug56632; |
|||
CREATE TABLE bug56632 ( i INT ) KEY_BLOCK_SIZE=3; |
|||
Warnings: |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=3. |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=3. |
|||
SHOW CREATE TABLE bug56632; |
|||
Table Create Table |
|||
bug56632 CREATE TABLE `bug56632` ( |
|||
`i` int(11) DEFAULT NULL |
|||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 KEY_BLOCK_SIZE=3 |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
bug56632 Compact KEY_BLOCK_SIZE=3 |
|||
ALTER TABLE bug56632 ROW_FORMAT=COMPACT; |
|||
Warnings: |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=3. |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=3. |
|||
SHOW CREATE TABLE bug56632; |
|||
Table Create Table |
|||
bug56632 CREATE TABLE `bug56632` ( |
|||
`i` int(11) DEFAULT NULL |
|||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=3 |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
bug56632 Compact row_format=COMPACT KEY_BLOCK_SIZE=3 |
|||
# Test 12) CREATE with KEY_BLOCK_SIZE=3 (invalid), ALTER with KEY_BLOCK_SIZE=1. |
|||
DROP TABLE IF EXISTS bug56632; |
|||
CREATE TABLE bug56632 ( i INT ) KEY_BLOCK_SIZE=3; |
|||
Warnings: |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=3. |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=3. |
|||
SHOW CREATE TABLE bug56632; |
|||
Table Create Table |
|||
bug56632 CREATE TABLE `bug56632` ( |
|||
`i` int(11) DEFAULT NULL |
|||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 KEY_BLOCK_SIZE=3 |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
bug56632 Compact KEY_BLOCK_SIZE=3 |
|||
ALTER TABLE bug56632 KEY_BLOCK_SIZE=1; |
|||
SHOW WARNINGS; |
|||
Level Code Message |
|||
SHOW CREATE TABLE bug56632; |
|||
Table Create Table |
|||
bug56632 CREATE TABLE `bug56632` ( |
|||
`i` int(11) DEFAULT NULL |
|||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 KEY_BLOCK_SIZE=1 |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS |
|||
bug56632 Compressed KEY_BLOCK_SIZE=1 |
|||
# Cleanup |
|||
DROP TABLE IF EXISTS bug56632; |
|||
@ -0,0 +1,575 @@ |
|||
# Tests for various combinations of ROW_FORMAT and KEY_BLOCK_SIZE |
|||
# Related bugs; |
|||
# Bug#54679: ALTER TABLE causes compressed row_format to revert to compact |
|||
# Bug#56628: ALTER TABLE .. KEY_BLOCK_SIZE=0 produces untrue warning or unnecessary error |
|||
# Bug#56632: ALTER TABLE implicitly changes ROW_FORMAT to COMPRESSED |
|||
# Rules for interpreting CREATE_OPTIONS |
|||
# 1) Create options on an ALTER are added to the options on the |
|||
# previous CREATE or ALTER statements. |
|||
# 2) KEY_BLOCK_SIZE=0 is considered a unspecified value. |
|||
# If the current ROW_FORMAT has explicitly been set to COMPRESSED, |
|||
# InnoDB will use a default value of 8. Otherwise KEY_BLOCK_SIZE |
|||
# will not be used. |
|||
# 3) ROW_FORMAT=DEFAULT allows InnoDB to choose its own default, COMPACT. |
|||
# 4) ROW_FORMAT=DEFAULT and KEY_BLOCK_SIZE=0 can be used at any time to |
|||
# unset or erase the values persisted in the MySQL dictionary and |
|||
# by SHOW CTREATE TABLE. |
|||
# 5) When incompatible values for ROW_FORMAT and KEY_BLOCK_SIZE are |
|||
# both explicitly given, the ROW_FORMAT is always used in non-strict |
|||
# mode. |
|||
# 6) InnoDB will automatically convert a table to COMPRESSED only if a |
|||
# valid non-zero KEY_BLOCK_SIZE has been given and ROW_FORMAT=DEFAULT |
|||
# or has not been used on a previous CREATE TABLE or ALTER TABLE. |
|||
# 7) InnoDB strict mode is designed to prevent incompatible create |
|||
# options from being used together. |
|||
# 8) The non-strict behavior is intended to permit you to import a |
|||
# mysqldump file into a database that does not support compressed |
|||
# tables, even if the source database contained compressed tables. |
|||
# All invalid values and/or incompatible combinations of ROW_FORMAT |
|||
# and KEY_BLOCK_SIZE are automatically corrected |
|||
# |
|||
# *** innodb_strict_mode=ON *** |
|||
# 1) Valid ROW_FORMATs are COMPRESSED, COMPACT, DEFAULT, DYNAMIC |
|||
# & REDUNDANT. All others are rejected. |
|||
# 2) Valid KEY_BLOCK_SIZEs are 0,1,2,4,8,16. All others are rejected. |
|||
# 3) KEY_BLOCK_SIZE=0 can be used to set it to 'unspecified'. |
|||
# 4) KEY_BLOCK_SIZE=1,2,4,8 & 16 are incompatible with COMPACT, DYNAMIC & |
|||
# REDUNDANT. |
|||
# 5) KEY_BLOCK_SIZE=1,2,4,8 & 16 as well as ROW_FORMAT=COMPRESSED and |
|||
# ROW_FORMAT=DYNAMIC are incompatible with innodb_file_format=Antelope |
|||
# and innodb_file_per_table=OFF |
|||
# 6) KEY_BLOCK_SIZE on an ALTER must occur with ROW_FORMAT=COMPRESSED |
|||
# or ROW_FORMAT=DEFAULT if the ROW_FORMAT was previously specified |
|||
# as COMPACT, DYNAMIC or REDUNDANT. |
|||
# 7) KEY_BLOCK_SIZE on an ALTER can occur without a ROW_FORMAT if the |
|||
# previous ROW_FORMAT was DEFAULT, COMPRESSED, or unspecified. |
|||
# |
|||
# *** innodb_strict_mode=OFF *** |
|||
# 1. Ignore a bad KEY_BLOCK_SIZE, defaulting it to 8. |
|||
# 2. Ignore a bad ROW_FORMAT, defaulting to COMPACT. |
|||
# 3. Ignore a valid KEY_BLOCK_SIZE when an incompatible but valid |
|||
# ROW_FORMAT is specified. |
|||
# 4. If innodb_file_format=Antelope or innodb_file_per_table=OFF |
|||
# it will ignore ROW_FORMAT=COMPRESSED or DYNAMIC and it will |
|||
# ignore all non-zero KEY_BLOCK_SIZEs. |
|||
# |
|||
# See InnoDB documentation page "SQL Compression Syntax Warnings and Errors" |
|||
|
|||
-- source include/have_innodb.inc |
|||
SET storage_engine=InnoDB; |
|||
|
|||
--disable_query_log |
|||
# These values can change during the test |
|||
LET $innodb_file_format_orig=`select @@innodb_file_format`; |
|||
LET $innodb_file_format_max_orig=`select @@innodb_file_format_max`; |
|||
LET $innodb_file_per_table_orig=`select @@innodb_file_per_table`; |
|||
LET $innodb_strict_mode_orig=`select @@session.innodb_strict_mode`; |
|||
--enable_query_log |
|||
|
|||
SET GLOBAL innodb_file_format=`Barracuda`; |
|||
SET GLOBAL innodb_file_per_table=ON; |
|||
|
|||
# The first half of these tests are with strict mode ON. |
|||
SET SESSION innodb_strict_mode = ON; |
|||
|
|||
--echo # Test 1) StrictMode=ON, CREATE and ALTER with each ROW_FORMAT & KEY_BLOCK_SIZE=0 |
|||
--echo # KEY_BLOCK_SIZE=0 means 'no KEY_BLOCK_SIZE is specified' |
|||
DROP TABLE IF EXISTS t1; |
|||
--echo # 'FIXED' is sent to InnoDB since it is used by MyISAM. |
|||
--echo # But it is an invalid mode in InnoDB |
|||
--error ER_CANT_CREATE_TABLE |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=FIXED; |
|||
SHOW WARNINGS; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=0; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
ALTER TABLE t1 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=0; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
ALTER TABLE t1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=0; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
ALTER TABLE t1 ROW_FORMAT=REDUNDANT KEY_BLOCK_SIZE=0; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=0; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
--error ER_CANT_CREATE_TABLE |
|||
ALTER TABLE t1 ROW_FORMAT=FIXED KEY_BLOCK_SIZE=0; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
|
|||
|
|||
|
|||
--echo # Test 2) StrictMode=ON, CREATE with each ROW_FORMAT & a valid non-zero KEY_BLOCK_SIZE |
|||
--echo # KEY_BLOCK_SIZE is incompatible with COMPACT, REDUNDANT, & DYNAMIC |
|||
DROP TABLE IF EXISTS t1; |
|||
--error ER_CANT_CREATE_TABLE |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1; |
|||
SHOW WARNINGS; |
|||
--error ER_CANT_CREATE_TABLE |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=REDUNDANT KEY_BLOCK_SIZE=2; |
|||
SHOW WARNINGS; |
|||
--error ER_CANT_CREATE_TABLE |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=4; |
|||
SHOW WARNINGS; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
ALTER TABLE t1 ADD COLUMN f1 INT; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=16; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
ALTER TABLE t1 ADD COLUMN f1 INT; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
|
|||
|
|||
--echo # Test 3) StrictMode=ON, ALTER with each ROW_FORMAT & a valid non-zero KEY_BLOCK_SIZE |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ); |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
--error ER_CANT_CREATE_TABLE |
|||
ALTER TABLE t1 ROW_FORMAT=FIXED KEY_BLOCK_SIZE=1; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
SHOW WARNINGS; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
--error ER_CANT_CREATE_TABLE |
|||
ALTER TABLE t1 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=2; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
SHOW WARNINGS; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
--error ER_CANT_CREATE_TABLE |
|||
ALTER TABLE t1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=4; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
SHOW WARNINGS; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
--error ER_CANT_CREATE_TABLE |
|||
ALTER TABLE t1 ROW_FORMAT=REDUNDANT KEY_BLOCK_SIZE=8; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
SHOW WARNINGS; |
|||
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=16; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
ALTER TABLE t1 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
|
|||
|
|||
--echo # Test 4) StrictMode=ON, CREATE with ROW_FORMAT=COMPACT, ALTER with a valid non-zero KEY_BLOCK_SIZE |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
--error ER_CANT_CREATE_TABLE |
|||
ALTER TABLE t1 KEY_BLOCK_SIZE=2; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
SHOW WARNINGS; |
|||
ALTER TABLE t1 ROW_FORMAT=REDUNDANT; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
--error ER_CANT_CREATE_TABLE |
|||
ALTER TABLE t1 KEY_BLOCK_SIZE=4; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
SHOW WARNINGS; |
|||
ALTER TABLE t1 ROW_FORMAT=DYNAMIC; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
--error ER_CANT_CREATE_TABLE |
|||
ALTER TABLE t1 KEY_BLOCK_SIZE=8; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
SHOW WARNINGS; |
|||
ALTER TABLE t1 ROW_FORMAT=COMPRESSED; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
ALTER TABLE t1 KEY_BLOCK_SIZE=16; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT; |
|||
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=1; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
|
|||
--echo # Test 5) StrictMode=ON, CREATE with a valid KEY_BLOCK_SIZE |
|||
--echo # ALTER with each ROW_FORMAT |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) KEY_BLOCK_SIZE=2; |
|||
SHOW CREATE TABLE t1; |
|||
ALTER TABLE t1 ADD COLUMN f1 INT; |
|||
SHOW CREATE TABLE t1; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
--error ER_CANT_CREATE_TABLE |
|||
ALTER TABLE t1 ROW_FORMAT=COMPACT; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
SHOW WARNINGS; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
--error ER_CANT_CREATE_TABLE |
|||
ALTER TABLE t1 ROW_FORMAT=REDUNDANT; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
SHOW WARNINGS; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
--error ER_CANT_CREATE_TABLE |
|||
ALTER TABLE t1 ROW_FORMAT=DYNAMIC; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
SHOW WARNINGS; |
|||
ALTER TABLE t1 ROW_FORMAT=COMPRESSED; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=0; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
ALTER TABLE t1 ROW_FORMAT=COMPACT; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
|
|||
--echo # Test 6) StrictMode=ON, CREATE with an invalid KEY_BLOCK_SIZE. |
|||
DROP TABLE IF EXISTS t1; |
|||
--error ER_CANT_CREATE_TABLE |
|||
CREATE TABLE t1 ( i INT ) KEY_BLOCK_SIZE=9; |
|||
SHOW WARNINGS; |
|||
|
|||
--echo # Test 7) StrictMode=ON, Make sure ROW_FORMAT= COMPRESSED & DYNAMIC and |
|||
--echo # and a valid non-zero KEY_BLOCK_SIZE are rejected with Antelope |
|||
--echo # and that they can be set to default values during strict mode. |
|||
SET GLOBAL innodb_file_format=Antelope; |
|||
DROP TABLE IF EXISTS t1; |
|||
--error ER_CANT_CREATE_TABLE |
|||
CREATE TABLE t1 ( i INT ) KEY_BLOCK_SIZE=4; |
|||
SHOW WARNINGS; |
|||
--error ER_CANT_CREATE_TABLE |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED; |
|||
SHOW WARNINGS; |
|||
--error ER_CANT_CREATE_TABLE |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DYNAMIC; |
|||
SHOW WARNINGS; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=REDUNDANT; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DEFAULT; |
|||
SHOW WARNINGS; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
--error ER_CANT_CREATE_TABLE |
|||
ALTER TABLE t1 KEY_BLOCK_SIZE=8; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
SHOW WARNINGS; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
--error ER_CANT_CREATE_TABLE |
|||
ALTER TABLE t1 ROW_FORMAT=COMPRESSED; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
SHOW WARNINGS; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
--error ER_CANT_CREATE_TABLE |
|||
ALTER TABLE t1 ROW_FORMAT=DYNAMIC; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
SHOW WARNINGS; |
|||
SET GLOBAL innodb_file_format=Barracuda; |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4; |
|||
SET GLOBAL innodb_file_format=Antelope; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
--error ER_CANT_CREATE_TABLE |
|||
ALTER TABLE t1 ADD COLUMN f1 INT; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
SHOW WARNINGS; |
|||
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=0; |
|||
SHOW WARNINGS; |
|||
ALTER TABLE t1 ADD COLUMN f2 INT; |
|||
SHOW WARNINGS; |
|||
SET GLOBAL innodb_file_format=Barracuda; |
|||
|
|||
--echo # Test 8) StrictMode=ON, Make sure ROW_FORMAT= COMPRESSED & DYNAMIC and |
|||
--echo # and a valid non-zero KEY_BLOCK_SIZE are rejected with |
|||
--echo # innodb_file_per_table=OFF and that they can be set to default |
|||
--echo # values during strict mode. |
|||
SET GLOBAL innodb_file_per_table=OFF; |
|||
DROP TABLE IF EXISTS t1; |
|||
--error ER_CANT_CREATE_TABLE |
|||
CREATE TABLE t1 ( i INT ) KEY_BLOCK_SIZE=16; |
|||
SHOW WARNINGS; |
|||
--error ER_CANT_CREATE_TABLE |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED; |
|||
SHOW WARNINGS; |
|||
--error ER_CANT_CREATE_TABLE |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DYNAMIC; |
|||
SHOW WARNINGS; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=REDUNDANT; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DEFAULT; |
|||
SHOW WARNINGS; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
--error ER_CANT_CREATE_TABLE |
|||
ALTER TABLE t1 KEY_BLOCK_SIZE=1; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
SHOW WARNINGS; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
--error ER_CANT_CREATE_TABLE |
|||
ALTER TABLE t1 ROW_FORMAT=COMPRESSED; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
SHOW WARNINGS; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
--error ER_CANT_CREATE_TABLE |
|||
ALTER TABLE t1 ROW_FORMAT=DYNAMIC; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
SHOW WARNINGS; |
|||
ALTER TABLE t1 ROW_FORMAT=COMPACT; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
ALTER TABLE t1 ROW_FORMAT=REDUNDANT; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
ALTER TABLE t1 ROW_FORMAT=DEFAULT; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
SET GLOBAL innodb_file_per_table=ON; |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4; |
|||
SET GLOBAL innodb_file_per_table=OFF; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
--error ER_CANT_CREATE_TABLE |
|||
ALTER TABLE t1 ADD COLUMN f1 INT; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
SHOW WARNINGS; |
|||
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=0; |
|||
SHOW WARNINGS; |
|||
ALTER TABLE t1 ADD COLUMN f2 INT; |
|||
SHOW WARNINGS; |
|||
SET GLOBAL innodb_file_per_table=ON; |
|||
|
|||
--echo ################################################## |
|||
SET SESSION innodb_strict_mode = OFF; |
|||
|
|||
--echo # Test 9) StrictMode=OFF, CREATE and ALTER with each ROW_FORMAT & KEY_BLOCK_SIZE=0 |
|||
--echo # KEY_BLOCK_SIZE=0 means 'no KEY_BLOCK_SIZE is specified' |
|||
--echo # 'FIXED' is sent to InnoDB since it is used by MyISAM. |
|||
--echo # It is an invalid mode in InnoDB, use COMPACT |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=FIXED; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=0; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
ALTER TABLE t1 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=0; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
ALTER TABLE t1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=0; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
ALTER TABLE t1 ROW_FORMAT=REDUNDANT KEY_BLOCK_SIZE=0; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=0; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
ALTER TABLE t1 ROW_FORMAT=FIXED KEY_BLOCK_SIZE=0; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
|
|||
--echo # Test 10) StrictMode=OFF, CREATE with each ROW_FORMAT & a valid KEY_BLOCK_SIZE |
|||
--echo # KEY_BLOCK_SIZE is ignored with COMPACT, REDUNDANT, & DYNAMIC |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=REDUNDANT KEY_BLOCK_SIZE=2; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=4; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
ALTER TABLE t1 ADD COLUMN f1 INT; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=16; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
ALTER TABLE t1 ADD COLUMN f1 INT; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
|
|||
|
|||
--echo # Test 11) StrictMode=OFF, ALTER with each ROW_FORMAT & a valid KEY_BLOCK_SIZE |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ); |
|||
ALTER TABLE t1 ROW_FORMAT=FIXED KEY_BLOCK_SIZE=1; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ); |
|||
ALTER TABLE t1 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=2; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ); |
|||
ALTER TABLE t1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=4; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ); |
|||
ALTER TABLE t1 ROW_FORMAT=REDUNDANT KEY_BLOCK_SIZE=8; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ); |
|||
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=16; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
ALTER TABLE t1 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
|
|||
|
|||
--echo # Test 12) StrictMode=OFF, CREATE with ROW_FORMAT=COMPACT, ALTER with a valid KEY_BLOCK_SIZE |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
ALTER TABLE t1 KEY_BLOCK_SIZE=2; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
ALTER TABLE t1 ROW_FORMAT=REDUNDANT; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
ALTER TABLE t1 ROW_FORMAT=DYNAMIC; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
ALTER TABLE t1 ROW_FORMAT=COMPRESSED; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
ALTER TABLE t1 KEY_BLOCK_SIZE=4; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT; |
|||
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=8; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
|
|||
--echo # Test 13) StrictMode=OFF, CREATE with a valid KEY_BLOCK_SIZE |
|||
--echo # ALTER with each ROW_FORMAT |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) KEY_BLOCK_SIZE=16; |
|||
SHOW WARNINGS; |
|||
SHOW CREATE TABLE t1; |
|||
ALTER TABLE t1 ADD COLUMN f1 INT; |
|||
SHOW WARNINGS; |
|||
SHOW CREATE TABLE t1; |
|||
ALTER TABLE t1 ROW_FORMAT=COMPACT; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
ALTER TABLE t1 ROW_FORMAT=REDUNDANT; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
ALTER TABLE t1 ROW_FORMAT=DYNAMIC; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
ALTER TABLE t1 ROW_FORMAT=COMPRESSED; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=0; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
ALTER TABLE t1 ROW_FORMAT=COMPACT; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
|
|||
--echo # Test 14) StrictMode=OFF, CREATE with an invalid KEY_BLOCK_SIZE, it defaults to 8 |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) KEY_BLOCK_SIZE=15; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
|
|||
--echo # Test 15) StrictMode=OFF, Make sure ROW_FORMAT= COMPRESSED & DYNAMIC and a |
|||
--echo valid KEY_BLOCK_SIZE are remembered but not used when ROW_FORMAT |
|||
--echo is reverted to Antelope and then used again when ROW_FORMAT=Barracuda. |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
SET GLOBAL innodb_file_format=Antelope; |
|||
ALTER TABLE t1 ADD COLUMN f1 INT; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
SET GLOBAL innodb_file_format=Barracuda; |
|||
ALTER TABLE t1 ADD COLUMN f2 INT; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DYNAMIC; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
SET GLOBAL innodb_file_format=Antelope; |
|||
ALTER TABLE t1 ADD COLUMN f1 INT; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
SET GLOBAL innodb_file_format=Barracuda; |
|||
ALTER TABLE t1 ADD COLUMN f2 INT; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
|
|||
--echo # Test 16) StrictMode=OFF, Make sure ROW_FORMAT= COMPRESSED & DYNAMIC and a |
|||
--echo valid KEY_BLOCK_SIZE are remembered but not used when innodb_file_per_table=OFF |
|||
--echo and then used again when innodb_file_per_table=ON. |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=2; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
SET GLOBAL innodb_file_per_table=OFF; |
|||
ALTER TABLE t1 ADD COLUMN f1 INT; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
SET GLOBAL innodb_file_per_table=ON; |
|||
ALTER TABLE t1 ADD COLUMN f2 INT; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DYNAMIC; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
SET GLOBAL innodb_file_per_table=OFF; |
|||
ALTER TABLE t1 ADD COLUMN f1 INT; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
SET GLOBAL innodb_file_per_table=ON; |
|||
ALTER TABLE t1 ADD COLUMN f2 INT; |
|||
SHOW WARNINGS; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1'; |
|||
|
|||
|
|||
--echo # Cleanup |
|||
DROP TABLE IF EXISTS t1; |
|||
|
|||
--disable_query_log |
|||
EVAL SET GLOBAL innodb_file_format=$innodb_file_format_orig; |
|||
EVAL SET GLOBAL innodb_file_format_max=$innodb_file_format_max_orig; |
|||
EVAL SET GLOBAL innodb_file_per_table=$innodb_file_per_table_orig; |
|||
EVAL SET SESSION innodb_strict_mode=$innodb_strict_mode_orig; |
|||
--enable_query_log |
|||
|
|||
@ -1,101 +0,0 @@ |
|||
# Test Bug #54679 alter table causes compressed row_format to revert to compact |
|||
|
|||
--source include/have_innodb.inc |
|||
|
|||
let $file_format=`select @@innodb_file_format`; |
|||
let $file_format_max=`select @@innodb_file_format_max`; |
|||
let $file_per_table=`select @@innodb_file_per_table`; |
|||
SET GLOBAL innodb_file_format='Barracuda'; |
|||
SET GLOBAL innodb_file_per_table=ON; |
|||
SET innodb_strict_mode=ON; |
|||
|
|||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=COMPRESSED; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables |
|||
WHERE TABLE_NAME='bug54679'; |
|||
|
|||
# The ROW_FORMAT of the table should be preserved when it is not specified |
|||
# in ALTER TABLE. |
|||
ALTER TABLE bug54679 ADD COLUMN b INT; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables |
|||
WHERE TABLE_NAME='bug54679'; |
|||
|
|||
DROP TABLE bug54679; |
|||
|
|||
# Check that the ROW_FORMAT conversion to/from COMPRESSED works. |
|||
|
|||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables |
|||
WHERE TABLE_NAME='bug54679'; |
|||
|
|||
# KEY_BLOCK_SIZE implies COMPRESSED. |
|||
ALTER TABLE bug54679 KEY_BLOCK_SIZE=1; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables |
|||
WHERE TABLE_NAME='bug54679'; |
|||
|
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
--error ER_CANT_CREATE_TABLE |
|||
ALTER TABLE bug54679 ROW_FORMAT=REDUNDANT; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
SHOW WARNINGS; |
|||
DROP TABLE bug54679; |
|||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=REDUNDANT; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables |
|||
WHERE TABLE_NAME='bug54679'; |
|||
|
|||
ALTER TABLE bug54679 KEY_BLOCK_SIZE=2; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables |
|||
WHERE TABLE_NAME='bug54679'; |
|||
|
|||
# This prevents other than REDUNDANT or COMPACT ROW_FORMAT for new tables. |
|||
SET GLOBAL innodb_file_format=Antelope; |
|||
|
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
--error ER_CANT_CREATE_TABLE |
|||
ALTER TABLE bug54679 KEY_BLOCK_SIZE=4; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
SHOW WARNINGS; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
--error ER_CANT_CREATE_TABLE |
|||
ALTER TABLE bug54679 ROW_FORMAT=DYNAMIC; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
SHOW WARNINGS; |
|||
DROP TABLE bug54679; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
--error ER_CANT_CREATE_TABLE |
|||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
SHOW WARNINGS; |
|||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB; |
|||
|
|||
SET GLOBAL innodb_file_format=Barracuda; |
|||
# This will prevent ROW_FORMAT=COMPRESSED, because the system tablespace |
|||
# cannot be compressed. |
|||
SET GLOBAL innodb_file_per_table=OFF; |
|||
|
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
--error ER_CANT_CREATE_TABLE |
|||
ALTER TABLE bug54679 KEY_BLOCK_SIZE=4; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
SHOW WARNINGS; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
--error ER_CANT_CREATE_TABLE |
|||
ALTER TABLE bug54679 ROW_FORMAT=DYNAMIC; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
SHOW WARNINGS; |
|||
DROP TABLE bug54679; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
--error ER_CANT_CREATE_TABLE |
|||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC; |
|||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ |
|||
SHOW WARNINGS; |
|||
SET GLOBAL innodb_file_per_table=ON; |
|||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC; |
|||
DROP TABLE bug54679; |
|||
|
|||
# restore original values, quietly so the test does not fail if those |
|||
# defaults are changed |
|||
-- disable_query_log |
|||
EVAL SET GLOBAL innodb_file_format=$file_format; |
|||
EVAL SET GLOBAL innodb_file_format_max=$file_format_max; |
|||
EVAL SET GLOBAL innodb_file_per_table=$file_per_table; |
|||
-- enable_query_log |
|||
@ -1,216 +0,0 @@ |
|||
# |
|||
# Bug#56632: ALTER TABLE implicitly changes ROW_FORMAT to COMPRESSED |
|||
# http://bugs.mysql.com/56632 |
|||
# |
|||
# Innodb automatically uses compressed mode when the KEY_BLOCK_SIZE |
|||
# parameter is used, except if the ROW_FORMAT is also specified, in |
|||
# which case the KEY_BLOCK_SIZE is ignored and a warning is shown. |
|||
# But Innodb was getting confused when neither of those parameters |
|||
# was used on the ALTER statement after they were both used on the |
|||
# CREATE. |
|||
# |
|||
# This will test the results of all 4 combinations of these two |
|||
# parameters of the CREATE and ALTER. |
|||
# |
|||
# Tests 1-5 use INNODB_STRICT_MODE=1 which returns an error |
|||
# if there is anything wrong with the statement. |
|||
# |
|||
# 1) CREATE with ROW_FORMAT=COMPACT & KEY_BLOCK_SIZE=1, ALTER with neither. |
|||
# Result; CREATE; fails with error ER_CANT_CREATE_TABLE |
|||
# 2) CREATE with ROW_FORMAT=COMPACT, ALTER with KEY_BLOCK_SIZE=1 |
|||
# Result; CREATE succeeds, |
|||
# ALTER quietly converts ROW_FORMAT to compressed. |
|||
# 3) CREATE with KEY_BLOCK_SIZE=1, ALTER with ROW_FORMAT=COMPACT |
|||
# Result; CREATE quietly converts ROW_FORMAT to compressed, |
|||
# ALTER fails with error ER_CANT_CREATE_TABLE. |
|||
# 4) CREATE with neither, ALTER with ROW_FORMAT=COMPACT & KEY_BLOCK_SIZE=1 |
|||
# Result; CREATE succeeds, |
|||
# ALTER; fails with error ER_CANT_CREATE_TABLE |
|||
# 5) CREATE with KEY_BLOCK_SIZE=3 (invalid), ALTER with neither. |
|||
# Result; CREATE; fails with error ER_CANT_CREATE_TABLE |
|||
# |
|||
# Tests 6-11 use INNODB_STRICT_MODE=0 which automatically makes |
|||
# adjustments if the prameters are incompatible. |
|||
# |
|||
# 6) CREATE with ROW_FORMAT=COMPACT & KEY_BLOCK_SIZE=1, ALTER with neither. |
|||
# Result; CREATE succeeds, warns that KEY_BLOCK_SIZE is ignored. |
|||
# ALTER succeeds, no warnings. |
|||
# 7) CREATE with ROW_FORMAT=COMPACT, ALTER with KEY_BLOCK_SIZE=1 |
|||
# Result; CREATE succeeds, |
|||
# ALTER quietly converts ROW_FORMAT to compressed. |
|||
# 8) CREATE with KEY_BLOCK_SIZE=1, ALTER with ROW_FORMAT=COMPACT |
|||
# Result; CREATE quietly converts ROW_FORMAT to compressed, |
|||
# ALTER succeeds, warns that KEY_BLOCK_SIZE is ignored. |
|||
# 9) CREATE with neither, ALTER with ROW_FORMAT=COMPACT & KEY_BLOCK_SIZE=1 |
|||
# Result; CREATE succeeds, |
|||
# ALTER succeeds, warns that KEY_BLOCK_SIZE is ignored. |
|||
# 10) CREATE with KEY_BLOCK_SIZE=3 (invalid), ALTER with neither. |
|||
# Result; CREATE succeeds, warns that KEY_BLOCK_SIZE=3 is ignored. |
|||
# ALTER succeeds, warns that KEY_BLOCK_SIZE=3 is ignored. |
|||
# 11) CREATE with KEY_BLOCK_SIZE=3 (invalid), ALTER with ROW_FORMAT=COMPACT. |
|||
# Result; CREATE succeeds, warns that KEY_BLOCK_SIZE=3 is ignored. |
|||
# ALTER succeeds, warns that KEY_BLOCK_SIZE=3 is ignored. |
|||
# 12) CREATE with KEY_BLOCK_SIZE=3 (invalid), ALTER with KEY_BLOCK_SIZE=1. |
|||
# Result; CREATE succeeds, warns that KEY_BLOCK_SIZE=3 is ignored. |
|||
# ALTER succeeds, quietly converts ROW_FORMAT to compressed. |
|||
|
|||
-- source include/have_innodb.inc |
|||
|
|||
SET storage_engine=InnoDB; |
|||
|
|||
--disable_query_log |
|||
# These values can change during the test |
|||
LET $innodb_file_format_orig=`select @@innodb_file_format`; |
|||
LET $innodb_file_format_max_orig=`select @@innodb_file_format_max`; |
|||
LET $innodb_file_per_table_orig=`select @@innodb_file_per_table`; |
|||
LET $innodb_strict_mode_orig=`select @@session.innodb_strict_mode`; |
|||
--enable_query_log |
|||
|
|||
SET GLOBAL innodb_file_format=`Barracuda`; |
|||
SET GLOBAL innodb_file_per_table=ON; |
|||
|
|||
# Innodb strict mode will cause an error on the CREATE or ALTER when; |
|||
# 1. both ROW_FORMAT=COMPACT and KEY_BLOCK_SIZE=1, |
|||
# 2. KEY_BLOCK_SIZE is not a valid number (0,1,2,4,8,16). |
|||
# With innodb_strict_mode = OFF, These errors are corrected |
|||
# and just a warning is returned. |
|||
SET SESSION innodb_strict_mode = ON; |
|||
|
|||
--echo # Test 1) CREATE with ROW_FORMAT & KEY_BLOCK_SIZE, ALTER with neither |
|||
DROP TABLE IF EXISTS bug56632; |
|||
--error ER_CANT_CREATE_TABLE |
|||
CREATE TABLE bug56632 ( i INT ) ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1; |
|||
SHOW WARNINGS; |
|||
|
|||
--echo # Test 2) CREATE with ROW_FORMAT, ALTER with KEY_BLOCK_SIZE |
|||
DROP TABLE IF EXISTS bug56632; |
|||
CREATE TABLE bug56632 ( i INT ) ROW_FORMAT=COMPACT; |
|||
SHOW WARNINGS; |
|||
SHOW CREATE TABLE bug56632; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
ALTER TABLE bug56632 KEY_BLOCK_SIZE=1; |
|||
SHOW WARNINGS; |
|||
SHOW CREATE TABLE bug56632; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
|
|||
--echo # Test 3) CREATE with KEY_BLOCK_SIZE, ALTER with ROW_FORMAT |
|||
DROP TABLE IF EXISTS bug56632; |
|||
CREATE TABLE bug56632 ( i INT ) KEY_BLOCK_SIZE=1; |
|||
SHOW WARNINGS; |
|||
SHOW CREATE TABLE bug56632; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
--disable_result_log |
|||
--error ER_CANT_CREATE_TABLE |
|||
ALTER TABLE bug56632 ROW_FORMAT=COMPACT; |
|||
--enable_result_log |
|||
SHOW CREATE TABLE bug56632; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
|
|||
--echo # Test 4) CREATE with neither, ALTER with ROW_FORMAT & KEY_BLOCK_SIZE |
|||
DROP TABLE IF EXISTS bug56632; |
|||
CREATE TABLE bug56632 ( i INT ); |
|||
SHOW WARNINGS; |
|||
SHOW CREATE TABLE bug56632; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
--disable_result_log |
|||
--error ER_CANT_CREATE_TABLE |
|||
ALTER TABLE bug56632 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1; |
|||
--enable_result_log |
|||
SHOW CREATE TABLE bug56632; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
|
|||
--echo # Test 5) CREATE with KEY_BLOCK_SIZE=3 (invalid). |
|||
DROP TABLE IF EXISTS bug56632; |
|||
--error ER_CANT_CREATE_TABLE |
|||
CREATE TABLE bug56632 ( i INT ) KEY_BLOCK_SIZE=3; |
|||
SHOW WARNINGS; |
|||
|
|||
SET SESSION innodb_strict_mode = OFF; |
|||
|
|||
--echo # Test 6) CREATE with ROW_FORMAT & KEY_BLOCK_SIZE, ALTER with neither |
|||
DROP TABLE IF EXISTS bug56632; |
|||
CREATE TABLE bug56632 ( i INT ) ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1; |
|||
SHOW WARNINGS; |
|||
SHOW CREATE TABLE bug56632; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
ALTER TABLE bug56632 ADD COLUMN f1 INT; |
|||
SHOW WARNINGS; |
|||
SHOW CREATE TABLE bug56632; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
|
|||
--echo # Test 7) CREATE with ROW_FORMAT, ALTER with KEY_BLOCK_SIZE |
|||
DROP TABLE IF EXISTS bug56632; |
|||
CREATE TABLE bug56632 ( i INT ) ROW_FORMAT=COMPACT; |
|||
SHOW WARNINGS; |
|||
SHOW CREATE TABLE bug56632; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
ALTER TABLE bug56632 KEY_BLOCK_SIZE=1; |
|||
SHOW WARNINGS; |
|||
SHOW CREATE TABLE bug56632; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
|
|||
--echo # Test 8) CREATE with KEY_BLOCK_SIZE, ALTER with ROW_FORMAT |
|||
DROP TABLE IF EXISTS bug56632; |
|||
CREATE TABLE bug56632 ( i INT ) KEY_BLOCK_SIZE=1; |
|||
SHOW WARNINGS; |
|||
SHOW CREATE TABLE bug56632; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
ALTER TABLE bug56632 ROW_FORMAT=COMPACT; |
|||
SHOW WARNINGS; |
|||
SHOW CREATE TABLE bug56632; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
|
|||
--echo # Test 9) CREATE with neither, ALTER with ROW_FORMAT & KEY_BLOCK_SIZE |
|||
DROP TABLE IF EXISTS bug56632; |
|||
CREATE TABLE bug56632 ( i INT ); |
|||
SHOW WARNINGS; |
|||
SHOW CREATE TABLE bug56632; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
ALTER TABLE bug56632 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1; |
|||
SHOW WARNINGS; |
|||
SHOW CREATE TABLE bug56632; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
|
|||
--echo # Test 10) CREATE with KEY_BLOCK_SIZE=3 (invalid), ALTER with neither. |
|||
DROP TABLE IF EXISTS bug56632; |
|||
CREATE TABLE bug56632 ( i INT ) KEY_BLOCK_SIZE=3; |
|||
SHOW WARNINGS; |
|||
SHOW CREATE TABLE bug56632; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
ALTER TABLE bug56632 ADD COLUMN f1 INT; |
|||
SHOW WARNINGS; |
|||
SHOW CREATE TABLE bug56632; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
|
|||
--echo # Test 11) CREATE with KEY_BLOCK_SIZE=3 (invalid), ALTER with ROW_FORMAT=COMPACT. |
|||
DROP TABLE IF EXISTS bug56632; |
|||
CREATE TABLE bug56632 ( i INT ) KEY_BLOCK_SIZE=3; |
|||
SHOW WARNINGS; |
|||
SHOW CREATE TABLE bug56632; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
ALTER TABLE bug56632 ROW_FORMAT=COMPACT; |
|||
SHOW WARNINGS; |
|||
SHOW CREATE TABLE bug56632; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
|
|||
--echo # Test 12) CREATE with KEY_BLOCK_SIZE=3 (invalid), ALTER with KEY_BLOCK_SIZE=1. |
|||
DROP TABLE IF EXISTS bug56632; |
|||
CREATE TABLE bug56632 ( i INT ) KEY_BLOCK_SIZE=3; |
|||
SHOW WARNINGS; |
|||
SHOW CREATE TABLE bug56632; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
ALTER TABLE bug56632 KEY_BLOCK_SIZE=1; |
|||
SHOW WARNINGS; |
|||
SHOW CREATE TABLE bug56632; |
|||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632'; |
|||
|
|||
--echo # Cleanup |
|||
DROP TABLE IF EXISTS bug56632; |
|||
|
|||
--disable_query_log |
|||
EVAL SET GLOBAL innodb_file_per_table=$innodb_file_per_table_orig; |
|||
EVAL SET GLOBAL innodb_file_format_max=$innodb_file_format_max_orig; |
|||
EVAL SET GLOBAL innodb_file_format=$innodb_file_format_orig; |
|||
EVAL SET SESSION innodb_strict_mode=$innodb_strict_mode_orig; |
|||
--enable_query_log |
|||
|
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue