summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2017-11-06 18:10:23 +0200
committerMarko Mäkelä <marko.makela@mariadb.com>2017-11-06 18:10:23 +0200
commit5691109689bc40fa303c1b7ddc84b9209ec5f869 (patch)
tree03a2153428d0e119a508887966230c2d70e3e0b7
parent51b4366bfb8a77c6341d7811f71c851e52f36f68 (diff)
parent6a524fcfdde539c6448aa4126ccb5ed79055b9ce (diff)
downloadmariadb-git-5691109689bc40fa303c1b7ddc84b9209ec5f869.tar.gz
Merge 10.0 into 10.1
-rw-r--r--mysql-test/include/check-testcase.test2
-rw-r--r--mysql-test/suite/innodb/r/innodb-wl5522-debug.result30
-rw-r--r--mysql-test/suite/innodb/t/innodb-wl5522-debug.test93
-rw-r--r--mysql-test/suite/innodb_zip/r/wl5522_debug_zip.result (renamed from mysql-test/suite/innodb/r/innodb-wl5522-debug-zip.result)39
-rw-r--r--mysql-test/suite/innodb_zip/t/wl5522_debug_zip.test (renamed from mysql-test/suite/innodb/t/innodb-wl5522-debug-zip.test)125
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_buffer_pool_dump_now_basic.result7
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_buffer_pool_dump_pct_basic.result3
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_buffer_pool_load_now_basic.result6
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_buffer_pool_dump_now_basic.test31
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_buffer_pool_dump_pct_basic.test18
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_buffer_pool_load_now_basic.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_buffer_pool_load_now_basic.test44
-rw-r--r--mysql-test/t/view.test1
-rw-r--r--storage/innobase/buf/buf0buf.cc7
-rw-r--r--storage/innobase/ibuf/ibuf0ibuf.cc16
-rw-r--r--storage/xtradb/buf/buf0buf.cc8
-rw-r--r--storage/xtradb/ibuf/ibuf0ibuf.cc16
17 files changed, 213 insertions, 234 deletions
diff --git a/mysql-test/include/check-testcase.test b/mysql-test/include/check-testcase.test
index 20b5ded6e82..435de640c9d 100644
--- a/mysql-test/include/check-testcase.test
+++ b/mysql-test/include/check-testcase.test
@@ -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
diff --git a/mysql-test/suite/innodb/r/innodb-wl5522-debug.result b/mysql-test/suite/innodb/r/innodb-wl5522-debug.result
index 92ae1d52b6c..66b7d246e30 100644
--- a/mysql-test/suite/innodb/r/innodb-wl5522-debug.result
+++ b/mysql-test/suite/innodb/r/innodb-wl5522-debug.result
@@ -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;
diff --git a/mysql-test/suite/innodb/t/innodb-wl5522-debug.test b/mysql-test/suite/innodb/t/innodb-wl5522-debug.test
index aa972238636..11bdd4305c2 100644
--- a/mysql-test/suite/innodb/t/innodb-wl5522-debug.test
+++ b/mysql-test/suite/innodb/t/innodb-wl5522-debug.test
@@ -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
-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
+--let $_server_id= `SELECT @@server_id`
+--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/mysqld.$_server_id.expect
-# Execute the statement that causes the crash
+--exec echo wait > $_expect_file_name
+SET SESSION debug_dbug="+d,ib_discard_before_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;
-#### 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
diff --git a/mysql-test/suite/innodb/r/innodb-wl5522-debug-zip.result b/mysql-test/suite/innodb_zip/r/wl5522_debug_zip.result
index b7a2666bfe6..a751736aba6 100644
--- a/mysql-test/suite/innodb/r/innodb-wl5522-debug-zip.result
+++ b/mysql-test/suite/innodb_zip/r/wl5522_debug_zip.result
@@ -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;
diff --git a/mysql-test/suite/innodb/t/innodb-wl5522-debug-zip.test b/mysql-test/suite/innodb_zip/t/wl5522_debug_zip.test
index c48b81a5a56..65b030c018f 100644
--- a/mysql-test/suite/innodb/t/innodb-wl5522-debug-zip.test
+++ b/mysql-test/suite/innodb_zip/t/wl5522_debug_zip.test
@@ -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;
diff --git a/mysql-test/suite/sys_vars/r/innodb_buffer_pool_dump_now_basic.result b/mysql-test/suite/sys_vars/r/innodb_buffer_pool_dump_now_basic.result
index 9c3a37f892b..522d5731a6d 100644
--- a/mysql-test/suite/sys_vars/r/innodb_buffer_pool_dump_now_basic.result
+++ b/mysql-test/suite/sys_vars/r/innodb_buffer_pool_dump_now_basic.result
@@ -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
diff --git a/mysql-test/suite/sys_vars/r/innodb_buffer_pool_dump_pct_basic.result b/mysql-test/suite/sys_vars/r/innodb_buffer_pool_dump_pct_basic.result
index 51c72cfe791..70fcdd3cb56 100644
--- a/mysql-test/suite/sys_vars/r/innodb_buffer_pool_dump_pct_basic.result
+++ b/mysql-test/suite/sys_vars/r/innodb_buffer_pool_dump_pct_basic.result
@@ -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
diff --git a/mysql-test/suite/sys_vars/r/innodb_buffer_pool_load_now_basic.result b/mysql-test/suite/sys_vars/r/innodb_buffer_pool_load_now_basic.result
index 3185d1ca170..eebed4d0f4a 100644
--- a/mysql-test/suite/sys_vars/r/innodb_buffer_pool_load_now_basic.result
+++ b/mysql-test/suite/sys_vars/r/innodb_buffer_pool_load_now_basic.result
@@ -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
diff --git a/mysql-test/suite/sys_vars/t/innodb_buffer_pool_dump_now_basic.test b/mysql-test/suite/sys_vars/t/innodb_buffer_pool_dump_now_basic.test
index 0bae347428e..8c5f8fa7bf0 100644
--- a/mysql-test/suite/sys_vars/t/innodb_buffer_pool_dump_now_basic.test
+++ b/mysql-test/suite/sys_vars/t/innodb_buffer_pool_dump_now_basic.test
@@ -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
diff --git a/mysql-test/suite/sys_vars/t/innodb_buffer_pool_dump_pct_basic.test b/mysql-test/suite/sys_vars/t/innodb_buffer_pool_dump_pct_basic.test
index d2f5cb4a0de..1cf6775e06d 100644
--- a/mysql-test/suite/sys_vars/t/innodb_buffer_pool_dump_pct_basic.test
+++ b/mysql-test/suite/sys_vars/t/innodb_buffer_pool_dump_pct_basic.test
@@ -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;
diff --git a/mysql-test/suite/sys_vars/t/innodb_buffer_pool_load_now_basic.opt b/mysql-test/suite/sys_vars/t/innodb_buffer_pool_load_now_basic.opt
new file mode 100644
index 00000000000..e462be3c368
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/innodb_buffer_pool_load_now_basic.opt
@@ -0,0 +1 @@
+--innodb-buffer-pool-load-at-startup=off
diff --git a/mysql-test/suite/sys_vars/t/innodb_buffer_pool_load_now_basic.test b/mysql-test/suite/sys_vars/t/innodb_buffer_pool_load_now_basic.test
index a0409901865..abb78ce5260 100644
--- a/mysql-test/suite/sys_vars/t/innodb_buffer_pool_load_now_basic.test
+++ b/mysql-test/suite/sys_vars/t/innodb_buffer_pool_load_now_basic.test
@@ -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;
diff --git a/mysql-test/t/view.test b/mysql-test/t/view.test
index d01d922ef3c..ac6b94102d7 100644
--- a/mysql-test/t/view.test
+++ b/mysql-test/t/view.test
@@ -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;
diff --git a/storage/innobase/buf/buf0buf.cc b/storage/innobase/buf/buf0buf.cc
index f79e6e13d84..7267028339f 100644
--- a/storage/innobase/buf/buf0buf.cc
+++ b/storage/innobase/buf/buf0buf.cc
@@ -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()) {
diff --git a/storage/innobase/ibuf/ibuf0ibuf.cc b/storage/innobase/ibuf/ibuf0ibuf.cc
index d563db8fc87..c621ed5f71a 100644
--- a/storage/innobase/ibuf/ibuf0ibuf.cc
+++ b/storage/innobase/ibuf/ibuf0ibuf.cc
@@ -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;
diff --git a/storage/xtradb/buf/buf0buf.cc b/storage/xtradb/buf/buf0buf.cc
index 7498f841671..2ee2b2ba37f 100644
--- a/storage/xtradb/buf/buf0buf.cc
+++ b/storage/xtradb/buf/buf0buf.cc
@@ -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()) {
diff --git a/storage/xtradb/ibuf/ibuf0ibuf.cc b/storage/xtradb/ibuf/ibuf0ibuf.cc
index 17741b324c9..6925cd3abb5 100644
--- a/storage/xtradb/ibuf/ibuf0ibuf.cc
+++ b/storage/xtradb/ibuf/ibuf0ibuf.cc
@@ -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;