mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Merge of innodb-zip-ss6129 from 5.1 to mysql-trunk.
This commit is contained in:
@ -6,8 +6,6 @@ binlog.binlog_multi_engine # joro : NDB tests marked as experiment
|
|||||||
|
|
||||||
funcs_1.charset_collation_1 # depends on compile-time decisions
|
funcs_1.charset_collation_1 # depends on compile-time decisions
|
||||||
|
|
||||||
innodb.innodb_information_schema # Bug#47449 2009-09-19 alik main.information_schema and innodb.innodb_information_schema fail sporadically
|
|
||||||
|
|
||||||
main.ctype_gbk_binlog @solaris # Bug#46010: main.ctype_gbk_binlog fails sporadically : Table 't2' already exists
|
main.ctype_gbk_binlog @solaris # Bug#46010: main.ctype_gbk_binlog fails sporadically : Table 't2' already exists
|
||||||
main.information_schema # Bug#47449 2009-09-19 alik main.information_schema and innodb.innodb_information_schema fail sporadically
|
main.information_schema # Bug#47449 2009-09-19 alik main.information_schema and innodb.innodb_information_schema fail sporadically
|
||||||
main.innodb-autoinc* # Bug#47809 2009-10-04 joro innodb-autoinc.test fails with valgrind errors with the innodb plugin
|
main.innodb-autoinc* # Bug#47809 2009-10-04 joro innodb-autoinc.test fails with valgrind errors with the innodb plugin
|
||||||
|
@ -196,15 +196,15 @@ drop table t1;
|
|||||||
set innodb_strict_mode = on;
|
set innodb_strict_mode = on;
|
||||||
create table t1 (id int primary key) engine = innodb key_block_size = 0;
|
create table t1 (id int primary key) engine = innodb key_block_size = 0;
|
||||||
ERROR HY000: Can't create table 'test.t1' (errno: 1478)
|
ERROR HY000: Can't create table 'test.t1' (errno: 1478)
|
||||||
show errors;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Error 1478 InnoDB: invalid KEY_BLOCK_SIZE = 0. Valid values are [1, 2, 4, 8, 16]
|
Warning 1478 InnoDB: invalid KEY_BLOCK_SIZE = 0. Valid values are [1, 2, 4, 8, 16]
|
||||||
Error 1005 Can't create table 'test.t1' (errno: 1478)
|
Error 1005 Can't create table 'test.t1' (errno: 1478)
|
||||||
create table t2 (id int primary key) engine = innodb key_block_size = 9;
|
create table t2 (id int primary key) engine = innodb key_block_size = 9;
|
||||||
ERROR HY000: Can't create table 'test.t2' (errno: 1478)
|
ERROR HY000: Can't create table 'test.t2' (errno: 1478)
|
||||||
show errors;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Error 1478 InnoDB: invalid KEY_BLOCK_SIZE = 9. Valid values are [1, 2, 4, 8, 16]
|
Warning 1478 InnoDB: invalid KEY_BLOCK_SIZE = 9. Valid values are [1, 2, 4, 8, 16]
|
||||||
Error 1005 Can't create table 'test.t2' (errno: 1478)
|
Error 1005 Can't create table 'test.t2' (errno: 1478)
|
||||||
create table t3 (id int primary key) engine = innodb key_block_size = 1;
|
create table t3 (id int primary key) engine = innodb key_block_size = 1;
|
||||||
create table t4 (id int primary key) engine = innodb key_block_size = 2;
|
create table t4 (id int primary key) engine = innodb key_block_size = 2;
|
||||||
@ -233,30 +233,30 @@ key_block_size = 8 row_format = compressed;
|
|||||||
create table t2 (id int primary key) engine = innodb
|
create table t2 (id int primary key) engine = innodb
|
||||||
key_block_size = 8 row_format = redundant;
|
key_block_size = 8 row_format = redundant;
|
||||||
ERROR HY000: Can't create table 'test.t2' (errno: 1478)
|
ERROR HY000: Can't create table 'test.t2' (errno: 1478)
|
||||||
show errors;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Error 1478 InnoDB: cannot specify ROW_FORMAT = REDUNDANT with KEY_BLOCK_SIZE.
|
Warning 1478 InnoDB: cannot specify ROW_FORMAT = REDUNDANT with KEY_BLOCK_SIZE.
|
||||||
Error 1005 Can't create table 'test.t2' (errno: 1478)
|
Error 1005 Can't create table 'test.t2' (errno: 1478)
|
||||||
create table t3 (id int primary key) engine = innodb
|
create table t3 (id int primary key) engine = innodb
|
||||||
key_block_size = 8 row_format = compact;
|
key_block_size = 8 row_format = compact;
|
||||||
ERROR HY000: Can't create table 'test.t3' (errno: 1478)
|
ERROR HY000: Can't create table 'test.t3' (errno: 1478)
|
||||||
show errors;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Error 1478 InnoDB: cannot specify ROW_FORMAT = COMPACT with KEY_BLOCK_SIZE.
|
Warning 1478 InnoDB: cannot specify ROW_FORMAT = COMPACT with KEY_BLOCK_SIZE.
|
||||||
Error 1005 Can't create table 'test.t3' (errno: 1478)
|
Error 1005 Can't create table 'test.t3' (errno: 1478)
|
||||||
create table t4 (id int primary key) engine = innodb
|
create table t4 (id int primary key) engine = innodb
|
||||||
key_block_size = 8 row_format = dynamic;
|
key_block_size = 8 row_format = dynamic;
|
||||||
ERROR HY000: Can't create table 'test.t4' (errno: 1478)
|
ERROR HY000: Can't create table 'test.t4' (errno: 1478)
|
||||||
show errors;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Error 1478 InnoDB: cannot specify ROW_FORMAT = DYNAMIC with KEY_BLOCK_SIZE.
|
Warning 1478 InnoDB: cannot specify ROW_FORMAT = DYNAMIC with KEY_BLOCK_SIZE.
|
||||||
Error 1005 Can't create table 'test.t4' (errno: 1478)
|
Error 1005 Can't create table 'test.t4' (errno: 1478)
|
||||||
create table t5 (id int primary key) engine = innodb
|
create table t5 (id int primary key) engine = innodb
|
||||||
key_block_size = 8 row_format = default;
|
key_block_size = 8 row_format = default;
|
||||||
ERROR HY000: Can't create table 'test.t5' (errno: 1478)
|
ERROR HY000: Can't create table 'test.t5' (errno: 1478)
|
||||||
show errors;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Error 1478 InnoDB: cannot specify ROW_FORMAT = COMPACT with KEY_BLOCK_SIZE.
|
Warning 1478 InnoDB: cannot specify ROW_FORMAT = COMPACT with KEY_BLOCK_SIZE.
|
||||||
Error 1005 Can't create table 'test.t5' (errno: 1478)
|
Error 1005 Can't create table 'test.t5' (errno: 1478)
|
||||||
SELECT table_schema, table_name, row_format
|
SELECT table_schema, table_name, row_format
|
||||||
FROM information_schema.tables WHERE engine='innodb';
|
FROM information_schema.tables WHERE engine='innodb';
|
||||||
@ -266,26 +266,26 @@ drop table t1;
|
|||||||
create table t1 (id int primary key) engine = innodb
|
create table t1 (id int primary key) engine = innodb
|
||||||
key_block_size = 9 row_format = redundant;
|
key_block_size = 9 row_format = redundant;
|
||||||
ERROR HY000: Can't create table 'test.t1' (errno: 1478)
|
ERROR HY000: Can't create table 'test.t1' (errno: 1478)
|
||||||
show errors;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Error 1478 InnoDB: invalid KEY_BLOCK_SIZE = 9. Valid values are [1, 2, 4, 8, 16]
|
Warning 1478 InnoDB: invalid KEY_BLOCK_SIZE = 9. Valid values are [1, 2, 4, 8, 16]
|
||||||
Error 1478 InnoDB: cannot specify ROW_FORMAT = REDUNDANT with KEY_BLOCK_SIZE.
|
Warning 1478 InnoDB: cannot specify ROW_FORMAT = REDUNDANT with KEY_BLOCK_SIZE.
|
||||||
Error 1005 Can't create table 'test.t1' (errno: 1478)
|
Error 1005 Can't create table 'test.t1' (errno: 1478)
|
||||||
create table t2 (id int primary key) engine = innodb
|
create table t2 (id int primary key) engine = innodb
|
||||||
key_block_size = 9 row_format = compact;
|
key_block_size = 9 row_format = compact;
|
||||||
ERROR HY000: Can't create table 'test.t2' (errno: 1478)
|
ERROR HY000: Can't create table 'test.t2' (errno: 1478)
|
||||||
show errors;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Error 1478 InnoDB: invalid KEY_BLOCK_SIZE = 9. Valid values are [1, 2, 4, 8, 16]
|
Warning 1478 InnoDB: invalid KEY_BLOCK_SIZE = 9. Valid values are [1, 2, 4, 8, 16]
|
||||||
Error 1478 InnoDB: cannot specify ROW_FORMAT = COMPACT with KEY_BLOCK_SIZE.
|
Warning 1478 InnoDB: cannot specify ROW_FORMAT = COMPACT with KEY_BLOCK_SIZE.
|
||||||
Error 1005 Can't create table 'test.t2' (errno: 1478)
|
Error 1005 Can't create table 'test.t2' (errno: 1478)
|
||||||
create table t2 (id int primary key) engine = innodb
|
create table t2 (id int primary key) engine = innodb
|
||||||
key_block_size = 9 row_format = dynamic;
|
key_block_size = 9 row_format = dynamic;
|
||||||
ERROR HY000: Can't create table 'test.t2' (errno: 1478)
|
ERROR HY000: Can't create table 'test.t2' (errno: 1478)
|
||||||
show errors;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Error 1478 InnoDB: invalid KEY_BLOCK_SIZE = 9. Valid values are [1, 2, 4, 8, 16]
|
Warning 1478 InnoDB: invalid KEY_BLOCK_SIZE = 9. Valid values are [1, 2, 4, 8, 16]
|
||||||
Error 1478 InnoDB: cannot specify ROW_FORMAT = DYNAMIC with KEY_BLOCK_SIZE.
|
Warning 1478 InnoDB: cannot specify ROW_FORMAT = DYNAMIC with KEY_BLOCK_SIZE.
|
||||||
Error 1005 Can't create table 'test.t2' (errno: 1478)
|
Error 1005 Can't create table 'test.t2' (errno: 1478)
|
||||||
SELECT table_schema, table_name, row_format
|
SELECT table_schema, table_name, row_format
|
||||||
FROM information_schema.tables WHERE engine='innodb';
|
FROM information_schema.tables WHERE engine='innodb';
|
||||||
@ -293,45 +293,45 @@ table_schema table_name row_format
|
|||||||
set global innodb_file_per_table = off;
|
set global innodb_file_per_table = off;
|
||||||
create table t1 (id int primary key) engine = innodb key_block_size = 1;
|
create table t1 (id int primary key) engine = innodb key_block_size = 1;
|
||||||
ERROR HY000: Can't create table 'test.t1' (errno: 1478)
|
ERROR HY000: Can't create table 'test.t1' (errno: 1478)
|
||||||
show errors;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Error 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table.
|
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table.
|
||||||
Error 1005 Can't create table 'test.t1' (errno: 1478)
|
Error 1005 Can't create table 'test.t1' (errno: 1478)
|
||||||
create table t2 (id int primary key) engine = innodb key_block_size = 2;
|
create table t2 (id int primary key) engine = innodb key_block_size = 2;
|
||||||
ERROR HY000: Can't create table 'test.t2' (errno: 1478)
|
ERROR HY000: Can't create table 'test.t2' (errno: 1478)
|
||||||
show errors;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Error 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table.
|
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table.
|
||||||
Error 1005 Can't create table 'test.t2' (errno: 1478)
|
Error 1005 Can't create table 'test.t2' (errno: 1478)
|
||||||
create table t3 (id int primary key) engine = innodb key_block_size = 4;
|
create table t3 (id int primary key) engine = innodb key_block_size = 4;
|
||||||
ERROR HY000: Can't create table 'test.t3' (errno: 1478)
|
ERROR HY000: Can't create table 'test.t3' (errno: 1478)
|
||||||
show errors;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Error 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table.
|
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table.
|
||||||
Error 1005 Can't create table 'test.t3' (errno: 1478)
|
Error 1005 Can't create table 'test.t3' (errno: 1478)
|
||||||
create table t4 (id int primary key) engine = innodb key_block_size = 8;
|
create table t4 (id int primary key) engine = innodb key_block_size = 8;
|
||||||
ERROR HY000: Can't create table 'test.t4' (errno: 1478)
|
ERROR HY000: Can't create table 'test.t4' (errno: 1478)
|
||||||
show errors;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Error 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table.
|
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table.
|
||||||
Error 1005 Can't create table 'test.t4' (errno: 1478)
|
Error 1005 Can't create table 'test.t4' (errno: 1478)
|
||||||
create table t5 (id int primary key) engine = innodb key_block_size = 16;
|
create table t5 (id int primary key) engine = innodb key_block_size = 16;
|
||||||
ERROR HY000: Can't create table 'test.t5' (errno: 1478)
|
ERROR HY000: Can't create table 'test.t5' (errno: 1478)
|
||||||
show errors;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Error 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table.
|
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table.
|
||||||
Error 1005 Can't create table 'test.t5' (errno: 1478)
|
Error 1005 Can't create table 'test.t5' (errno: 1478)
|
||||||
create table t6 (id int primary key) engine = innodb row_format = compressed;
|
create table t6 (id int primary key) engine = innodb row_format = compressed;
|
||||||
ERROR HY000: Can't create table 'test.t6' (errno: 1478)
|
ERROR HY000: Can't create table 'test.t6' (errno: 1478)
|
||||||
show errors;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Error 1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_per_table.
|
Warning 1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_per_table.
|
||||||
Error 1005 Can't create table 'test.t6' (errno: 1478)
|
Error 1005 Can't create table 'test.t6' (errno: 1478)
|
||||||
create table t7 (id int primary key) engine = innodb row_format = dynamic;
|
create table t7 (id int primary key) engine = innodb row_format = dynamic;
|
||||||
ERROR HY000: Can't create table 'test.t7' (errno: 1478)
|
ERROR HY000: Can't create table 'test.t7' (errno: 1478)
|
||||||
show errors;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Error 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_per_table.
|
Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_per_table.
|
||||||
Error 1005 Can't create table 'test.t7' (errno: 1478)
|
Error 1005 Can't create table 'test.t7' (errno: 1478)
|
||||||
create table t8 (id int primary key) engine = innodb row_format = compact;
|
create table t8 (id int primary key) engine = innodb row_format = compact;
|
||||||
create table t9 (id int primary key) engine = innodb row_format = redundant;
|
create table t9 (id int primary key) engine = innodb row_format = redundant;
|
||||||
@ -345,45 +345,45 @@ set global innodb_file_per_table = on;
|
|||||||
set global innodb_file_format = `0`;
|
set global innodb_file_format = `0`;
|
||||||
create table t1 (id int primary key) engine = innodb key_block_size = 1;
|
create table t1 (id int primary key) engine = innodb key_block_size = 1;
|
||||||
ERROR HY000: Can't create table 'test.t1' (errno: 1478)
|
ERROR HY000: Can't create table 'test.t1' (errno: 1478)
|
||||||
show errors;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Error 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
|
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
|
||||||
Error 1005 Can't create table 'test.t1' (errno: 1478)
|
Error 1005 Can't create table 'test.t1' (errno: 1478)
|
||||||
create table t2 (id int primary key) engine = innodb key_block_size = 2;
|
create table t2 (id int primary key) engine = innodb key_block_size = 2;
|
||||||
ERROR HY000: Can't create table 'test.t2' (errno: 1478)
|
ERROR HY000: Can't create table 'test.t2' (errno: 1478)
|
||||||
show errors;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Error 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
|
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
|
||||||
Error 1005 Can't create table 'test.t2' (errno: 1478)
|
Error 1005 Can't create table 'test.t2' (errno: 1478)
|
||||||
create table t3 (id int primary key) engine = innodb key_block_size = 4;
|
create table t3 (id int primary key) engine = innodb key_block_size = 4;
|
||||||
ERROR HY000: Can't create table 'test.t3' (errno: 1478)
|
ERROR HY000: Can't create table 'test.t3' (errno: 1478)
|
||||||
show errors;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Error 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
|
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
|
||||||
Error 1005 Can't create table 'test.t3' (errno: 1478)
|
Error 1005 Can't create table 'test.t3' (errno: 1478)
|
||||||
create table t4 (id int primary key) engine = innodb key_block_size = 8;
|
create table t4 (id int primary key) engine = innodb key_block_size = 8;
|
||||||
ERROR HY000: Can't create table 'test.t4' (errno: 1478)
|
ERROR HY000: Can't create table 'test.t4' (errno: 1478)
|
||||||
show errors;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Error 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
|
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
|
||||||
Error 1005 Can't create table 'test.t4' (errno: 1478)
|
Error 1005 Can't create table 'test.t4' (errno: 1478)
|
||||||
create table t5 (id int primary key) engine = innodb key_block_size = 16;
|
create table t5 (id int primary key) engine = innodb key_block_size = 16;
|
||||||
ERROR HY000: Can't create table 'test.t5' (errno: 1478)
|
ERROR HY000: Can't create table 'test.t5' (errno: 1478)
|
||||||
show errors;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Error 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
|
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
|
||||||
Error 1005 Can't create table 'test.t5' (errno: 1478)
|
Error 1005 Can't create table 'test.t5' (errno: 1478)
|
||||||
create table t6 (id int primary key) engine = innodb row_format = compressed;
|
create table t6 (id int primary key) engine = innodb row_format = compressed;
|
||||||
ERROR HY000: Can't create table 'test.t6' (errno: 1478)
|
ERROR HY000: Can't create table 'test.t6' (errno: 1478)
|
||||||
show errors;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Error 1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_format > Antelope.
|
Warning 1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_format > Antelope.
|
||||||
Error 1005 Can't create table 'test.t6' (errno: 1478)
|
Error 1005 Can't create table 'test.t6' (errno: 1478)
|
||||||
create table t7 (id int primary key) engine = innodb row_format = dynamic;
|
create table t7 (id int primary key) engine = innodb row_format = dynamic;
|
||||||
ERROR HY000: Can't create table 'test.t7' (errno: 1478)
|
ERROR HY000: Can't create table 'test.t7' (errno: 1478)
|
||||||
show errors;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Error 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_format > Antelope.
|
Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_format > Antelope.
|
||||||
Error 1005 Can't create table 'test.t7' (errno: 1478)
|
Error 1005 Can't create table 'test.t7' (errno: 1478)
|
||||||
create table t8 (id int primary key) engine = innodb row_format = compact;
|
create table t8 (id int primary key) engine = innodb row_format = compact;
|
||||||
create table t9 (id int primary key) engine = innodb row_format = redundant;
|
create table t9 (id int primary key) engine = innodb row_format = redundant;
|
||||||
|
@ -1,2 +1 @@
|
|||||||
innodb-index : Bug#47563 2009-06-11 svoj InnoDB: Error: table `test`.`t1#1` already exists in InnoDB internal
|
innodb-index : Bug#47563 2009-06-11 svoj InnoDB: Error: table `test`.`t1#1` already exists in InnoDB internal
|
||||||
innodb_information_schema : Bug#47808 joro : innodb_information_schema.test fails when run under valgrind
|
|
||||||
|
@ -174,11 +174,11 @@ set innodb_strict_mode = on;
|
|||||||
|
|
||||||
--error ER_CANT_CREATE_TABLE
|
--error ER_CANT_CREATE_TABLE
|
||||||
create table t1 (id int primary key) engine = innodb key_block_size = 0;
|
create table t1 (id int primary key) engine = innodb key_block_size = 0;
|
||||||
show errors;
|
show warnings;
|
||||||
|
|
||||||
--error ER_CANT_CREATE_TABLE
|
--error ER_CANT_CREATE_TABLE
|
||||||
create table t2 (id int primary key) engine = innodb key_block_size = 9;
|
create table t2 (id int primary key) engine = innodb key_block_size = 9;
|
||||||
show errors;
|
show warnings;
|
||||||
|
|
||||||
|
|
||||||
create table t3 (id int primary key) engine = innodb key_block_size = 1;
|
create table t3 (id int primary key) engine = innodb key_block_size = 1;
|
||||||
@ -204,22 +204,22 @@ key_block_size = 8 row_format = compressed;
|
|||||||
--error ER_CANT_CREATE_TABLE
|
--error ER_CANT_CREATE_TABLE
|
||||||
create table t2 (id int primary key) engine = innodb
|
create table t2 (id int primary key) engine = innodb
|
||||||
key_block_size = 8 row_format = redundant;
|
key_block_size = 8 row_format = redundant;
|
||||||
show errors;
|
show warnings;
|
||||||
|
|
||||||
--error ER_CANT_CREATE_TABLE
|
--error ER_CANT_CREATE_TABLE
|
||||||
create table t3 (id int primary key) engine = innodb
|
create table t3 (id int primary key) engine = innodb
|
||||||
key_block_size = 8 row_format = compact;
|
key_block_size = 8 row_format = compact;
|
||||||
show errors;
|
show warnings;
|
||||||
|
|
||||||
--error ER_CANT_CREATE_TABLE
|
--error ER_CANT_CREATE_TABLE
|
||||||
create table t4 (id int primary key) engine = innodb
|
create table t4 (id int primary key) engine = innodb
|
||||||
key_block_size = 8 row_format = dynamic;
|
key_block_size = 8 row_format = dynamic;
|
||||||
show errors;
|
show warnings;
|
||||||
|
|
||||||
--error ER_CANT_CREATE_TABLE
|
--error ER_CANT_CREATE_TABLE
|
||||||
create table t5 (id int primary key) engine = innodb
|
create table t5 (id int primary key) engine = innodb
|
||||||
key_block_size = 8 row_format = default;
|
key_block_size = 8 row_format = default;
|
||||||
show errors;
|
show warnings;
|
||||||
|
|
||||||
SELECT table_schema, table_name, row_format
|
SELECT table_schema, table_name, row_format
|
||||||
FROM information_schema.tables WHERE engine='innodb';
|
FROM information_schema.tables WHERE engine='innodb';
|
||||||
@ -229,17 +229,17 @@ drop table t1;
|
|||||||
--error ER_CANT_CREATE_TABLE
|
--error ER_CANT_CREATE_TABLE
|
||||||
create table t1 (id int primary key) engine = innodb
|
create table t1 (id int primary key) engine = innodb
|
||||||
key_block_size = 9 row_format = redundant;
|
key_block_size = 9 row_format = redundant;
|
||||||
show errors;
|
show warnings;
|
||||||
|
|
||||||
--error ER_CANT_CREATE_TABLE
|
--error ER_CANT_CREATE_TABLE
|
||||||
create table t2 (id int primary key) engine = innodb
|
create table t2 (id int primary key) engine = innodb
|
||||||
key_block_size = 9 row_format = compact;
|
key_block_size = 9 row_format = compact;
|
||||||
show errors;
|
show warnings;
|
||||||
|
|
||||||
--error ER_CANT_CREATE_TABLE
|
--error ER_CANT_CREATE_TABLE
|
||||||
create table t2 (id int primary key) engine = innodb
|
create table t2 (id int primary key) engine = innodb
|
||||||
key_block_size = 9 row_format = dynamic;
|
key_block_size = 9 row_format = dynamic;
|
||||||
show errors;
|
show warnings;
|
||||||
|
|
||||||
SELECT table_schema, table_name, row_format
|
SELECT table_schema, table_name, row_format
|
||||||
FROM information_schema.tables WHERE engine='innodb';
|
FROM information_schema.tables WHERE engine='innodb';
|
||||||
@ -249,25 +249,25 @@ set global innodb_file_per_table = off;
|
|||||||
|
|
||||||
--error ER_CANT_CREATE_TABLE
|
--error ER_CANT_CREATE_TABLE
|
||||||
create table t1 (id int primary key) engine = innodb key_block_size = 1;
|
create table t1 (id int primary key) engine = innodb key_block_size = 1;
|
||||||
show errors;
|
show warnings;
|
||||||
--error ER_CANT_CREATE_TABLE
|
--error ER_CANT_CREATE_TABLE
|
||||||
create table t2 (id int primary key) engine = innodb key_block_size = 2;
|
create table t2 (id int primary key) engine = innodb key_block_size = 2;
|
||||||
show errors;
|
show warnings;
|
||||||
--error ER_CANT_CREATE_TABLE
|
--error ER_CANT_CREATE_TABLE
|
||||||
create table t3 (id int primary key) engine = innodb key_block_size = 4;
|
create table t3 (id int primary key) engine = innodb key_block_size = 4;
|
||||||
show errors;
|
show warnings;
|
||||||
--error ER_CANT_CREATE_TABLE
|
--error ER_CANT_CREATE_TABLE
|
||||||
create table t4 (id int primary key) engine = innodb key_block_size = 8;
|
create table t4 (id int primary key) engine = innodb key_block_size = 8;
|
||||||
show errors;
|
show warnings;
|
||||||
--error ER_CANT_CREATE_TABLE
|
--error ER_CANT_CREATE_TABLE
|
||||||
create table t5 (id int primary key) engine = innodb key_block_size = 16;
|
create table t5 (id int primary key) engine = innodb key_block_size = 16;
|
||||||
show errors;
|
show warnings;
|
||||||
--error ER_CANT_CREATE_TABLE
|
--error ER_CANT_CREATE_TABLE
|
||||||
create table t6 (id int primary key) engine = innodb row_format = compressed;
|
create table t6 (id int primary key) engine = innodb row_format = compressed;
|
||||||
show errors;
|
show warnings;
|
||||||
--error ER_CANT_CREATE_TABLE
|
--error ER_CANT_CREATE_TABLE
|
||||||
create table t7 (id int primary key) engine = innodb row_format = dynamic;
|
create table t7 (id int primary key) engine = innodb row_format = dynamic;
|
||||||
show errors;
|
show warnings;
|
||||||
create table t8 (id int primary key) engine = innodb row_format = compact;
|
create table t8 (id int primary key) engine = innodb row_format = compact;
|
||||||
create table t9 (id int primary key) engine = innodb row_format = redundant;
|
create table t9 (id int primary key) engine = innodb row_format = redundant;
|
||||||
|
|
||||||
@ -281,25 +281,25 @@ set global innodb_file_format = `0`;
|
|||||||
|
|
||||||
--error ER_CANT_CREATE_TABLE
|
--error ER_CANT_CREATE_TABLE
|
||||||
create table t1 (id int primary key) engine = innodb key_block_size = 1;
|
create table t1 (id int primary key) engine = innodb key_block_size = 1;
|
||||||
show errors;
|
show warnings;
|
||||||
--error ER_CANT_CREATE_TABLE
|
--error ER_CANT_CREATE_TABLE
|
||||||
create table t2 (id int primary key) engine = innodb key_block_size = 2;
|
create table t2 (id int primary key) engine = innodb key_block_size = 2;
|
||||||
show errors;
|
show warnings;
|
||||||
--error ER_CANT_CREATE_TABLE
|
--error ER_CANT_CREATE_TABLE
|
||||||
create table t3 (id int primary key) engine = innodb key_block_size = 4;
|
create table t3 (id int primary key) engine = innodb key_block_size = 4;
|
||||||
show errors;
|
show warnings;
|
||||||
--error ER_CANT_CREATE_TABLE
|
--error ER_CANT_CREATE_TABLE
|
||||||
create table t4 (id int primary key) engine = innodb key_block_size = 8;
|
create table t4 (id int primary key) engine = innodb key_block_size = 8;
|
||||||
show errors;
|
show warnings;
|
||||||
--error ER_CANT_CREATE_TABLE
|
--error ER_CANT_CREATE_TABLE
|
||||||
create table t5 (id int primary key) engine = innodb key_block_size = 16;
|
create table t5 (id int primary key) engine = innodb key_block_size = 16;
|
||||||
show errors;
|
show warnings;
|
||||||
--error ER_CANT_CREATE_TABLE
|
--error ER_CANT_CREATE_TABLE
|
||||||
create table t6 (id int primary key) engine = innodb row_format = compressed;
|
create table t6 (id int primary key) engine = innodb row_format = compressed;
|
||||||
show errors;
|
show warnings;
|
||||||
--error ER_CANT_CREATE_TABLE
|
--error ER_CANT_CREATE_TABLE
|
||||||
create table t7 (id int primary key) engine = innodb row_format = dynamic;
|
create table t7 (id int primary key) engine = innodb row_format = dynamic;
|
||||||
show errors;
|
show warnings;
|
||||||
create table t8 (id int primary key) engine = innodb row_format = compact;
|
create table t8 (id int primary key) engine = innodb row_format = compact;
|
||||||
create table t9 (id int primary key) engine = innodb row_format = redundant;
|
create table t9 (id int primary key) engine = innodb row_format = redundant;
|
||||||
|
|
||||||
|
@ -109,14 +109,18 @@ SELECT * FROM ```t'\"_str` WHERE c1 = '3' FOR UPDATE;
|
|||||||
-- send
|
-- send
|
||||||
SELECT * FROM ```t'\"_str` WHERE c1 = '4' FOR UPDATE;
|
SELECT * FROM ```t'\"_str` WHERE c1 = '4' FOR UPDATE;
|
||||||
|
|
||||||
# Give time to the above 2 queries to execute before continuing.
|
|
||||||
# Without this sleep it sometimes happens that the SELECT from innodb_locks
|
|
||||||
# executes before some of them, resulting in less than expected number
|
|
||||||
# of rows being selected from innodb_locks.
|
|
||||||
-- sleep 0.1
|
|
||||||
|
|
||||||
-- enable_result_log
|
-- enable_result_log
|
||||||
-- connection con_verify_innodb_locks
|
-- connection con_verify_innodb_locks
|
||||||
|
# Wait for the above queries to execute before continuing.
|
||||||
|
# Without this, it sometimes happens that the SELECT from innodb_locks
|
||||||
|
# executes before some of them, resulting in less than expected number
|
||||||
|
# of rows being selected from innodb_locks. If there is a bug and there
|
||||||
|
# are no 14 rows in innodb_locks then this test will fail with timeout.
|
||||||
|
let $count = 14;
|
||||||
|
let $table = INFORMATION_SCHEMA.INNODB_LOCKS;
|
||||||
|
-- source include/wait_until_rows_count.inc
|
||||||
|
# the above enables the query log, re-disable it
|
||||||
|
-- disable_query_log
|
||||||
SELECT lock_mode, lock_type, lock_table, lock_index, lock_rec, lock_data
|
SELECT lock_mode, lock_type, lock_table, lock_index, lock_rec, lock_data
|
||||||
FROM INFORMATION_SCHEMA.INNODB_LOCKS ORDER BY lock_data;
|
FROM INFORMATION_SCHEMA.INNODB_LOCKS ORDER BY lock_data;
|
||||||
|
|
||||||
|
@ -10,8 +10,6 @@
|
|||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
kill : Bug#37780 2008-12-03 HHunger need some changes to be robust enough for pushbuild.
|
kill : Bug#37780 2008-12-03 HHunger need some changes to be robust enough for pushbuild.
|
||||||
innodb_bug39438 : Bug#42383 2009-01-28 lsoares "This fails in embedded and on windows. Note that this test is not run on windows and on embedded in PB for main trees currently"
|
|
||||||
query_cache_28249 : Bug#43861 2009-03-25 main.query_cache_28249 fails sporadically
|
query_cache_28249 : Bug#43861 2009-03-25 main.query_cache_28249 fails sporadically
|
||||||
partition_innodb_builtin : Bug#32430 2009-09-25 mattiasj Waiting for push of Innodb changes
|
partition_innodb_builtin : Bug#32430 2009-09-25 mattiasj Waiting for push of Innodb changes
|
||||||
partition_innodb_plugin : Bug#32430 2009-09-25 mattiasj Waiting for push of Innodb changes
|
partition_innodb_plugin : Bug#32430 2009-09-25 mattiasj Waiting for push of Innodb changes
|
||||||
innodb_bug46000 : Bug#47860 2009-10-16 satyab Test fails for innodb plugin 1.0.5
|
|
||||||
|
@ -1,9 +1,89 @@
|
|||||||
|
2009-10-29 The InnoDB Team
|
||||||
|
|
||||||
|
* handler/ha_innodb.cc, mysql-test/innodb-autoinc.result,
|
||||||
|
mysql-test/innodb-autoinc.test:
|
||||||
|
Fix Bug#47125 auto_increment start value is ignored if an index is
|
||||||
|
created and engine=innodb
|
||||||
|
|
||||||
|
2009-10-29 The InnoDB Team
|
||||||
|
|
||||||
|
* handler/ha_innodb.cc, mysql-test/innodb_bug47777.result,
|
||||||
|
mysql-test/innodb_bug47777.test:
|
||||||
|
Fix Bug#47777 innodb dies with spatial pk: Failing assertion: buf <=
|
||||||
|
original_buf + buf_len
|
||||||
|
|
||||||
|
2009-10-29 The InnoDB Team
|
||||||
|
|
||||||
|
* handler/ha_innodb.cc:
|
||||||
|
Fix Bug#38996 Race condition in ANALYZE TABLE
|
||||||
|
|
||||||
|
2009-10-29 The InnoDB Team
|
||||||
|
|
||||||
|
* handler/ha_innodb.cc:
|
||||||
|
Fix bug#42383: Can't create table 'test.bug39438'
|
||||||
|
|
||||||
|
2009-10-29 The InnoDB Team
|
||||||
|
|
||||||
|
* os/os0proc.c:
|
||||||
|
Fix Bug#48237 Error handling in os_mem_alloc_large appears to
|
||||||
|
be incorrect
|
||||||
|
|
||||||
|
2009-10-29 The InnoDB Team
|
||||||
|
|
||||||
|
* buf/buf0buf.c, buf/buf0lru.c, include/buf0buf.h, include/buf0buf.ic:
|
||||||
|
Fix corruption of the buf_pool->LRU_old list and improve debug
|
||||||
|
assertions.
|
||||||
|
|
||||||
|
2009-10-28 The InnoDB Team
|
||||||
|
|
||||||
|
* srv/srv0start.c:
|
||||||
|
Fix Bug#41490 After enlargement of InnoDB page size, the error message
|
||||||
|
become inaccurate
|
||||||
|
|
||||||
|
2009-10-26 The InnoDB Team
|
||||||
|
|
||||||
|
* row/row0ins.c:
|
||||||
|
When allocating a data tuple, zero out the system fields in order
|
||||||
|
to avoid Valgrind warnings about uninitialized fields in
|
||||||
|
dtuple_validate().
|
||||||
|
|
||||||
|
2009-10-22 The InnoDB Team
|
||||||
|
|
||||||
|
* handler/ha_innodb.cc, mysql-test/innodb-zip.result,
|
||||||
|
mysql-test/innodb-zip.test, mysql-test/innodb_bug44369.result,
|
||||||
|
mysql-test/innodb_bug44369.test:
|
||||||
|
Fix Bug#47233 Innodb calls push_warning(MYSQL_ERROR::WARN_LEVEL_ERROR)
|
||||||
|
|
||||||
|
2009-10-19 The InnoDB Team
|
||||||
|
|
||||||
|
* mysql-test/innodb_information_schema.test:
|
||||||
|
Fix Bug#47808 innodb_information_schema.test fails when run under
|
||||||
|
valgrind
|
||||||
|
|
||||||
|
2009-10-15 The InnoDB Team
|
||||||
|
|
||||||
|
* include/page0page.ic:
|
||||||
|
Fix Bug#47058 Failure to compile innodb_plugin on solaris 10u7 + spro
|
||||||
|
cc/CC 5.10
|
||||||
|
|
||||||
|
2009-10-05 The InnoDB Team
|
||||||
|
|
||||||
|
* buf/buf0buf.c:
|
||||||
|
Do not invalidate buffer pool while an LRU batch is active. Added code
|
||||||
|
to buf_pool_invalidate() to wait for the running batches to finish.
|
||||||
|
|
||||||
|
2009-10-01 The InnoDB Team
|
||||||
|
|
||||||
|
* handler/ha_innodb.cc:
|
||||||
|
Fix Bug#47763 typo in error message: Failed to open table %s after %lu
|
||||||
|
attemtps.
|
||||||
|
|
||||||
2009-10-01 The InnoDB Team
|
2009-10-01 The InnoDB Team
|
||||||
|
|
||||||
* fsp/fsp0fsp.c, row/row0merge.c:
|
* fsp/fsp0fsp.c, row/row0merge.c:
|
||||||
Clean up after a crash during DROP INDEX. When InnoDB crashes
|
Clean up after a crash during DROP INDEX. When InnoDB crashes
|
||||||
while dropping an index, ensure that the index will be completely
|
while dropping an index, ensure that the index will be completely
|
||||||
dropped during crash recovery. The MySQL .frm file may still
|
dropped during crash recovery. The MySQL .frm file may still
|
||||||
contain the dropped index, but there is little that we can do
|
contain the dropped index, but there is little that we can do
|
||||||
about it.
|
about it.
|
||||||
|
|
||||||
@ -20,15 +100,15 @@
|
|||||||
include/page0zip.h, page/page0cur.c, page/page0page.c,
|
include/page0zip.h, page/page0cur.c, page/page0page.c,
|
||||||
page/page0zip.c:
|
page/page0zip.c:
|
||||||
Do not write to PAGE_INDEX_ID when restoring an uncompressed page
|
Do not write to PAGE_INDEX_ID when restoring an uncompressed page
|
||||||
after a compression failure. The field should only be written
|
after a compression failure. The field should only be written
|
||||||
when creating a B-tree page. This fix addresses a race condition
|
when creating a B-tree page. This fix addresses a race condition
|
||||||
in a debug assertion.
|
in a debug assertion.
|
||||||
|
|
||||||
2009-09-28 The InnoDB Team
|
2009-09-28 The InnoDB Team
|
||||||
|
|
||||||
* fil/fil0fil.c:
|
* fil/fil0fil.c:
|
||||||
Try to prevent the reuse of tablespace identifiers after InnoDB
|
Try to prevent the reuse of tablespace identifiers after InnoDB
|
||||||
has crashed during table creation. Also, refuse to start if files
|
has crashed during table creation. Also, refuse to start if files
|
||||||
with duplicate tablespace identifiers are encountered.
|
with duplicate tablespace identifiers are encountered.
|
||||||
|
|
||||||
2009-09-25 The InnoDB Team
|
2009-09-25 The InnoDB Team
|
||||||
|
@ -1163,10 +1163,15 @@ buf_relocate(
|
|||||||
#ifdef UNIV_LRU_DEBUG
|
#ifdef UNIV_LRU_DEBUG
|
||||||
/* buf_pool->LRU_old must be the first item in the LRU list
|
/* buf_pool->LRU_old must be the first item in the LRU list
|
||||||
whose "old" flag is set. */
|
whose "old" flag is set. */
|
||||||
|
ut_a(buf_pool->LRU_old->old);
|
||||||
ut_a(!UT_LIST_GET_PREV(LRU, buf_pool->LRU_old)
|
ut_a(!UT_LIST_GET_PREV(LRU, buf_pool->LRU_old)
|
||||||
|| !UT_LIST_GET_PREV(LRU, buf_pool->LRU_old)->old);
|
|| !UT_LIST_GET_PREV(LRU, buf_pool->LRU_old)->old);
|
||||||
ut_a(!UT_LIST_GET_NEXT(LRU, buf_pool->LRU_old)
|
ut_a(!UT_LIST_GET_NEXT(LRU, buf_pool->LRU_old)
|
||||||
|| UT_LIST_GET_NEXT(LRU, buf_pool->LRU_old)->old);
|
|| UT_LIST_GET_NEXT(LRU, buf_pool->LRU_old)->old);
|
||||||
|
} else {
|
||||||
|
/* Check that the "old" flag is consistent in
|
||||||
|
the block and its neighbours. */
|
||||||
|
buf_page_set_old(dpage, buf_page_is_old(dpage));
|
||||||
#endif /* UNIV_LRU_DEBUG */
|
#endif /* UNIV_LRU_DEBUG */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -303,6 +303,28 @@ buf_flush_write_complete(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/********************************************************************//**
|
||||||
|
Flush a batch of writes to the datafiles that have already been
|
||||||
|
written by the OS. */
|
||||||
|
static
|
||||||
|
void
|
||||||
|
buf_flush_sync_datafiles(void)
|
||||||
|
/*==========================*/
|
||||||
|
{
|
||||||
|
/* Wake possible simulated aio thread to actually post the
|
||||||
|
writes to the operating system */
|
||||||
|
os_aio_simulated_wake_handler_threads();
|
||||||
|
|
||||||
|
/* Wait that all async writes to tablespaces have been posted to
|
||||||
|
the OS */
|
||||||
|
os_aio_wait_until_no_pending_writes();
|
||||||
|
|
||||||
|
/* Now we flush the data to disk (for example, with fsync) */
|
||||||
|
fil_flush_file_spaces(FIL_TABLESPACE);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/********************************************************************//**
|
/********************************************************************//**
|
||||||
Flushes possible buffered writes from the doublewrite memory buffer to disk,
|
Flushes possible buffered writes from the doublewrite memory buffer to disk,
|
||||||
and also wakes up the aio thread if simulated aio is used. It is very
|
and also wakes up the aio thread if simulated aio is used. It is very
|
||||||
@ -320,8 +342,8 @@ buf_flush_buffered_writes(void)
|
|||||||
ulint i;
|
ulint i;
|
||||||
|
|
||||||
if (!srv_use_doublewrite_buf || trx_doublewrite == NULL) {
|
if (!srv_use_doublewrite_buf || trx_doublewrite == NULL) {
|
||||||
os_aio_simulated_wake_handler_threads();
|
/* Sync the writes to the disk. */
|
||||||
|
buf_flush_sync_datafiles();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -529,22 +551,10 @@ flush:
|
|||||||
buf_LRU_stat_inc_io();
|
buf_LRU_stat_inc_io();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Wake possible simulated aio thread to actually post the
|
/* Sync the writes to the disk. */
|
||||||
writes to the operating system */
|
buf_flush_sync_datafiles();
|
||||||
|
|
||||||
os_aio_simulated_wake_handler_threads();
|
|
||||||
|
|
||||||
/* Wait that all async writes to tablespaces have been posted to
|
|
||||||
the OS */
|
|
||||||
|
|
||||||
os_aio_wait_until_no_pending_writes();
|
|
||||||
|
|
||||||
/* Now we flush the data to disk (for example, with fsync) */
|
|
||||||
|
|
||||||
fil_flush_file_spaces(FIL_TABLESPACE);
|
|
||||||
|
|
||||||
/* We can now reuse the doublewrite memory buffer: */
|
/* We can now reuse the doublewrite memory buffer: */
|
||||||
|
|
||||||
trx_doublewrite->first_free = 0;
|
trx_doublewrite->first_free = 0;
|
||||||
|
|
||||||
mutex_exit(&(trx_doublewrite->mutex));
|
mutex_exit(&(trx_doublewrite->mutex));
|
||||||
|
@ -978,14 +978,14 @@ buf_LRU_old_adjust_len(void)
|
|||||||
#ifdef UNIV_LRU_DEBUG
|
#ifdef UNIV_LRU_DEBUG
|
||||||
ut_a(!LRU_old->old);
|
ut_a(!LRU_old->old);
|
||||||
#endif /* UNIV_LRU_DEBUG */
|
#endif /* UNIV_LRU_DEBUG */
|
||||||
buf_page_set_old(LRU_old, TRUE);
|
|
||||||
old_len = ++buf_pool->LRU_old_len;
|
old_len = ++buf_pool->LRU_old_len;
|
||||||
|
buf_page_set_old(LRU_old, TRUE);
|
||||||
|
|
||||||
} else if (old_len > new_len + BUF_LRU_OLD_TOLERANCE) {
|
} else if (old_len > new_len + BUF_LRU_OLD_TOLERANCE) {
|
||||||
|
|
||||||
buf_page_set_old(LRU_old, FALSE);
|
|
||||||
buf_pool->LRU_old = UT_LIST_GET_NEXT(LRU, LRU_old);
|
buf_pool->LRU_old = UT_LIST_GET_NEXT(LRU, LRU_old);
|
||||||
old_len = --buf_pool->LRU_old_len;
|
old_len = --buf_pool->LRU_old_len;
|
||||||
|
buf_page_set_old(LRU_old, FALSE);
|
||||||
} else {
|
} else {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1009,13 +1009,13 @@ buf_LRU_old_init(void)
|
|||||||
the adjust function to move the LRU_old pointer to the right
|
the adjust function to move the LRU_old pointer to the right
|
||||||
position */
|
position */
|
||||||
|
|
||||||
bpage = UT_LIST_GET_FIRST(buf_pool->LRU);
|
for (bpage = UT_LIST_GET_LAST(buf_pool->LRU); bpage != NULL;
|
||||||
|
bpage = UT_LIST_GET_PREV(LRU, bpage)) {
|
||||||
while (bpage != NULL) {
|
|
||||||
ut_ad(bpage->in_LRU_list);
|
ut_ad(bpage->in_LRU_list);
|
||||||
ut_ad(buf_page_in_file(bpage));
|
ut_ad(buf_page_in_file(bpage));
|
||||||
buf_page_set_old(bpage, TRUE);
|
/* This loop temporarily violates the
|
||||||
bpage = UT_LIST_GET_NEXT(LRU, bpage);
|
assertions of buf_page_set_old(). */
|
||||||
|
bpage->old = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
buf_pool->LRU_old = UT_LIST_GET_FIRST(buf_pool->LRU);
|
buf_pool->LRU_old = UT_LIST_GET_FIRST(buf_pool->LRU);
|
||||||
@ -1091,10 +1091,19 @@ buf_LRU_remove_block(
|
|||||||
|
|
||||||
buf_unzip_LRU_remove_block_if_needed(bpage);
|
buf_unzip_LRU_remove_block_if_needed(bpage);
|
||||||
|
|
||||||
/* If the LRU list is so short that LRU_old not defined, return */
|
/* If the LRU list is so short that LRU_old is not defined,
|
||||||
|
clear the "old" flags and return */
|
||||||
if (UT_LIST_GET_LEN(buf_pool->LRU) < BUF_LRU_OLD_MIN_LEN) {
|
if (UT_LIST_GET_LEN(buf_pool->LRU) < BUF_LRU_OLD_MIN_LEN) {
|
||||||
|
|
||||||
|
for (bpage = UT_LIST_GET_FIRST(buf_pool->LRU); bpage != NULL;
|
||||||
|
bpage = UT_LIST_GET_NEXT(LRU, bpage)) {
|
||||||
|
/* This loop temporarily violates the
|
||||||
|
assertions of buf_page_set_old(). */
|
||||||
|
bpage->old = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
buf_pool->LRU_old = NULL;
|
buf_pool->LRU_old = NULL;
|
||||||
|
buf_pool->LRU_old_len = 0;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1155,14 +1164,13 @@ buf_LRU_add_block_to_end_low(
|
|||||||
UT_LIST_ADD_LAST(LRU, buf_pool->LRU, bpage);
|
UT_LIST_ADD_LAST(LRU, buf_pool->LRU, bpage);
|
||||||
ut_d(bpage->in_LRU_list = TRUE);
|
ut_d(bpage->in_LRU_list = TRUE);
|
||||||
|
|
||||||
buf_page_set_old(bpage, TRUE);
|
|
||||||
|
|
||||||
if (UT_LIST_GET_LEN(buf_pool->LRU) > BUF_LRU_OLD_MIN_LEN) {
|
if (UT_LIST_GET_LEN(buf_pool->LRU) > BUF_LRU_OLD_MIN_LEN) {
|
||||||
|
|
||||||
ut_ad(buf_pool->LRU_old);
|
ut_ad(buf_pool->LRU_old);
|
||||||
|
|
||||||
/* Adjust the length of the old block list if necessary */
|
/* Adjust the length of the old block list if necessary */
|
||||||
|
|
||||||
|
buf_page_set_old(bpage, TRUE);
|
||||||
buf_pool->LRU_old_len++;
|
buf_pool->LRU_old_len++;
|
||||||
buf_LRU_old_adjust_len();
|
buf_LRU_old_adjust_len();
|
||||||
|
|
||||||
@ -1171,8 +1179,9 @@ buf_LRU_add_block_to_end_low(
|
|||||||
/* The LRU list is now long enough for LRU_old to become
|
/* The LRU list is now long enough for LRU_old to become
|
||||||
defined: init it */
|
defined: init it */
|
||||||
|
|
||||||
buf_pool->LRU_old_len++;
|
|
||||||
buf_LRU_old_init();
|
buf_LRU_old_init();
|
||||||
|
} else {
|
||||||
|
buf_page_set_old(bpage, buf_pool->LRU_old != NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If this is a zipped block with decompressed frame as well
|
/* If this is a zipped block with decompressed frame as well
|
||||||
@ -1223,14 +1232,13 @@ buf_LRU_add_block_low(
|
|||||||
|
|
||||||
ut_d(bpage->in_LRU_list = TRUE);
|
ut_d(bpage->in_LRU_list = TRUE);
|
||||||
|
|
||||||
buf_page_set_old(bpage, old);
|
|
||||||
|
|
||||||
if (UT_LIST_GET_LEN(buf_pool->LRU) > BUF_LRU_OLD_MIN_LEN) {
|
if (UT_LIST_GET_LEN(buf_pool->LRU) > BUF_LRU_OLD_MIN_LEN) {
|
||||||
|
|
||||||
ut_ad(buf_pool->LRU_old);
|
ut_ad(buf_pool->LRU_old);
|
||||||
|
|
||||||
/* Adjust the length of the old block list if necessary */
|
/* Adjust the length of the old block list if necessary */
|
||||||
|
|
||||||
|
buf_page_set_old(bpage, old);
|
||||||
buf_LRU_old_adjust_len();
|
buf_LRU_old_adjust_len();
|
||||||
|
|
||||||
} else if (UT_LIST_GET_LEN(buf_pool->LRU) == BUF_LRU_OLD_MIN_LEN) {
|
} else if (UT_LIST_GET_LEN(buf_pool->LRU) == BUF_LRU_OLD_MIN_LEN) {
|
||||||
@ -1239,6 +1247,8 @@ buf_LRU_add_block_low(
|
|||||||
defined: init it */
|
defined: init it */
|
||||||
|
|
||||||
buf_LRU_old_init();
|
buf_LRU_old_init();
|
||||||
|
} else {
|
||||||
|
buf_page_set_old(bpage, buf_pool->LRU_old != NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If this is a zipped block with decompressed frame as well
|
/* If this is a zipped block with decompressed frame as well
|
||||||
@ -1436,15 +1446,6 @@ alloc:
|
|||||||
|
|
||||||
buf_pool->LRU_old = b;
|
buf_pool->LRU_old = b;
|
||||||
}
|
}
|
||||||
#ifdef UNIV_LRU_DEBUG
|
|
||||||
ut_a(prev_b->old
|
|
||||||
|| !UT_LIST_GET_NEXT(LRU, b)
|
|
||||||
|| UT_LIST_GET_NEXT(LRU, b)->old);
|
|
||||||
} else {
|
|
||||||
ut_a(!prev_b->old
|
|
||||||
|| !UT_LIST_GET_NEXT(LRU, b)
|
|
||||||
|| !UT_LIST_GET_NEXT(LRU, b)->old);
|
|
||||||
#endif /* UNIV_LRU_DEBUG */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
lru_len = UT_LIST_GET_LEN(buf_pool->LRU);
|
lru_len = UT_LIST_GET_LEN(buf_pool->LRU);
|
||||||
@ -1460,6 +1461,11 @@ alloc:
|
|||||||
defined: init it */
|
defined: init it */
|
||||||
buf_LRU_old_init();
|
buf_LRU_old_init();
|
||||||
}
|
}
|
||||||
|
#ifdef UNIV_LRU_DEBUG
|
||||||
|
/* Check that the "old" flag is consistent
|
||||||
|
in the block and its neighbours. */
|
||||||
|
buf_page_set_old(b, buf_page_is_old(b));
|
||||||
|
#endif /* UNIV_LRU_DEBUG */
|
||||||
} else {
|
} else {
|
||||||
ut_d(b->in_LRU_list = FALSE);
|
ut_d(b->in_LRU_list = FALSE);
|
||||||
buf_LRU_add_block_low(b, buf_page_is_old(b));
|
buf_LRU_add_block_low(b, buf_page_is_old(b));
|
||||||
@ -1966,19 +1972,24 @@ buf_LRU_validate(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (buf_page_is_old(bpage)) {
|
if (buf_page_is_old(bpage)) {
|
||||||
old_len++;
|
const buf_page_t* prev
|
||||||
}
|
= UT_LIST_GET_PREV(LRU, bpage);
|
||||||
|
const buf_page_t* next
|
||||||
|
= UT_LIST_GET_NEXT(LRU, bpage);
|
||||||
|
|
||||||
if (buf_pool->LRU_old && (old_len == 1)) {
|
if (!old_len++) {
|
||||||
ut_a(buf_pool->LRU_old == bpage);
|
ut_a(buf_pool->LRU_old == bpage);
|
||||||
|
} else {
|
||||||
|
ut_a(!prev || buf_page_is_old(prev));
|
||||||
|
}
|
||||||
|
|
||||||
|
ut_a(!next || buf_page_is_old(next));
|
||||||
}
|
}
|
||||||
|
|
||||||
bpage = UT_LIST_GET_NEXT(LRU, bpage);
|
bpage = UT_LIST_GET_NEXT(LRU, bpage);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (buf_pool->LRU_old) {
|
ut_a(buf_pool->LRU_old_len == old_len);
|
||||||
ut_a(buf_pool->LRU_old_len == old_len);
|
|
||||||
}
|
|
||||||
|
|
||||||
UT_LIST_VALIDATE(list, buf_page_t, buf_pool->free,
|
UT_LIST_VALIDATE(list, buf_page_t, buf_pool->free,
|
||||||
ut_ad(ut_list_node_313->in_free_list));
|
ut_ad(ut_list_node_313->in_free_list));
|
||||||
|
@ -659,6 +659,7 @@ fil_node_open_file(
|
|||||||
#ifdef UNIV_HOTBACKUP
|
#ifdef UNIV_HOTBACKUP
|
||||||
if (space->id == 0) {
|
if (space->id == 0) {
|
||||||
node->size = (ulint) (size_bytes / UNIV_PAGE_SIZE);
|
node->size = (ulint) (size_bytes / UNIV_PAGE_SIZE);
|
||||||
|
os_file_close(node->handle);
|
||||||
goto add_size;
|
goto add_size;
|
||||||
}
|
}
|
||||||
#endif /* UNIV_HOTBACKUP */
|
#endif /* UNIV_HOTBACKUP */
|
||||||
@ -3244,7 +3245,7 @@ fil_load_single_table_tablespace(
|
|||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"InnoDB: Renaming tablespace %s of id %lu,\n"
|
"InnoDB: Renaming tablespace %s of id %lu,\n"
|
||||||
"InnoDB: to %s_ibbackup_old_vers_<timestamp>\n"
|
"InnoDB: to %s_ibbackup_old_vers_<timestamp>\n"
|
||||||
"InnoDB: because its size %lld is too small"
|
"InnoDB: because its size %" PRId64 " is too small"
|
||||||
" (< 4 pages 16 kB each),\n"
|
" (< 4 pages 16 kB each),\n"
|
||||||
"InnoDB: or the space id in the file header"
|
"InnoDB: or the space id in the file header"
|
||||||
" is not sensible.\n"
|
" is not sensible.\n"
|
||||||
|
@ -110,7 +110,7 @@ extern "C" {
|
|||||||
# ifndef MYSQL_PLUGIN_IMPORT
|
# ifndef MYSQL_PLUGIN_IMPORT
|
||||||
# define MYSQL_PLUGIN_IMPORT /* nothing */
|
# define MYSQL_PLUGIN_IMPORT /* nothing */
|
||||||
# endif /* MYSQL_PLUGIN_IMPORT */
|
# endif /* MYSQL_PLUGIN_IMPORT */
|
||||||
/* This is needed because of Bug #3596. Let us hope that pthread_mutex_t
|
/* This is needed because of Bug #3596. Let us hope that pthread_mutex_t
|
||||||
is defined the same in both builds: the MySQL server and the InnoDB plugin. */
|
is defined the same in both builds: the MySQL server and the InnoDB plugin. */
|
||||||
extern MYSQL_PLUGIN_IMPORT pthread_mutex_t LOCK_thread_count;
|
extern MYSQL_PLUGIN_IMPORT pthread_mutex_t LOCK_thread_count;
|
||||||
|
|
||||||
@ -129,6 +129,7 @@ static ulong commit_threads = 0;
|
|||||||
static pthread_mutex_t commit_threads_m;
|
static pthread_mutex_t commit_threads_m;
|
||||||
static pthread_cond_t commit_cond;
|
static pthread_cond_t commit_cond;
|
||||||
static pthread_mutex_t commit_cond_m;
|
static pthread_mutex_t commit_cond_m;
|
||||||
|
static pthread_mutex_t analyze_mutex;
|
||||||
static bool innodb_inited = 0;
|
static bool innodb_inited = 0;
|
||||||
|
|
||||||
#define INSIDE_HA_INNOBASE_CC
|
#define INSIDE_HA_INNOBASE_CC
|
||||||
@ -229,21 +230,6 @@ static handler *innobase_create_handler(handlerton *hton,
|
|||||||
TABLE_SHARE *table,
|
TABLE_SHARE *table,
|
||||||
MEM_ROOT *mem_root);
|
MEM_ROOT *mem_root);
|
||||||
|
|
||||||
/***********************************************************************
|
|
||||||
This function checks each index name for a table against reserved
|
|
||||||
system default primary index name 'GEN_CLUST_INDEX'. If a name matches,
|
|
||||||
this function pushes an error message to the client, and returns true. */
|
|
||||||
static
|
|
||||||
bool
|
|
||||||
innobase_index_name_is_reserved(
|
|
||||||
/*============================*/
|
|
||||||
/* out: true if index name matches a
|
|
||||||
reserved name */
|
|
||||||
const trx_t* trx, /* in: InnoDB transaction handle */
|
|
||||||
const TABLE* form, /* in: information on table
|
|
||||||
columns and indexes */
|
|
||||||
const char* norm_name); /* in: table name */
|
|
||||||
|
|
||||||
/* "GEN_CLUST_INDEX" is the name reserved for Innodb default
|
/* "GEN_CLUST_INDEX" is the name reserved for Innodb default
|
||||||
system primary index. */
|
system primary index. */
|
||||||
static const char innobase_index_reserve_name[]= "GEN_CLUST_INDEX";
|
static const char innobase_index_reserve_name[]= "GEN_CLUST_INDEX";
|
||||||
@ -2266,6 +2252,7 @@ innobase_change_buffering_inited_ok:
|
|||||||
pthread_mutex_init(&prepare_commit_mutex, MY_MUTEX_INIT_FAST);
|
pthread_mutex_init(&prepare_commit_mutex, MY_MUTEX_INIT_FAST);
|
||||||
pthread_mutex_init(&commit_threads_m, MY_MUTEX_INIT_FAST);
|
pthread_mutex_init(&commit_threads_m, MY_MUTEX_INIT_FAST);
|
||||||
pthread_mutex_init(&commit_cond_m, MY_MUTEX_INIT_FAST);
|
pthread_mutex_init(&commit_cond_m, MY_MUTEX_INIT_FAST);
|
||||||
|
pthread_mutex_init(&analyze_mutex, MY_MUTEX_INIT_FAST);
|
||||||
pthread_cond_init(&commit_cond, NULL);
|
pthread_cond_init(&commit_cond, NULL);
|
||||||
innodb_inited= 1;
|
innodb_inited= 1;
|
||||||
#ifdef MYSQL_DYNAMIC_PLUGIN
|
#ifdef MYSQL_DYNAMIC_PLUGIN
|
||||||
@ -2320,6 +2307,7 @@ innobase_end(
|
|||||||
pthread_mutex_destroy(&prepare_commit_mutex);
|
pthread_mutex_destroy(&prepare_commit_mutex);
|
||||||
pthread_mutex_destroy(&commit_threads_m);
|
pthread_mutex_destroy(&commit_threads_m);
|
||||||
pthread_mutex_destroy(&commit_cond_m);
|
pthread_mutex_destroy(&commit_cond_m);
|
||||||
|
pthread_mutex_destroy(&analyze_mutex);
|
||||||
pthread_cond_destroy(&commit_cond);
|
pthread_cond_destroy(&commit_cond);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2598,6 +2586,8 @@ innobase_rollback(
|
|||||||
|
|
||||||
innobase_release_stat_resources(trx);
|
innobase_release_stat_resources(trx);
|
||||||
|
|
||||||
|
trx->n_autoinc_rows = 0; /* Reset the number AUTO-INC rows required */
|
||||||
|
|
||||||
/* If we had reserved the auto-inc lock for some table (if
|
/* If we had reserved the auto-inc lock for some table (if
|
||||||
we come here to roll back the latest SQL statement) we
|
we come here to roll back the latest SQL statement) we
|
||||||
release it now before a possibly lengthy rollback */
|
release it now before a possibly lengthy rollback */
|
||||||
@ -3758,7 +3748,10 @@ ha_innobase::store_key_val_for_row(
|
|||||||
} else if (mysql_type == MYSQL_TYPE_TINY_BLOB
|
} else if (mysql_type == MYSQL_TYPE_TINY_BLOB
|
||||||
|| mysql_type == MYSQL_TYPE_MEDIUM_BLOB
|
|| mysql_type == MYSQL_TYPE_MEDIUM_BLOB
|
||||||
|| mysql_type == MYSQL_TYPE_BLOB
|
|| mysql_type == MYSQL_TYPE_BLOB
|
||||||
|| mysql_type == MYSQL_TYPE_LONG_BLOB) {
|
|| mysql_type == MYSQL_TYPE_LONG_BLOB
|
||||||
|
/* MYSQL_TYPE_GEOMETRY data is treated
|
||||||
|
as BLOB data in innodb. */
|
||||||
|
|| mysql_type == MYSQL_TYPE_GEOMETRY) {
|
||||||
|
|
||||||
CHARSET_INFO* cs;
|
CHARSET_INFO* cs;
|
||||||
ulint key_len;
|
ulint key_len;
|
||||||
@ -5688,7 +5681,7 @@ create_table_def(
|
|||||||
number fits in one byte in prtype */
|
number fits in one byte in prtype */
|
||||||
push_warning_printf(
|
push_warning_printf(
|
||||||
(THD*) trx->mysql_thd,
|
(THD*) trx->mysql_thd,
|
||||||
MYSQL_ERROR::WARN_LEVEL_ERROR,
|
MYSQL_ERROR::WARN_LEVEL_WARN,
|
||||||
ER_CANT_CREATE_TABLE,
|
ER_CANT_CREATE_TABLE,
|
||||||
"In InnoDB, charset-collation codes"
|
"In InnoDB, charset-collation codes"
|
||||||
" must be below 256."
|
" must be below 256."
|
||||||
@ -5722,7 +5715,7 @@ create_table_def(
|
|||||||
if (dict_col_name_is_reserved(field->field_name)){
|
if (dict_col_name_is_reserved(field->field_name)){
|
||||||
push_warning_printf(
|
push_warning_printf(
|
||||||
(THD*) trx->mysql_thd,
|
(THD*) trx->mysql_thd,
|
||||||
MYSQL_ERROR::WARN_LEVEL_ERROR,
|
MYSQL_ERROR::WARN_LEVEL_WARN,
|
||||||
ER_CANT_CREATE_TABLE,
|
ER_CANT_CREATE_TABLE,
|
||||||
"Error creating table '%s' with "
|
"Error creating table '%s' with "
|
||||||
"column name '%s'. '%s' is a "
|
"column name '%s'. '%s' is a "
|
||||||
@ -5956,7 +5949,7 @@ create_options_are_valid(
|
|||||||
/* Valid value. */
|
/* Valid value. */
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_ERROR,
|
push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
|
||||||
ER_ILLEGAL_HA_CREATE_OPTION,
|
ER_ILLEGAL_HA_CREATE_OPTION,
|
||||||
"InnoDB: invalid"
|
"InnoDB: invalid"
|
||||||
" KEY_BLOCK_SIZE = %lu."
|
" KEY_BLOCK_SIZE = %lu."
|
||||||
@ -5970,7 +5963,7 @@ create_options_are_valid(
|
|||||||
/* If KEY_BLOCK_SIZE was specified, check for its
|
/* If KEY_BLOCK_SIZE was specified, check for its
|
||||||
dependencies. */
|
dependencies. */
|
||||||
if (kbs_specified && !srv_file_per_table) {
|
if (kbs_specified && !srv_file_per_table) {
|
||||||
push_warning(thd, MYSQL_ERROR::WARN_LEVEL_ERROR,
|
push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
|
||||||
ER_ILLEGAL_HA_CREATE_OPTION,
|
ER_ILLEGAL_HA_CREATE_OPTION,
|
||||||
"InnoDB: KEY_BLOCK_SIZE"
|
"InnoDB: KEY_BLOCK_SIZE"
|
||||||
" requires innodb_file_per_table.");
|
" requires innodb_file_per_table.");
|
||||||
@ -5978,7 +5971,7 @@ create_options_are_valid(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (kbs_specified && srv_file_format < DICT_TF_FORMAT_ZIP) {
|
if (kbs_specified && srv_file_format < DICT_TF_FORMAT_ZIP) {
|
||||||
push_warning(thd, MYSQL_ERROR::WARN_LEVEL_ERROR,
|
push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
|
||||||
ER_ILLEGAL_HA_CREATE_OPTION,
|
ER_ILLEGAL_HA_CREATE_OPTION,
|
||||||
"InnoDB: KEY_BLOCK_SIZE"
|
"InnoDB: KEY_BLOCK_SIZE"
|
||||||
" requires innodb_file_format >"
|
" requires innodb_file_format >"
|
||||||
@ -6002,7 +5995,7 @@ create_options_are_valid(
|
|||||||
if (!srv_file_per_table) {
|
if (!srv_file_per_table) {
|
||||||
push_warning_printf(
|
push_warning_printf(
|
||||||
thd,
|
thd,
|
||||||
MYSQL_ERROR::WARN_LEVEL_ERROR,
|
MYSQL_ERROR::WARN_LEVEL_WARN,
|
||||||
ER_ILLEGAL_HA_CREATE_OPTION,
|
ER_ILLEGAL_HA_CREATE_OPTION,
|
||||||
"InnoDB: ROW_FORMAT=%s"
|
"InnoDB: ROW_FORMAT=%s"
|
||||||
" requires innodb_file_per_table.",
|
" requires innodb_file_per_table.",
|
||||||
@ -6014,7 +6007,7 @@ create_options_are_valid(
|
|||||||
if (srv_file_format < DICT_TF_FORMAT_ZIP) {
|
if (srv_file_format < DICT_TF_FORMAT_ZIP) {
|
||||||
push_warning_printf(
|
push_warning_printf(
|
||||||
thd,
|
thd,
|
||||||
MYSQL_ERROR::WARN_LEVEL_ERROR,
|
MYSQL_ERROR::WARN_LEVEL_WARN,
|
||||||
ER_ILLEGAL_HA_CREATE_OPTION,
|
ER_ILLEGAL_HA_CREATE_OPTION,
|
||||||
"InnoDB: ROW_FORMAT=%s"
|
"InnoDB: ROW_FORMAT=%s"
|
||||||
" requires innodb_file_format >"
|
" requires innodb_file_format >"
|
||||||
@ -6031,7 +6024,7 @@ create_options_are_valid(
|
|||||||
&& form->s->row_type == ROW_TYPE_DYNAMIC) {
|
&& form->s->row_type == ROW_TYPE_DYNAMIC) {
|
||||||
push_warning_printf(
|
push_warning_printf(
|
||||||
thd,
|
thd,
|
||||||
MYSQL_ERROR::WARN_LEVEL_ERROR,
|
MYSQL_ERROR::WARN_LEVEL_WARN,
|
||||||
ER_ILLEGAL_HA_CREATE_OPTION,
|
ER_ILLEGAL_HA_CREATE_OPTION,
|
||||||
"InnoDB: cannot specify"
|
"InnoDB: cannot specify"
|
||||||
" ROW_FORMAT = DYNAMIC with"
|
" ROW_FORMAT = DYNAMIC with"
|
||||||
@ -6055,7 +6048,7 @@ create_options_are_valid(
|
|||||||
if (kbs_specified) {
|
if (kbs_specified) {
|
||||||
push_warning_printf(
|
push_warning_printf(
|
||||||
thd,
|
thd,
|
||||||
MYSQL_ERROR::WARN_LEVEL_ERROR,
|
MYSQL_ERROR::WARN_LEVEL_WARN,
|
||||||
ER_ILLEGAL_HA_CREATE_OPTION,
|
ER_ILLEGAL_HA_CREATE_OPTION,
|
||||||
"InnoDB: cannot specify"
|
"InnoDB: cannot specify"
|
||||||
" ROW_FORMAT = %s with"
|
" ROW_FORMAT = %s with"
|
||||||
@ -6068,7 +6061,7 @@ create_options_are_valid(
|
|||||||
|
|
||||||
default:
|
default:
|
||||||
push_warning(thd,
|
push_warning(thd,
|
||||||
MYSQL_ERROR::WARN_LEVEL_ERROR,
|
MYSQL_ERROR::WARN_LEVEL_WARN,
|
||||||
ER_ILLEGAL_HA_CREATE_OPTION,
|
ER_ILLEGAL_HA_CREATE_OPTION,
|
||||||
"InnoDB: invalid ROW_FORMAT specifier.");
|
"InnoDB: invalid ROW_FORMAT specifier.");
|
||||||
ret = FALSE;
|
ret = FALSE;
|
||||||
@ -6132,13 +6125,15 @@ ha_innobase::create(
|
|||||||
1. <database_name>/<table_name>: for normal table creation
|
1. <database_name>/<table_name>: for normal table creation
|
||||||
2. full path: for temp table creation, or sym link
|
2. full path: for temp table creation, or sym link
|
||||||
|
|
||||||
When srv_file_per_table is on, check for full path pattern, i.e.
|
When srv_file_per_table is on and mysqld_embedded is off,
|
||||||
|
check for full path pattern, i.e.
|
||||||
X:\dir\..., X is a driver letter, or
|
X:\dir\..., X is a driver letter, or
|
||||||
\\dir1\dir2\..., UNC path
|
\\dir1\dir2\..., UNC path
|
||||||
returns error if it is in full path format, but not creating a temp.
|
returns error if it is in full path format, but not creating a temp.
|
||||||
table. Currently InnoDB does not support symbolic link on Windows. */
|
table. Currently InnoDB does not support symbolic link on Windows. */
|
||||||
|
|
||||||
if (srv_file_per_table
|
if (srv_file_per_table
|
||||||
|
&& !mysqld_embedded
|
||||||
&& (!create_info->options & HA_LEX_CREATE_TMP_TABLE)) {
|
&& (!create_info->options & HA_LEX_CREATE_TMP_TABLE)) {
|
||||||
|
|
||||||
if ((name[1] == ':')
|
if ((name[1] == ':')
|
||||||
@ -6342,7 +6337,8 @@ ha_innobase::create(
|
|||||||
|
|
||||||
/* Check for name conflicts (with reserved name) for
|
/* Check for name conflicts (with reserved name) for
|
||||||
any user indices to be created. */
|
any user indices to be created. */
|
||||||
if (innobase_index_name_is_reserved(trx, form, norm_name)) {
|
if (innobase_index_name_is_reserved(trx, form->key_info,
|
||||||
|
form->s->keys)) {
|
||||||
error = -1;
|
error = -1;
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
@ -6429,18 +6425,22 @@ ha_innobase::create(
|
|||||||
setup at this stage and so we use thd. */
|
setup at this stage and so we use thd. */
|
||||||
|
|
||||||
/* We need to copy the AUTOINC value from the old table if
|
/* We need to copy the AUTOINC value from the old table if
|
||||||
this is an ALTER TABLE. */
|
this is an ALTER TABLE or CREATE INDEX because CREATE INDEX
|
||||||
|
does a table copy too. */
|
||||||
|
|
||||||
if (((create_info->used_fields & HA_CREATE_USED_AUTO)
|
if (((create_info->used_fields & HA_CREATE_USED_AUTO)
|
||||||
|| thd_sql_command(thd) == SQLCOM_ALTER_TABLE)
|
|| thd_sql_command(thd) == SQLCOM_ALTER_TABLE
|
||||||
&& create_info->auto_increment_value != 0) {
|
|| thd_sql_command(thd) == SQLCOM_CREATE_INDEX)
|
||||||
|
&& create_info->auto_increment_value > 0) {
|
||||||
|
|
||||||
/* Query was ALTER TABLE...AUTO_INCREMENT = x; or
|
/* Query was one of :
|
||||||
CREATE TABLE ...AUTO_INCREMENT = x; Find out a table
|
CREATE TABLE ...AUTO_INCREMENT = x; or
|
||||||
definition from the dictionary and get the current value
|
ALTER TABLE...AUTO_INCREMENT = x; or
|
||||||
of the auto increment field. Set a new value to the
|
CREATE INDEX x on t(...);
|
||||||
auto increment field if the value is greater than the
|
Find out a table definition from the dictionary and get
|
||||||
maximum value in the column. */
|
the current value of the auto increment field. Set a new
|
||||||
|
value to the auto increment field if the value is greater
|
||||||
|
than the maximum value in the column. */
|
||||||
|
|
||||||
auto_inc_value = create_info->auto_increment_value;
|
auto_inc_value = create_info->auto_increment_value;
|
||||||
|
|
||||||
@ -7294,9 +7294,15 @@ ha_innobase::analyze(
|
|||||||
THD* thd, /*!< in: connection thread handle */
|
THD* thd, /*!< in: connection thread handle */
|
||||||
HA_CHECK_OPT* check_opt) /*!< in: currently ignored */
|
HA_CHECK_OPT* check_opt) /*!< in: currently ignored */
|
||||||
{
|
{
|
||||||
|
/* Serialize ANALYZE TABLE inside InnoDB, see
|
||||||
|
Bug#38996 Race condition in ANALYZE TABLE */
|
||||||
|
pthread_mutex_lock(&analyze_mutex);
|
||||||
|
|
||||||
/* Simply call ::info() with all the flags */
|
/* Simply call ::info() with all the flags */
|
||||||
info(HA_STATUS_TIME | HA_STATUS_CONST | HA_STATUS_VARIABLE);
|
info(HA_STATUS_TIME | HA_STATUS_CONST | HA_STATUS_VARIABLE);
|
||||||
|
|
||||||
|
pthread_mutex_unlock(&analyze_mutex);
|
||||||
|
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -8773,6 +8779,7 @@ ha_innobase::get_auto_increment(
|
|||||||
AUTOINC counter after attempting to insert the row. */
|
AUTOINC counter after attempting to insert the row. */
|
||||||
if (innobase_autoinc_lock_mode != AUTOINC_OLD_STYLE_LOCKING) {
|
if (innobase_autoinc_lock_mode != AUTOINC_OLD_STYLE_LOCKING) {
|
||||||
ulonglong need;
|
ulonglong need;
|
||||||
|
ulonglong current;
|
||||||
ulonglong next_value;
|
ulonglong next_value;
|
||||||
ulonglong col_max_value;
|
ulonglong col_max_value;
|
||||||
|
|
||||||
@ -8781,11 +8788,12 @@ ha_innobase::get_auto_increment(
|
|||||||
col_max_value = innobase_get_int_col_max_value(
|
col_max_value = innobase_get_int_col_max_value(
|
||||||
table->next_number_field);
|
table->next_number_field);
|
||||||
|
|
||||||
|
current = *first_value > col_max_value ? autoinc : *first_value;
|
||||||
need = *nb_reserved_values * increment;
|
need = *nb_reserved_values * increment;
|
||||||
|
|
||||||
/* Compute the last value in the interval */
|
/* Compute the last value in the interval */
|
||||||
next_value = innobase_next_autoinc(
|
next_value = innobase_next_autoinc(
|
||||||
*first_value, need, offset, col_max_value);
|
current, need, offset, col_max_value);
|
||||||
|
|
||||||
prebuilt->autoinc_last_value = next_value;
|
prebuilt->autoinc_last_value = next_value;
|
||||||
|
|
||||||
@ -9804,36 +9812,39 @@ static int show_innodb_vars(THD *thd, SHOW_VAR *var, char *buff)
|
|||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
This function checks each index name for a table against reserved
|
This function checks each index name for a table against reserved
|
||||||
system default primary index name 'GEN_CLUST_INDEX'. If a name matches,
|
system default primary index name 'GEN_CLUST_INDEX'. If a name matches,
|
||||||
this function pushes an error message to the client, and returns true. */
|
this function pushes an warning message to the client, and returns true. */
|
||||||
static
|
extern "C" UNIV_INTERN
|
||||||
bool
|
bool
|
||||||
innobase_index_name_is_reserved(
|
innobase_index_name_is_reserved(
|
||||||
/*============================*/
|
/*============================*/
|
||||||
/* out: true if an index name
|
/* out: true if an index name
|
||||||
matches the reserved name */
|
matches the reserved name */
|
||||||
const trx_t* trx, /* in: InnoDB transaction handle */
|
const trx_t* trx, /* in: InnoDB transaction handle */
|
||||||
const TABLE* form, /* in: information on table
|
const KEY* key_info, /* in: Indexes to be created */
|
||||||
columns and indexes */
|
ulint num_of_keys) /* in: Number of indexes to
|
||||||
const char* norm_name) /* in: table name */
|
be created. */
|
||||||
{
|
{
|
||||||
KEY* key;
|
const KEY* key;
|
||||||
uint key_num; /* index number */
|
uint key_num; /* index number */
|
||||||
|
|
||||||
for (key_num = 0; key_num < form->s->keys; key_num++) {
|
for (key_num = 0; key_num < num_of_keys; key_num++) {
|
||||||
key = form->key_info + key_num;
|
key = &key_info[key_num];
|
||||||
|
|
||||||
if (innobase_strcasecmp(key->name,
|
if (innobase_strcasecmp(key->name,
|
||||||
innobase_index_reserve_name) == 0) {
|
innobase_index_reserve_name) == 0) {
|
||||||
/* Push warning to mysql */
|
/* Push warning to mysql */
|
||||||
push_warning_printf((THD*) trx->mysql_thd,
|
push_warning_printf((THD*) trx->mysql_thd,
|
||||||
MYSQL_ERROR::WARN_LEVEL_ERROR,
|
MYSQL_ERROR::WARN_LEVEL_WARN,
|
||||||
ER_CANT_CREATE_TABLE,
|
ER_WRONG_NAME_FOR_INDEX,
|
||||||
"Cannot Create Index with name "
|
"Cannot Create Index with name "
|
||||||
"'%s'. The name is reserved "
|
"'%s'. The name is reserved "
|
||||||
"for the system default primary "
|
"for the system default primary "
|
||||||
"index.",
|
"index.",
|
||||||
innobase_index_reserve_name);
|
innobase_index_reserve_name);
|
||||||
|
|
||||||
|
my_error(ER_WRONG_NAME_FOR_INDEX, MYF(0),
|
||||||
|
innobase_index_reserve_name);
|
||||||
|
|
||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -289,3 +289,21 @@ trx_t*
|
|||||||
innobase_trx_allocate(
|
innobase_trx_allocate(
|
||||||
/*==================*/
|
/*==================*/
|
||||||
MYSQL_THD thd); /*!< in: user thread handle */
|
MYSQL_THD thd); /*!< in: user thread handle */
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************************//**
|
||||||
|
This function checks each index name for a table against reserved
|
||||||
|
system default primary index name 'GEN_CLUST_INDEX'. If a name
|
||||||
|
matches, this function pushes an warning message to the client,
|
||||||
|
and returns true. */
|
||||||
|
extern "C"
|
||||||
|
bool
|
||||||
|
innobase_index_name_is_reserved(
|
||||||
|
/*============================*/
|
||||||
|
/* out: true if the index name
|
||||||
|
matches the reserved name */
|
||||||
|
const trx_t* trx, /* in: InnoDB transaction handle */
|
||||||
|
const KEY* key_info, /* in: Indexes to be created */
|
||||||
|
ulint num_of_keys); /* in: Number of indexes to
|
||||||
|
be created. */
|
||||||
|
|
||||||
|
@ -628,7 +628,7 @@ ha_innobase::add_index(
|
|||||||
ulint num_created = 0;
|
ulint num_created = 0;
|
||||||
ibool dict_locked = FALSE;
|
ibool dict_locked = FALSE;
|
||||||
ulint new_primary;
|
ulint new_primary;
|
||||||
ulint error;
|
int error;
|
||||||
|
|
||||||
DBUG_ENTER("ha_innobase::add_index");
|
DBUG_ENTER("ha_innobase::add_index");
|
||||||
ut_a(table);
|
ut_a(table);
|
||||||
@ -656,9 +656,13 @@ ha_innobase::add_index(
|
|||||||
innodb_table = indexed_table
|
innodb_table = indexed_table
|
||||||
= dict_table_get(prebuilt->table->name, FALSE);
|
= dict_table_get(prebuilt->table->name, FALSE);
|
||||||
|
|
||||||
/* Check that index keys are sensible */
|
/* Check if the index name is reserved. */
|
||||||
|
if (innobase_index_name_is_reserved(trx, key_info, num_of_keys)) {
|
||||||
error = innobase_check_index_keys(key_info, num_of_keys);
|
error = -1;
|
||||||
|
} else {
|
||||||
|
/* Check that index keys are sensible */
|
||||||
|
error = innobase_check_index_keys(key_info, num_of_keys);
|
||||||
|
}
|
||||||
|
|
||||||
if (UNIV_UNLIKELY(error)) {
|
if (UNIV_UNLIKELY(error)) {
|
||||||
err_exit:
|
err_exit:
|
||||||
|
@ -1129,7 +1129,7 @@ struct buf_page_struct{
|
|||||||
debugging */
|
debugging */
|
||||||
#endif /* UNIV_DEBUG */
|
#endif /* UNIV_DEBUG */
|
||||||
unsigned old:1; /*!< TRUE if the block is in the old
|
unsigned old:1; /*!< TRUE if the block is in the old
|
||||||
blocks in the LRU list */
|
blocks in buf_pool->LRU_old */
|
||||||
unsigned freed_page_clock:31;/*!< the value of
|
unsigned freed_page_clock:31;/*!< the value of
|
||||||
buf_pool->freed_page_clock
|
buf_pool->freed_page_clock
|
||||||
when this block was the last
|
when this block was the last
|
||||||
@ -1393,8 +1393,7 @@ struct buf_pool_struct{
|
|||||||
the block to which LRU_old points
|
the block to which LRU_old points
|
||||||
onward, including that block;
|
onward, including that block;
|
||||||
see buf0lru.c for the restrictions
|
see buf0lru.c for the restrictions
|
||||||
on this value; not defined if
|
on this value; 0 if LRU_old == NULL;
|
||||||
LRU_old == NULL;
|
|
||||||
NOTE: LRU_old_len must be adjusted
|
NOTE: LRU_old_len must be adjusted
|
||||||
whenever LRU_old shrinks or grows! */
|
whenever LRU_old shrinks or grows! */
|
||||||
|
|
||||||
|
@ -466,10 +466,19 @@ buf_page_set_old(
|
|||||||
ut_ad(bpage->in_LRU_list);
|
ut_ad(bpage->in_LRU_list);
|
||||||
|
|
||||||
#ifdef UNIV_LRU_DEBUG
|
#ifdef UNIV_LRU_DEBUG
|
||||||
if (UT_LIST_GET_PREV(LRU, bpage) && UT_LIST_GET_NEXT(LRU, bpage)
|
ut_a((buf_pool->LRU_old_len == 0) == (buf_pool->LRU_old == NULL));
|
||||||
&& UT_LIST_GET_PREV(LRU, bpage)->old
|
/* If a block is flagged "old", the LRU_old list must exist. */
|
||||||
== UT_LIST_GET_NEXT(LRU, bpage)->old) {
|
ut_a(!old || buf_pool->LRU_old);
|
||||||
ut_a(UT_LIST_GET_PREV(LRU, bpage)->old == old);
|
|
||||||
|
if (UT_LIST_GET_PREV(LRU, bpage) && UT_LIST_GET_NEXT(LRU, bpage)) {
|
||||||
|
const buf_page_t* prev = UT_LIST_GET_PREV(LRU, bpage);
|
||||||
|
const buf_page_t* next = UT_LIST_GET_NEXT(LRU, bpage);
|
||||||
|
if (prev->old == next->old) {
|
||||||
|
ut_a(prev->old == old);
|
||||||
|
} else {
|
||||||
|
ut_a(!prev->old);
|
||||||
|
ut_a(buf_pool->LRU_old == (old ? bpage : next));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif /* UNIV_LRU_DEBUG */
|
#endif /* UNIV_LRU_DEBUG */
|
||||||
|
|
||||||
|
@ -907,7 +907,7 @@ page_get_data_size(
|
|||||||
|
|
||||||
/************************************************************//**
|
/************************************************************//**
|
||||||
Allocates a block of memory from the free list of an index page. */
|
Allocates a block of memory from the free list of an index page. */
|
||||||
UNIV_INTERN
|
UNIV_INLINE
|
||||||
void
|
void
|
||||||
page_mem_alloc_free(
|
page_mem_alloc_free(
|
||||||
/*================*/
|
/*================*/
|
||||||
|
@ -756,8 +756,6 @@ struct row_prebuilt_struct {
|
|||||||
store it here so that we can return
|
store it here so that we can return
|
||||||
it to MySQL */
|
it to MySQL */
|
||||||
/*----------------------*/
|
/*----------------------*/
|
||||||
UT_LIST_NODE_T(row_prebuilt_t) prebuilts;
|
|
||||||
/*!< list node of table->prebuilts */
|
|
||||||
ulint magic_n2; /*!< this should be the same as
|
ulint magic_n2; /*!< this should be the same as
|
||||||
magic_n */
|
magic_n */
|
||||||
};
|
};
|
||||||
|
@ -237,7 +237,7 @@ by one. */
|
|||||||
|
|
||||||
/* Linkage specifier for non-static InnoDB symbols (variables and functions)
|
/* Linkage specifier for non-static InnoDB symbols (variables and functions)
|
||||||
that are only referenced from within InnoDB, not from MySQL */
|
that are only referenced from within InnoDB, not from MySQL */
|
||||||
#if defined(__GNUC__) && (__GNUC__ >= 4) && !defined(UNIV_HOTBACKUP)
|
#if defined(__GNUC__) && (__GNUC__ >= 4) || defined(__INTEL_COMPILER)
|
||||||
# define UNIV_INTERN __attribute__((visibility ("hidden")))
|
# define UNIV_INTERN __attribute__((visibility ("hidden")))
|
||||||
#else
|
#else
|
||||||
# define UNIV_INTERN
|
# define UNIV_INTERN
|
||||||
|
@ -832,6 +832,23 @@ next_file:
|
|||||||
ret = stat(full_path, &statinfo);
|
ret = stat(full_path, &statinfo);
|
||||||
|
|
||||||
if (ret) {
|
if (ret) {
|
||||||
|
|
||||||
|
if (errno == ENOENT) {
|
||||||
|
/* readdir() returned a file that does not exist,
|
||||||
|
it must have been deleted in the meantime. Do what
|
||||||
|
would have happened if the file was deleted before
|
||||||
|
readdir() - ignore and go to the next entry.
|
||||||
|
If this is the last entry then info->name will still
|
||||||
|
contain the name of the deleted file when this
|
||||||
|
function returns, but this is not an issue since the
|
||||||
|
caller shouldn't be looking at info when end of
|
||||||
|
directory is returned. */
|
||||||
|
|
||||||
|
ut_free(full_path);
|
||||||
|
|
||||||
|
goto next_file;
|
||||||
|
}
|
||||||
|
|
||||||
os_file_handle_error_no_exit(full_path, "stat");
|
os_file_handle_error_no_exit(full_path, "stat");
|
||||||
|
|
||||||
ut_free(full_path);
|
ut_free(full_path);
|
||||||
|
@ -97,6 +97,7 @@ os_mem_alloc_large(
|
|||||||
fprintf(stderr, "InnoDB: HugeTLB: Warning: Failed to"
|
fprintf(stderr, "InnoDB: HugeTLB: Warning: Failed to"
|
||||||
" attach shared memory segment, errno %d\n",
|
" attach shared memory segment, errno %d\n",
|
||||||
errno);
|
errno);
|
||||||
|
ptr = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Remove the shared memory segment so that it will be
|
/* Remove the shared memory segment so that it will be
|
||||||
|
@ -141,7 +141,7 @@ row_ins_alloc_sys_fields(
|
|||||||
|
|
||||||
dfield = dtuple_get_nth_field(row, dict_col_get_no(col));
|
dfield = dtuple_get_nth_field(row, dict_col_get_no(col));
|
||||||
|
|
||||||
ptr = mem_heap_alloc(heap, DATA_ROW_ID_LEN);
|
ptr = mem_heap_zalloc(heap, DATA_ROW_ID_LEN);
|
||||||
|
|
||||||
dfield_set_data(dfield, ptr, DATA_ROW_ID_LEN);
|
dfield_set_data(dfield, ptr, DATA_ROW_ID_LEN);
|
||||||
|
|
||||||
@ -152,7 +152,7 @@ row_ins_alloc_sys_fields(
|
|||||||
col = dict_table_get_sys_col(table, DATA_TRX_ID);
|
col = dict_table_get_sys_col(table, DATA_TRX_ID);
|
||||||
|
|
||||||
dfield = dtuple_get_nth_field(row, dict_col_get_no(col));
|
dfield = dtuple_get_nth_field(row, dict_col_get_no(col));
|
||||||
ptr = mem_heap_alloc(heap, DATA_TRX_ID_LEN);
|
ptr = mem_heap_zalloc(heap, DATA_TRX_ID_LEN);
|
||||||
|
|
||||||
dfield_set_data(dfield, ptr, DATA_TRX_ID_LEN);
|
dfield_set_data(dfield, ptr, DATA_TRX_ID_LEN);
|
||||||
|
|
||||||
@ -163,7 +163,7 @@ row_ins_alloc_sys_fields(
|
|||||||
col = dict_table_get_sys_col(table, DATA_ROLL_PTR);
|
col = dict_table_get_sys_col(table, DATA_ROLL_PTR);
|
||||||
|
|
||||||
dfield = dtuple_get_nth_field(row, dict_col_get_no(col));
|
dfield = dtuple_get_nth_field(row, dict_col_get_no(col));
|
||||||
ptr = mem_heap_alloc(heap, DATA_ROLL_PTR_LEN);
|
ptr = mem_heap_zalloc(heap, DATA_ROLL_PTR_LEN);
|
||||||
|
|
||||||
dfield_set_data(dfield, ptr, DATA_ROLL_PTR_LEN);
|
dfield_set_data(dfield, ptr, DATA_ROLL_PTR_LEN);
|
||||||
}
|
}
|
||||||
|
@ -2068,7 +2068,7 @@ Scans a table create SQL string and adds to the data dictionary
|
|||||||
the foreign key constraints declared in the string. This function
|
the foreign key constraints declared in the string. This function
|
||||||
should be called after the indexes for a table have been created.
|
should be called after the indexes for a table have been created.
|
||||||
Each foreign key constraint must be accompanied with indexes in
|
Each foreign key constraint must be accompanied with indexes in
|
||||||
bot participating tables. The indexes are allowed to contain more
|
both participating tables. The indexes are allowed to contain more
|
||||||
fields than mentioned in the constraint. Check also that foreign key
|
fields than mentioned in the constraint. Check also that foreign key
|
||||||
constraints which reference this table are ok.
|
constraints which reference this table are ok.
|
||||||
@return error code or DB_SUCCESS */
|
@return error code or DB_SUCCESS */
|
||||||
|
@ -1376,7 +1376,7 @@ innobase_start_or_create_for_mysql(void)
|
|||||||
sum_of_new_sizes += srv_data_file_sizes[i];
|
sum_of_new_sizes += srv_data_file_sizes[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sum_of_new_sizes < 640) {
|
if (sum_of_new_sizes < 10485760 / UNIV_PAGE_SIZE) {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"InnoDB: Error: tablespace size must be"
|
"InnoDB: Error: tablespace size must be"
|
||||||
" at least 10 MB\n");
|
" at least 10 MB\n");
|
||||||
|
Reference in New Issue
Block a user