mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
Merge 10.0 into 10.1
This commit is contained in:
commit
5691109689
17 changed files with 216 additions and 237 deletions
|
@ -79,6 +79,8 @@ call mtr.check_testcase();
|
|||
|
||||
let $datadir=`select @@datadir`;
|
||||
list_files $datadir mysql_upgrade_info;
|
||||
list_files $datadir/test #sql*;
|
||||
list_files $datadir/mysql #sql*;
|
||||
|
||||
--enable_query_log
|
||||
|
||||
|
|
|
@ -1,26 +1,15 @@
|
|||
call mtr.add_suppression("InnoDB: Page for tablespace .* ");
|
||||
call mtr.add_suppression("InnoDB: Invalid FSP_SPACE_FLAGS=");
|
||||
call mtr.add_suppression("InnoDB: Corruption: Block in space_id .* in file .* corrupted");
|
||||
call mtr.add_suppression("InnoDB: Based on page type .*");
|
||||
FLUSH TABLES;
|
||||
SET GLOBAL innodb_file_per_table = 1;
|
||||
DROP DATABASE IF EXISTS test_wl5522;
|
||||
Warnings:
|
||||
Note 1008 Can't drop database 'test_wl5522'; database doesn't exist
|
||||
CREATE DATABASE test_wl5522;
|
||||
SET SESSION debug_dbug="+d,ib_discard_before_commit_crash";
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT) ENGINE = InnoDB;
|
||||
INSERT INTO test_wl5522.t1 VALUES(1),(2),(3);
|
||||
SET SESSION debug_dbug="+d,ib_discard_before_commit_crash";
|
||||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
ERROR HY000: Lost connection to MySQL server during query
|
||||
DROP TABLE test_wl5522.t1;
|
||||
SET GLOBAL innodb_file_per_table = 1;
|
||||
SELECT @@innodb_file_per_table;
|
||||
@@innodb_file_per_table
|
||||
1
|
||||
SET SESSION debug_dbug="+d,ib_discard_after_commit_crash";
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT) ENGINE = InnoDB;
|
||||
INSERT INTO test_wl5522.t1 VALUES(1),(2),(3);
|
||||
SET SESSION debug_dbug="+d,ib_discard_after_commit_crash";
|
||||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
ERROR HY000: Lost connection to MySQL server during query
|
||||
DROP TABLE test_wl5522.t1;
|
||||
|
@ -37,19 +26,18 @@ ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
|||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
ERROR HY000: Tablespace has been discarded for table 't1'
|
||||
restore: t1 .ibd and .cfg files
|
||||
SET SESSION debug_dbug="+d,ib_import_before_commit_crash";
|
||||
SELECT * FROM test_wl5522.t1;
|
||||
ERROR HY000: Tablespace has been discarded for table 't1'
|
||||
SET SESSION debug_dbug="+d,ib_import_before_commit_crash";
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Lost connection to MySQL server during query
|
||||
SET SESSION debug_dbug="+d,ib_import_before_checkpoint_crash";
|
||||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
ERROR HY000: Tablespace has been discarded for table 't1'
|
||||
SET SESSION debug_dbug="+d,ib_import_before_checkpoint_crash";
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Lost connection to MySQL server during query
|
||||
unlink: t1.ibd
|
||||
unlink: t1.cfg
|
||||
# Restart and reconnect to the server
|
||||
DROP TABLE test_wl5522.t1;
|
||||
SET GLOBAL innodb_file_per_table = 1;
|
||||
SELECT @@innodb_file_per_table;
|
||||
|
@ -495,7 +483,7 @@ c4 VARCHAR(2048),
|
|||
INDEX idx1(c2),
|
||||
INDEX idx2(c3(512)),
|
||||
INDEX idx3(c4(512))) Engine=InnoDB;
|
||||
SET GLOBAL INNODB_PURGE_STOP_NOW=ON;
|
||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||
SET GLOBAL innodb_disable_background_merge=ON;
|
||||
SET GLOBAL innodb_monitor_reset = ibuf_merges;
|
||||
SET GLOBAL innodb_monitor_reset = ibuf_merges_insert;
|
||||
|
@ -660,7 +648,7 @@ FROM information_schema.innodb_metrics
|
|||
WHERE name = 'ibuf_merges_inserts' AND count > 0;
|
||||
name
|
||||
SET GLOBAL innodb_disable_background_merge=OFF;
|
||||
SET GLOBAL INNODB_PURGE_RUN_NOW=ON;
|
||||
COMMIT;
|
||||
DROP TABLE test_wl5522.t1;
|
||||
CREATE TABLE test_wl5522.t1 (
|
||||
c1 BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
|
@ -796,8 +784,8 @@ t1 CREATE TABLE `t1` (
|
|||
) ENGINE=InnoDB AUTO_INCREMENT=185 DEFAULT CHARSET=latin1
|
||||
DROP TABLE test_wl5522.t1;
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb;
|
||||
INSERT INTO test_wl5522.t1 VALUES
|
||||
(100, REPEAT('Karanbir', 899), REPEAT('Ajeeth', 1200));
|
||||
INSERT IGNORE INTO test_wl5522.t1 VALUES
|
||||
(100, REPEAT('Karanbir', 899), REPEAT('Ajeeth', 2731));
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'c2' at row 1
|
||||
INSERT INTO test_wl5522.t1 SELECT * FROM test_wl5522.t1;
|
||||
|
@ -832,7 +820,7 @@ ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
|||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
ERROR HY000: Tablespace has been discarded for table 't1'
|
||||
restore: t1 .ibd and .cfg files
|
||||
SET SESSION debug_dbug="+d,buf_page_is_corrupt_failure";
|
||||
SET SESSION debug_dbug="+d,buf_page_import_corrupt_failure";
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Internal error: Cannot reset LSNs in table '"test_wl5522"."t1"' : Data structure corruption
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Not supported in embedded
|
||||
# mysql-test-run.pl --embedded cannot restart the server.
|
||||
--source include/not_embedded.inc
|
||||
|
||||
# Adding big test option for this test.
|
||||
|
@ -15,12 +15,6 @@
|
|||
|
||||
-- source include/have_innodb.inc
|
||||
|
||||
call mtr.add_suppression("InnoDB: Page for tablespace .* ");
|
||||
call mtr.add_suppression("InnoDB: Invalid FSP_SPACE_FLAGS=");
|
||||
call mtr.add_suppression("InnoDB: Corruption: Block in space_id .* in file .* corrupted");
|
||||
call mtr.add_suppression("InnoDB: Based on page type .*");
|
||||
FLUSH TABLES;
|
||||
|
||||
let MYSQLD_DATADIR =`SELECT @@datadir`;
|
||||
let $innodb_file_per_table = `SELECT @@innodb_file_per_table`;
|
||||
let $pathfix=/: '.*test_wl5522.*t1.ibd'/: 'test_wl5522\\t1.ibd'/;
|
||||
|
@ -28,51 +22,36 @@ let $strerrfix=/ (\(.+\))//;
|
|||
|
||||
SET GLOBAL innodb_file_per_table = 1;
|
||||
|
||||
DROP DATABASE IF EXISTS test_wl5522;
|
||||
CREATE DATABASE test_wl5522;
|
||||
|
||||
##### Before DISCARD commit crash
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT) ENGINE = InnoDB;
|
||||
INSERT INTO test_wl5522.t1 VALUES(1),(2),(3);
|
||||
|
||||
--let $_server_id= `SELECT @@server_id`
|
||||
--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/mysqld.$_server_id.expect
|
||||
|
||||
--exec echo wait > $_expect_file_name
|
||||
SET SESSION debug_dbug="+d,ib_discard_before_commit_crash";
|
||||
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT) ENGINE = InnoDB;
|
||||
INSERT INTO test_wl5522.t1 VALUES(1),(2),(3);
|
||||
|
||||
# Write file to make mysql-test-run.pl start up the server again
|
||||
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
|
||||
# Execute the statement that causes the crash
|
||||
--error 2013
|
||||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
|
||||
--enable_reconnect
|
||||
--source include/wait_until_connected_again.inc
|
||||
--disable_reconnect
|
||||
--source include/start_mysqld.inc
|
||||
|
||||
DROP TABLE test_wl5522.t1;
|
||||
#### Before DISCARD commit crash
|
||||
|
||||
##### After DISCARD commit crash
|
||||
SET GLOBAL innodb_file_per_table = 1;
|
||||
SELECT @@innodb_file_per_table;
|
||||
|
||||
SET SESSION debug_dbug="+d,ib_discard_after_commit_crash";
|
||||
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT) ENGINE = InnoDB;
|
||||
INSERT INTO test_wl5522.t1 VALUES(1),(2),(3);
|
||||
|
||||
# Write file to make mysql-test-run.pl start up the server again
|
||||
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
|
||||
# Execute the statement that causes the crash
|
||||
--exec echo wait > $_expect_file_name
|
||||
SET SESSION debug_dbug="+d,ib_discard_after_commit_crash";
|
||||
--error 2013
|
||||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
|
||||
--enable_reconnect
|
||||
--source include/wait_until_connected_again.inc
|
||||
--disable_reconnect
|
||||
--source include/start_mysqld.inc
|
||||
|
||||
DROP TABLE test_wl5522.t1;
|
||||
#### After DISCARD commit crash
|
||||
|
||||
SET GLOBAL innodb_file_per_table = 1;
|
||||
|
||||
|
@ -106,59 +85,35 @@ do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
|||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
##### Before commit crash
|
||||
SET SESSION debug_dbug="+d,ib_import_before_commit_crash";
|
||||
|
||||
--error ER_TABLESPACE_DISCARDED
|
||||
SELECT * FROM test_wl5522.t1;
|
||||
|
||||
# Write file to make mysql-test-run.pl start up the server again
|
||||
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
|
||||
# Execute the statement that causes the crash
|
||||
--exec echo wait > $_expect_file_name
|
||||
SET SESSION debug_dbug="+d,ib_import_before_commit_crash";
|
||||
--error 2013
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
|
||||
--enable_reconnect
|
||||
--source include/wait_until_connected_again.inc
|
||||
--disable_reconnect
|
||||
|
||||
#### Before commit crash
|
||||
--source include/start_mysqld.inc
|
||||
|
||||
# Check that the DD is consistent after recovery
|
||||
|
||||
##### Before checkpoint crash
|
||||
SET SESSION debug_dbug="+d,ib_import_before_checkpoint_crash";
|
||||
|
||||
--error ER_TABLESPACE_DISCARDED
|
||||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
|
||||
# Don't start up the server right away.
|
||||
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
|
||||
# Execute the statement that causes the crash
|
||||
--exec echo wait > $_expect_file_name
|
||||
SET SESSION debug_dbug="+d,ib_import_before_checkpoint_crash";
|
||||
--error 2013
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
|
||||
# After the above test the results are non-deterministic,
|
||||
# delete the old tablespace files and drop the table,
|
||||
# recreate the table and do a proper import.
|
||||
-- source include/wait_until_disconnected.inc
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
ib_unlink_tablespace("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
--echo # Restart and reconnect to the server
|
||||
--enable_reconnect
|
||||
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--source include/wait_until_connected_again.inc
|
||||
--disable_reconnect
|
||||
|
||||
#### Before checkpoint crash
|
||||
|
||||
# After the above test the results are non-deterministic, recreate the table
|
||||
# and do a proper import.
|
||||
--source include/start_mysqld.inc
|
||||
|
||||
DROP TABLE test_wl5522.t1;
|
||||
|
||||
|
@ -198,6 +153,7 @@ SET SESSION debug_dbug="+d,ib_export_io_write_failure_1";
|
|||
FLUSH TABLES test_wl5522.t1 FOR EXPORT;
|
||||
|
||||
UNLOCK TABLES;
|
||||
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
|
||||
DROP TABLE test_wl5522.t1;
|
||||
|
@ -1087,7 +1043,9 @@ CREATE TABLE test_wl5522.t1 (
|
|||
INDEX idx3(c4(512))) Engine=InnoDB;
|
||||
|
||||
# Stop purge so that it doesn't remove the delete marked entries.
|
||||
SET GLOBAL INNODB_PURGE_STOP_NOW=ON;
|
||||
connect (purge_control,localhost,root);
|
||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||
connection default;
|
||||
|
||||
# Disable change buffer merge from the master thread, additionally
|
||||
# enable aggressive flushing so that more changes are buffered.
|
||||
|
@ -1157,7 +1115,10 @@ SELECT name
|
|||
SET GLOBAL innodb_disable_background_merge=OFF;
|
||||
|
||||
# Enable normal operation
|
||||
SET GLOBAL INNODB_PURGE_RUN_NOW=ON;
|
||||
connection purge_control;
|
||||
COMMIT;
|
||||
disconnect purge_control;
|
||||
connection default;
|
||||
|
||||
DROP TABLE test_wl5522.t1;
|
||||
|
||||
|
@ -1195,8 +1156,8 @@ DROP TABLE test_wl5522.t1;
|
|||
# a Btree that has several levels
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb;
|
||||
|
||||
INSERT INTO test_wl5522.t1 VALUES
|
||||
(100, REPEAT('Karanbir', 899), REPEAT('Ajeeth', 1200));
|
||||
INSERT IGNORE INTO test_wl5522.t1 VALUES
|
||||
(100, REPEAT('Karanbir', 899), REPEAT('Ajeeth', 2731));
|
||||
|
||||
INSERT INTO test_wl5522.t1 SELECT * FROM test_wl5522.t1;
|
||||
INSERT INTO test_wl5522.t1 SELECT * FROM test_wl5522.t1;
|
||||
|
@ -1262,7 +1223,7 @@ do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
|||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
SET SESSION debug_dbug="+d,buf_page_is_corrupt_failure";
|
||||
SET SESSION debug_dbug="+d,buf_page_import_corrupt_failure";
|
||||
|
||||
--replace_regex /'.*t1.cfg'/'t1.cfg'/
|
||||
|
||||
|
@ -1484,6 +1445,8 @@ call mtr.add_suppression("but tablespace with that id or name does not exist");
|
|||
call mtr.add_suppression("Failed to find tablespace for table '\"test_wl5522\".\"t1\"' in the cache");
|
||||
call mtr.add_suppression("Could not find a valid tablespace file for 'test_wl5522.*t1'");
|
||||
call mtr.add_suppression("while reading index meta-data, expected to read 44 bytes but read only 0 bytes");
|
||||
call mtr.add_suppression("Page for tablespace.*that index is not found from configuration file");
|
||||
call mtr.add_suppression("Invalid FSP_SPACE_FLAGS=0x0");
|
||||
--enable_query_log
|
||||
|
||||
#cleanup
|
||||
|
|
|
@ -1,14 +1,12 @@
|
|||
call mtr.add_suppression("InnoDB: Tablespace for table .* is set as discarded.");
|
||||
call mtr.add_suppression("InnoDB: Cannot calculate statistics for table .* because the .ibd file is missing. Please refer to .* for how to resolve the issue.");
|
||||
call mtr.add_suppression("InnoDB: Page 0 at offset 0 looks corrupted in file .*");
|
||||
call mtr.add_suppression("InnoDB: Page for tablespace ");
|
||||
call mtr.add_suppression("InnoDB: Invalid FSP_SPACE_FLAGS=0x");
|
||||
call mtr.add_suppression("InnoDB: Corruption: Block in space_id .* in file .* corrupted");
|
||||
call mtr.add_suppression("InnoDB: Based on page type .*");
|
||||
FLUSH TABLES;
|
||||
SET GLOBAL innodb_file_per_table = 1;
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table=1;
|
||||
SET GLOBAL innodb_file_format=Barracuda;
|
||||
SET SESSION innodb_strict_mode=1;
|
||||
DROP DATABASE IF EXISTS test_wl5522;
|
||||
Warnings:
|
||||
Note 1008 Can't drop database 'test_wl5522'; database doesn't exist
|
||||
CREATE DATABASE test_wl5522;
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT) ENGINE = Innodb
|
||||
ROW_FORMAT=COMPRESSED;
|
||||
|
@ -38,9 +36,11 @@ unlink: t1.ibd
|
|||
unlink: t1.cfg
|
||||
# Restart and reconnect to the server
|
||||
DROP TABLE test_wl5522.t1;
|
||||
SET GLOBAL innodb_file_per_table = 1;
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET SESSION innodb_strict_mode=1;
|
||||
SET @file_per_table = @@GLOBAL.innodb_file_per_table;
|
||||
SET @file_format = @@GLOBAL.innodb_file_format;
|
||||
SET GLOBAL innodb_file_per_table=1;
|
||||
SET GLOBAL innodb_file_format=Barracuda;
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT) ENGINE = Innodb
|
||||
ROW_FORMAT=COMPRESSED;
|
||||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
|
@ -128,8 +128,8 @@ c4 VARCHAR(2048),
|
|||
INDEX idx1(c2),
|
||||
INDEX idx2(c3(512)),
|
||||
INDEX idx3(c4(512))) Engine=InnoDB
|
||||
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
|
||||
SET GLOBAL INNODB_PURGE_STOP_NOW=ON;
|
||||
ROW_FORMAT=COMPRESSED;
|
||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||
SET GLOBAL innodb_disable_background_merge=ON;
|
||||
SET GLOBAL innodb_monitor_reset = ibuf_merges;
|
||||
SET GLOBAL innodb_monitor_reset = ibuf_merges_insert;
|
||||
|
@ -172,7 +172,7 @@ t1 CREATE TABLE `t1` (
|
|||
KEY `idx1` (`c2`),
|
||||
KEY `idx2` (`c3`(512)),
|
||||
KEY `idx3` (`c4`(512))
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=248 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=248 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED
|
||||
SELECT c1, c2 FROM test_wl5522.t1;
|
||||
c1 c2
|
||||
2 32
|
||||
|
@ -294,7 +294,7 @@ FROM information_schema.innodb_metrics
|
|||
WHERE name = 'ibuf_merges_inserts' AND count > 0;
|
||||
name
|
||||
SET GLOBAL innodb_disable_background_merge=OFF;
|
||||
SET GLOBAL INNODB_PURGE_RUN_NOW=ON;
|
||||
COMMIT;
|
||||
DROP TABLE test_wl5522.t1;
|
||||
CREATE TABLE test_wl5522.t1 (
|
||||
c1 BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
|
@ -304,7 +304,7 @@ c4 VARCHAR(2048),
|
|||
INDEX idx1(c2),
|
||||
INDEX idx2(c3(512)),
|
||||
INDEX idx3(c4(512))) Engine=InnoDB
|
||||
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
|
||||
ROW_FORMAT=COMPRESSED;
|
||||
SELECT c1, c2 FROM test_wl5522.t1;
|
||||
c1 c2
|
||||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
|
@ -428,11 +428,11 @@ t1 CREATE TABLE `t1` (
|
|||
KEY `idx1` (`c2`),
|
||||
KEY `idx2` (`c3`(512)),
|
||||
KEY `idx3` (`c4`(512))
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=185 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=185 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED
|
||||
DROP TABLE test_wl5522.t1;
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
|
||||
INSERT INTO test_wl5522.t1 VALUES
|
||||
INSERT IGNORE INTO test_wl5522.t1 VALUES
|
||||
(100, REPEAT('Karanbir', 899), REPEAT('Ajeeth', 1200));
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'c2' at row 1
|
||||
|
@ -470,8 +470,9 @@ ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
|||
SELECT COUNT(*) FROM test_wl5522.t1;
|
||||
ERROR HY000: Tablespace has been discarded for table 't1'
|
||||
restore: t1 .ibd and .cfg files
|
||||
SET SESSION debug_dbug="+d,buf_page_is_corrupt_failure";
|
||||
SET SESSION debug_dbug="+d,buf_page_import_corrupt_failure";
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Internal error: Cannot reset LSNs in table '"test_wl5522"."t1"' : Data structure corruption
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
DROP TABLE test_wl5522.t1;
|
||||
unlink: t1.ibd
|
||||
|
@ -561,5 +562,5 @@ set global innodb_monitor_enable = default;
|
|||
set global innodb_monitor_disable = default;
|
||||
set global innodb_monitor_reset = default;
|
||||
set global innodb_monitor_reset_all = default;
|
||||
SET GLOBAL INNODB_FILE_PER_TABLE=1;
|
||||
SET GLOBAL INNODB_FILE_FORMAT=Antelope;
|
||||
SET GLOBAL innodb_file_per_table = @file_per_table;
|
||||
SET GLOBAL innodb_file_format = @file_format;
|
|
@ -1,39 +1,32 @@
|
|||
# Not supported in embedded
|
||||
# mysql-test-run.pl --embedded cannot restart the server.
|
||||
--source include/not_embedded.inc
|
||||
|
||||
# This test case needs to crash the server. Needs a debug server.
|
||||
--source include/have_debug.inc
|
||||
|
||||
# Don't test this under valgrind, memory leaks will occur.
|
||||
# Valgrind can hang or return spurious messages on DBUG_SUICIDE
|
||||
--source include/not_valgrind.inc
|
||||
|
||||
# Avoid CrashReporter popup on Mac
|
||||
--source include/not_crashrep.inc
|
||||
|
||||
-- source include/have_innodb.inc
|
||||
|
||||
# compressed table in tests are with sizes KEY_BLOCK_SIZE 1,2,4,8,16
|
||||
# Table creatation fails if KEY_BLOCK_SIZE > innodb-page-size,so
|
||||
# allow test to run only when innodb-page-size=16
|
||||
--source include/have_innodb_16k.inc
|
||||
-- source include/innodb_page_size_small.inc
|
||||
|
||||
call mtr.add_suppression("InnoDB: Tablespace for table .* is set as discarded.");
|
||||
call mtr.add_suppression("InnoDB: Cannot calculate statistics for table .* because the .ibd file is missing. Please refer to .* for how to resolve the issue.");
|
||||
call mtr.add_suppression("InnoDB: Page 0 at offset 0 looks corrupted in file .*");
|
||||
call mtr.add_suppression("InnoDB: Page for tablespace ");
|
||||
call mtr.add_suppression("InnoDB: Invalid FSP_SPACE_FLAGS=0x");
|
||||
call mtr.add_suppression("InnoDB: Corruption: Block in space_id .* in file .* corrupted");
|
||||
call mtr.add_suppression("InnoDB: Based on page type .*");
|
||||
FLUSH TABLES;
|
||||
|
||||
SET GLOBAL innodb_file_per_table=1;
|
||||
SET GLOBAL innodb_file_format=Barracuda;
|
||||
|
||||
let MYSQLD_DATADIR =`SELECT @@datadir`;
|
||||
let $innodb_file_per_table = `SELECT @@innodb_file_per_table`;
|
||||
let $innodb_file_format = `SELECT @@innodb_file_format`;
|
||||
let $pathfix=/: '.*test_wl5522.*t1.ibd'/: 'test_wl5522_t1.ibd'/;
|
||||
|
||||
SET GLOBAL innodb_file_per_table = 1;
|
||||
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET SESSION innodb_strict_mode=1;
|
||||
|
||||
DROP DATABASE IF EXISTS test_wl5522;
|
||||
CREATE DATABASE test_wl5522;
|
||||
|
||||
# Create the table that we will use for crash recovery (during IMPORT)
|
||||
|
@ -46,7 +39,7 @@ INSERT INTO test_wl5522.t1 VALUES (1), (2), (3), (4);
|
|||
FLUSH TABLES test_wl5522.t1 FOR EXPORT;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_backup_tablespaces("test_wl5522", "t1");
|
||||
EOF
|
||||
UNLOCK TABLES;
|
||||
|
@ -60,7 +53,7 @@ INSERT INTO test_wl5522.t1 VALUES (1);
|
|||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_discard_tablespaces("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
|
@ -69,7 +62,7 @@ SELECT COUNT(*) FROM test_wl5522.t1;
|
|||
|
||||
# Restore files
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
|
@ -112,7 +105,7 @@ ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
|||
# recreate the table and do a proper import.
|
||||
-- source include/wait_until_disconnected.inc
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_unlink_tablespace("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
|
@ -129,10 +122,12 @@ EOF
|
|||
|
||||
DROP TABLE test_wl5522.t1;
|
||||
|
||||
SET GLOBAL innodb_file_per_table = 1;
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
|
||||
SET SESSION innodb_strict_mode=1;
|
||||
SET @file_per_table = @@GLOBAL.innodb_file_per_table;
|
||||
SET @file_format = @@GLOBAL.innodb_file_format;
|
||||
|
||||
SET GLOBAL innodb_file_per_table=1;
|
||||
SET GLOBAL innodb_file_format=Barracuda;
|
||||
|
||||
CREATE TABLE test_wl5522.t1 (c1 INT) ENGINE = Innodb
|
||||
ROW_FORMAT=COMPRESSED;
|
||||
|
@ -140,7 +135,7 @@ ROW_FORMAT=COMPRESSED;
|
|||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
|
@ -166,7 +161,7 @@ SELECT COUNT(*) FROM test_wl5522.t1;
|
|||
|
||||
# Restore files
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
|
@ -183,7 +178,7 @@ SET SESSION debug_dbug=@saved_debug_dbug;
|
|||
|
||||
# Restore files
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
|
@ -203,7 +198,7 @@ SELECT COUNT(*) FROM test_wl5522.t1;
|
|||
|
||||
# Restore files
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
|
@ -217,7 +212,7 @@ ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
|||
|
||||
# Restore files
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
|
@ -234,7 +229,7 @@ SET SESSION debug_dbug=@saved_debug_dbug;
|
|||
|
||||
# Restore files
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
|
@ -249,7 +244,7 @@ SET SESSION debug_dbug=@saved_debug_dbug;
|
|||
|
||||
# Restore files
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
|
@ -263,7 +258,7 @@ SET SESSION debug_dbug=@saved_debug_dbug;
|
|||
|
||||
# Restore files
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
|
@ -277,7 +272,7 @@ SET SESSION debug_dbug=@saved_debug_dbug;
|
|||
|
||||
# Restore files
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
|
@ -291,7 +286,7 @@ SET SESSION debug_dbug=@saved_debug_dbug;
|
|||
|
||||
# Restore files
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
|
@ -305,7 +300,7 @@ SET SESSION debug_dbug=@saved_debug_dbug;
|
|||
|
||||
# Left over from the failed IMPORT
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_unlink_tablespace("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
|
@ -331,10 +326,12 @@ CREATE TABLE test_wl5522.t1 (
|
|||
INDEX idx1(c2),
|
||||
INDEX idx2(c3(512)),
|
||||
INDEX idx3(c4(512))) Engine=InnoDB
|
||||
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
|
||||
ROW_FORMAT=COMPRESSED;
|
||||
|
||||
# Stop purge so that it doesn't remove the delete marked entries.
|
||||
SET GLOBAL INNODB_PURGE_STOP_NOW=ON;
|
||||
connect (purge_control,localhost,root);
|
||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||
connection default;
|
||||
|
||||
# Disable change buffer merge from the master thread, additionally
|
||||
# enable aggressive flushing so that more changes are buffered.
|
||||
|
@ -387,7 +384,7 @@ SELECT name
|
|||
FLUSH TABLES test_wl5522.t1 FOR EXPORT;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_backup_tablespaces("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
|
@ -404,7 +401,10 @@ SELECT name
|
|||
SET GLOBAL innodb_disable_background_merge=OFF;
|
||||
|
||||
# Enable normal operation
|
||||
SET GLOBAL INNODB_PURGE_RUN_NOW=ON;
|
||||
connection purge_control;
|
||||
COMMIT;
|
||||
disconnect purge_control;
|
||||
connection default;
|
||||
|
||||
DROP TABLE test_wl5522.t1;
|
||||
|
||||
|
@ -416,14 +416,14 @@ CREATE TABLE test_wl5522.t1 (
|
|||
INDEX idx1(c2),
|
||||
INDEX idx2(c3(512)),
|
||||
INDEX idx3(c4(512))) Engine=InnoDB
|
||||
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
|
||||
ROW_FORMAT=COMPRESSED;
|
||||
|
||||
SELECT c1, c2 FROM test_wl5522.t1;
|
||||
|
||||
ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
|
@ -444,7 +444,7 @@ DROP TABLE test_wl5522.t1;
|
|||
CREATE TABLE test_wl5522.t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
|
||||
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
|
||||
|
||||
INSERT INTO test_wl5522.t1 VALUES
|
||||
INSERT IGNORE INTO test_wl5522.t1 VALUES
|
||||
(100, REPEAT('Karanbir', 899), REPEAT('Ajeeth', 1200));
|
||||
|
||||
INSERT INTO test_wl5522.t1 SELECT * FROM test_wl5522.t1;
|
||||
|
@ -459,7 +459,7 @@ SELECT COUNT(*) FROM test_wl5522.t1;
|
|||
FLUSH TABLES test_wl5522.t1 FOR EXPORT;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_backup_tablespaces("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
|
@ -477,7 +477,7 @@ SELECT COUNT(*) FROM test_wl5522.t1;
|
|||
|
||||
# Restore files
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
|
@ -493,7 +493,7 @@ SET SESSION debug_dbug=@saved_debug_dbug;
|
|||
DROP TABLE test_wl5522.t1;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_unlink_tablespace("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
|
@ -509,16 +509,16 @@ SELECT COUNT(*) FROM test_wl5522.t1;
|
|||
|
||||
# Restore files
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
SET SESSION debug_dbug="+d,buf_page_is_corrupt_failure";
|
||||
SET SESSION debug_dbug="+d,buf_page_import_corrupt_failure";
|
||||
|
||||
--replace_regex /'.*t1.cfg'/'t1.cfg'/
|
||||
|
||||
# Following alter is not failing
|
||||
#--error ER_INTERNAL_ERROR
|
||||
# Following alter is failing
|
||||
--error ER_INTERNAL_ERROR
|
||||
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
|
||||
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
|
@ -526,7 +526,7 @@ SET SESSION debug_dbug=@saved_debug_dbug;
|
|||
DROP TABLE test_wl5522.t1;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_unlink_tablespace("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
|
@ -540,7 +540,7 @@ SELECT COUNT(*) FROM test_wl5522.t1;
|
|||
|
||||
# Restore files
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
|
@ -556,7 +556,7 @@ SET SESSION debug_dbug=@saved_debug_dbug;
|
|||
DROP TABLE test_wl5522.t1;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_unlink_tablespace("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
|
@ -570,7 +570,7 @@ SELECT COUNT(*) FROM test_wl5522.t1;
|
|||
|
||||
# Restore files
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
|
@ -586,7 +586,7 @@ SET SESSION debug_dbug=@saved_debug_dbug;
|
|||
DROP TABLE test_wl5522.t1;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_unlink_tablespace("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
|
@ -607,7 +607,7 @@ SET SESSION debug_dbug=@saved_debug_dbug;
|
|||
DROP TABLE test_wl5522.t1;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_unlink_tablespace("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
|
@ -623,7 +623,7 @@ SELECT COUNT(*) FROM test_wl5522.t1;
|
|||
|
||||
# Restore files
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
|
@ -638,7 +638,7 @@ SET SESSION debug_dbug=@saved_debug_dbug;
|
|||
DROP TABLE test_wl5522.t1;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_unlink_tablespace("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
|
@ -654,7 +654,7 @@ SELECT COUNT(*) FROM test_wl5522.t1;
|
|||
|
||||
# Restore files
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
|
@ -669,7 +669,7 @@ SET SESSION debug_dbug=@saved_debug_dbug;
|
|||
DROP TABLE test_wl5522.t1;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_unlink_tablespace("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
|
@ -685,7 +685,7 @@ SELECT COUNT(*) FROM test_wl5522.t1;
|
|||
|
||||
# Restore files
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
|
@ -701,7 +701,7 @@ SET SESSION debug_dbug=@saved_debug_dbug;
|
|||
DROP TABLE test_wl5522.t1;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
|
||||
ib_unlink_tablespace("test_wl5522", "t1");
|
||||
EOF
|
||||
|
||||
|
@ -736,11 +736,12 @@ call mtr.add_suppression("t1.ibd: Page .* at offset .* looks corrupted");
|
|||
call mtr.add_suppression("but tablespace with that id or name does not exist");
|
||||
call mtr.add_suppression("Failed to find tablespace for table '\"test_wl5522\".\"t1\"' in the cache");
|
||||
call mtr.add_suppression("Could not find a valid tablespace file for 'test_wl5522.*t1'");
|
||||
call mtr.add_suppression("Index for table 't1' is corrupt; try to repair it");
|
||||
--enable_query_log
|
||||
|
||||
#cleanup
|
||||
--remove_file $MYSQLTEST_VARDIR/tmp/t1.cfg
|
||||
--remove_file $MYSQLTEST_VARDIR/tmp/t1.ibd
|
||||
|
||||
eval SET GLOBAL INNODB_FILE_PER_TABLE=$innodb_file_per_table;
|
||||
eval SET GLOBAL INNODB_FILE_FORMAT=$innodb_file_format;
|
||||
SET GLOBAL innodb_file_per_table = @file_per_table;
|
||||
SET GLOBAL innodb_file_format = @file_format;
|
|
@ -1,7 +1,8 @@
|
|||
SET @orig = @@global.innodb_buffer_pool_dump_now;
|
||||
SELECT @orig;
|
||||
@orig
|
||||
SELECT @@global.innodb_buffer_pool_dump_now;
|
||||
@@global.innodb_buffer_pool_dump_now
|
||||
0
|
||||
SELECT variable_value INTO @old_dump_status FROM information_schema.global_status
|
||||
WHERE LOWER(variable_name) = 'innodb_buffer_pool_dump_status';
|
||||
SET GLOBAL innodb_buffer_pool_dump_now = ON;
|
||||
SELECT @@global.innodb_buffer_pool_dump_now;
|
||||
@@global.innodb_buffer_pool_dump_now
|
||||
|
|
|
@ -2,7 +2,8 @@ SET @orig = @@global.innodb_buffer_pool_dump_pct;
|
|||
SELECT @orig;
|
||||
@orig
|
||||
100
|
||||
SET GLOBAL innodb_buffer_pool_dump_pct=3, GLOBAL innodb_buffer_pool_dump_now = ON;
|
||||
SET GLOBAL innodb_buffer_pool_dump_pct=3;
|
||||
# Do the dump
|
||||
SET GLOBAL innodb_buffer_pool_dump_pct=0;
|
||||
SELECT @@global.innodb_buffer_pool_dump_pct;
|
||||
@@global.innodb_buffer_pool_dump_pct
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
SET @orig = @@global.innodb_buffer_pool_load_now;
|
||||
SELECT @orig;
|
||||
@orig
|
||||
SELECT @@global.innodb_buffer_pool_load_now;
|
||||
@@global.innodb_buffer_pool_load_now
|
||||
0
|
||||
SET GLOBAL innodb_buffer_pool_dump_now = ON;
|
||||
SET GLOBAL innodb_buffer_pool_load_now = ON;
|
||||
SELECT variable_value
|
||||
FROM information_schema.global_status
|
||||
|
|
|
@ -5,8 +5,31 @@
|
|||
-- source include/have_innodb.inc
|
||||
|
||||
# Check the default value
|
||||
SET @orig = @@global.innodb_buffer_pool_dump_now;
|
||||
SELECT @orig;
|
||||
SELECT @@global.innodb_buffer_pool_dump_now;
|
||||
|
||||
-- let $file = `SELECT CONCAT(@@datadir, @@global.innodb_buffer_pool_filename)`
|
||||
-- error 0,1
|
||||
-- remove_file $file
|
||||
|
||||
SELECT variable_value INTO @old_dump_status FROM information_schema.global_status
|
||||
WHERE LOWER(variable_name) = 'innodb_buffer_pool_dump_status';
|
||||
|
||||
# A previous test could have run buffer pool dump already;
|
||||
# in this case we want to make sure that the current time is different
|
||||
# from the timestamp in the status variable.
|
||||
# We should have had a smart wait condition here, like the commented one below,
|
||||
# let $wait_condition =
|
||||
# SELECT TRIM(SUBSTR('$old_status', -8)) != DATE_FORMAT(CURTIME(), '%k:%i:%s');
|
||||
# -- source include/wait_condition.inc
|
||||
|
||||
# ... but we can't because of MDEV-9867, so there will be just sleep instead.
|
||||
# And it might be not enough to sleep one second, so we'll have to sleep two.
|
||||
|
||||
if (`SELECT variable_value LIKE '%completed at%' FROM information_schema.global_status
|
||||
WHERE LOWER(variable_name) = 'innodb_buffer_pool_dump_status'`)
|
||||
{
|
||||
-- sleep 2
|
||||
}
|
||||
|
||||
# Do the dump
|
||||
SET GLOBAL innodb_buffer_pool_dump_now = ON;
|
||||
|
@ -15,11 +38,11 @@ SELECT @@global.innodb_buffer_pool_dump_now;
|
|||
|
||||
# Wait for the dump to complete
|
||||
let $wait_condition =
|
||||
SELECT SUBSTR(variable_value, 1, 33) = 'Buffer pool(s) dump completed at '
|
||||
SELECT variable_value != @old_dump_status
|
||||
AND SUBSTR(variable_value, 1, 33) = 'Buffer pool(s) dump completed at '
|
||||
FROM information_schema.global_status
|
||||
WHERE LOWER(variable_name) = 'innodb_buffer_pool_dump_status';
|
||||
-- source include/wait_condition.inc
|
||||
|
||||
# Confirm that the dump file has been created
|
||||
-- let $file = `SELECT CONCAT(@@datadir, @@global.innodb_buffer_pool_filename)`
|
||||
-- file_exists $file
|
||||
|
|
|
@ -8,19 +8,15 @@
|
|||
SET @orig = @@global.innodb_buffer_pool_dump_pct;
|
||||
SELECT @orig;
|
||||
|
||||
# Do the dump
|
||||
SET GLOBAL innodb_buffer_pool_dump_pct=3, GLOBAL innodb_buffer_pool_dump_now = ON;
|
||||
SET GLOBAL innodb_buffer_pool_dump_pct=3;
|
||||
|
||||
# Wait for the dump to complete
|
||||
let $wait_condition =
|
||||
SELECT SUBSTR(variable_value, 1, 33) = 'Buffer pool(s) dump completed at '
|
||||
FROM information_schema.global_status
|
||||
WHERE LOWER(variable_name) = 'innodb_buffer_pool_dump_status';
|
||||
-- source include/wait_condition.inc
|
||||
--echo # Do the dump
|
||||
|
||||
# Confirm that the dump file has been created
|
||||
-- let $file = `SELECT CONCAT(@@datadir, @@global.innodb_buffer_pool_filename)`
|
||||
-- file_exists $file
|
||||
--disable_query_log
|
||||
--disable_result_log
|
||||
--source innodb_buffer_pool_dump_now_basic.test
|
||||
--enable_result_log
|
||||
--enable_query_log
|
||||
|
||||
--disable_warnings
|
||||
SET GLOBAL innodb_buffer_pool_dump_pct=0;
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
--innodb-buffer-pool-load-at-startup=off
|
|
@ -5,42 +5,22 @@
|
|||
-- source include/have_innodb.inc
|
||||
|
||||
# Check the default value
|
||||
SET @orig = @@global.innodb_buffer_pool_load_now;
|
||||
SELECT @orig;
|
||||
SELECT @@global.innodb_buffer_pool_load_now;
|
||||
|
||||
let $old_status= `SELECT variable_value FROM information_schema.global_status
|
||||
WHERE LOWER(variable_name) = 'innodb_buffer_pool_dump_status'`;
|
||||
# Make sure there is a dump file to load
|
||||
|
||||
# A previous test could have run buffer pool dump already;
|
||||
# in this case we want to make sure that the current time is different
|
||||
# from the timestamp in the status variable.
|
||||
# We should have had a smart wait condition here, like the commented one below,
|
||||
# but we can't because of MDEV-9867, so there will be just sleep instead.
|
||||
# And it might be not enough to sleep one second, so we'll have to sleep two.
|
||||
# let $wait_condition =
|
||||
# SELECT TRIM(SUBSTR('$old_status', -8)) != DATE_FORMAT(CURTIME(), '%k:%i:%s');
|
||||
# -- source include/wait_condition.inc
|
||||
|
||||
if (`SELECT variable_value LIKE '%dump completed at%' FROM information_schema.global_status
|
||||
WHERE LOWER(variable_name) = 'innodb_buffer_pool_dump_status'`)
|
||||
{
|
||||
-- sleep 2
|
||||
}
|
||||
|
||||
# Do the dump
|
||||
SET GLOBAL innodb_buffer_pool_dump_now = ON;
|
||||
|
||||
# Wait for the dump to complete
|
||||
let $wait_condition =
|
||||
SELECT variable_value != '$old_status'
|
||||
AND SUBSTR(variable_value, 1, 33) = 'Buffer pool(s) dump completed at '
|
||||
FROM information_schema.global_status
|
||||
WHERE LOWER(variable_name) = 'innodb_buffer_pool_dump_status';
|
||||
-- source include/wait_condition.inc
|
||||
|
||||
# Confirm the file is really created
|
||||
-- let $file = `SELECT CONCAT(@@datadir, @@global.innodb_buffer_pool_filename)`
|
||||
-- error 0,1
|
||||
-- file_exists $file
|
||||
if ($errno)
|
||||
{
|
||||
# Dump file does not exist, get it created
|
||||
--disable_query_log
|
||||
--disable_result_log
|
||||
--source innodb_buffer_pool_dump_now_basic.test
|
||||
--enable_result_log
|
||||
--enable_query_log
|
||||
}
|
||||
|
||||
# Load the dump
|
||||
SET GLOBAL innodb_buffer_pool_load_now = ON;
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
--source include/have_partition.inc
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t9,`t1a``b`,v1,v2,v3,v4,v5,v6;
|
||||
|
|
|
@ -731,6 +731,7 @@ buf_page_is_corrupted(
|
|||
const void* space)
|
||||
#endif
|
||||
{
|
||||
DBUG_EXECUTE_IF("buf_page_import_corrupt_failure", return(TRUE); );
|
||||
ulint checksum_field1 = 0;
|
||||
ulint checksum_field2 = 0;
|
||||
#ifndef UNIV_INNOCHECKSUM
|
||||
|
@ -844,8 +845,6 @@ buf_page_is_corrupted(
|
|||
return(false);
|
||||
}
|
||||
|
||||
DBUG_EXECUTE_IF("buf_page_is_corrupt_failure", return(true); );
|
||||
|
||||
#ifndef UNIV_INNOCHECKSUM
|
||||
ulint page_no = mach_read_from_4(read_buf + FIL_PAGE_OFFSET);
|
||||
#endif
|
||||
|
@ -4876,7 +4875,7 @@ database_corrupted:
|
|||
if (err != DB_SUCCESS) {
|
||||
/* Not a real corruption if it was triggered by
|
||||
error injection */
|
||||
DBUG_EXECUTE_IF("buf_page_is_corrupt_failure",
|
||||
DBUG_EXECUTE_IF("buf_page_import_corrupt_failure",
|
||||
if (bpage->space > TRX_SYS_SPACE) {
|
||||
buf_mark_space_corrupt(bpage);
|
||||
ib_logf(IB_LOG_LEVEL_INFO,
|
||||
|
@ -4932,7 +4931,7 @@ database_corrupted:
|
|||
}
|
||||
}
|
||||
|
||||
DBUG_EXECUTE_IF("buf_page_is_corrupt_failure",
|
||||
DBUG_EXECUTE_IF("buf_page_import_corrupt_failure",
|
||||
page_not_corrupt: bpage = bpage; );
|
||||
|
||||
if (recv_recovery_is_on()) {
|
||||
|
|
|
@ -5136,7 +5136,20 @@ ibuf_check_bitmap_on_import(
|
|||
return(DB_TABLE_NOT_FOUND);
|
||||
}
|
||||
|
||||
size = fil_space_get_size(space_id);
|
||||
mtr_t mtr;
|
||||
mtr_start(&mtr);
|
||||
{
|
||||
buf_block_t* sp = buf_page_get(space_id, zip_size, 0,
|
||||
RW_S_LATCH, &mtr);
|
||||
if (sp) {
|
||||
size = mach_read_from_4(
|
||||
FSP_HEADER_OFFSET + FSP_FREE_LIMIT
|
||||
+ sp->frame);
|
||||
} else {
|
||||
size = 0;
|
||||
}
|
||||
}
|
||||
mtr_commit(&mtr);
|
||||
|
||||
if (size == 0) {
|
||||
return(DB_TABLE_NOT_FOUND);
|
||||
|
@ -5147,7 +5160,6 @@ ibuf_check_bitmap_on_import(
|
|||
page_size = zip_size ? zip_size : UNIV_PAGE_SIZE;
|
||||
|
||||
for (page_no = 0; page_no < size; page_no += page_size) {
|
||||
mtr_t mtr;
|
||||
page_t* bitmap_page;
|
||||
ulint i;
|
||||
|
||||
|
|
|
@ -730,6 +730,8 @@ buf_page_is_corrupted(
|
|||
ulint zip_size,
|
||||
const fil_space_t* space)
|
||||
{
|
||||
DBUG_EXECUTE_IF("buf_page_import_corrupt_failure", return(TRUE); );
|
||||
|
||||
ulint checksum_field1;
|
||||
ulint checksum_field2;
|
||||
ulint space_id = mach_read_from_4(
|
||||
|
@ -838,8 +840,6 @@ buf_page_is_corrupted(
|
|||
return(false);
|
||||
}
|
||||
|
||||
DBUG_EXECUTE_IF("buf_page_is_corrupt_failure", return(true); );
|
||||
|
||||
ulint page_no = mach_read_from_4(read_buf + FIL_PAGE_OFFSET);
|
||||
|
||||
const srv_checksum_algorithm_t curr_algo =
|
||||
|
@ -4825,7 +4825,7 @@ database_corrupted:
|
|||
if (err != DB_SUCCESS) {
|
||||
/* Not a real corruption if it was triggered by
|
||||
error injection */
|
||||
DBUG_EXECUTE_IF("buf_page_is_corrupt_failure",
|
||||
DBUG_EXECUTE_IF("buf_page_import_corrupt_failure",
|
||||
if (bpage->space > TRX_SYS_SPACE) {
|
||||
buf_mark_space_corrupt(bpage);
|
||||
ib_logf(IB_LOG_LEVEL_INFO,
|
||||
|
@ -4893,7 +4893,7 @@ database_corrupted:
|
|||
}
|
||||
}
|
||||
|
||||
DBUG_EXECUTE_IF("buf_page_is_corrupt_failure",
|
||||
DBUG_EXECUTE_IF("buf_page_import_corrupt_failure",
|
||||
page_not_corrupt: bpage = bpage; );
|
||||
|
||||
if (recv_recovery_is_on()) {
|
||||
|
|
|
@ -5178,7 +5178,20 @@ ibuf_check_bitmap_on_import(
|
|||
return(DB_TABLE_NOT_FOUND);
|
||||
}
|
||||
|
||||
size = fil_space_get_size(space_id);
|
||||
mtr_t mtr;
|
||||
mtr_start(&mtr);
|
||||
{
|
||||
buf_block_t* sp = buf_page_get(space_id, zip_size, 0,
|
||||
RW_S_LATCH, &mtr);
|
||||
if (sp) {
|
||||
size = mach_read_from_4(
|
||||
FSP_HEADER_OFFSET + FSP_FREE_LIMIT
|
||||
+ sp->frame);
|
||||
} else {
|
||||
size = 0;
|
||||
}
|
||||
}
|
||||
mtr_commit(&mtr);
|
||||
|
||||
if (size == 0) {
|
||||
return(DB_TABLE_NOT_FOUND);
|
||||
|
@ -5189,7 +5202,6 @@ ibuf_check_bitmap_on_import(
|
|||
page_size = zip_size ? zip_size : UNIV_PAGE_SIZE;
|
||||
|
||||
for (page_no = 0; page_no < size; page_no += page_size) {
|
||||
mtr_t mtr;
|
||||
page_t* bitmap_page;
|
||||
ulint i;
|
||||
|
||||
|
|
Loading…
Reference in a new issue