summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2017-02-16 09:18:46 +0200
committerMarko Mäkelä <marko.makela@mariadb.com>2017-02-16 09:18:46 +0200
commit34bbc76f1c1f6968cdcf65dee2d887ab71557e5c (patch)
tree7f3a15f6c2c5127ac9089424197039fc8fcaa8c3 /mysql-test
parent7a5288015c8afeaaef4d5dd04057f78c7978eeee (diff)
downloadmariadb-git-34bbc76f1c1f6968cdcf65dee2d887ab71557e5c.tar.gz
Simplify a WL#6494/WL#7142 test.mariadb-10.2.4
The test innodb.log_file_size_checkpoint was originally added to MySQL 5.7 by me in a bug fix, to fix the interaction of WL#6494 (redo log resizing, introduced in MySQL 5.6) and WL#7142 (data file discovery based on MLOG_FILE_NAME records, introduced in MySQL 5.7): commit 70f9ef4e1220827132b50275ca7272f2bcca1864 Author: Marko Mäkelä <marko.makela@oracle.com> Date: Wed May 21 13:31:29 2014 +0300 Bug#18755095 REDO LOG SIZE CHANGE AFTER CRASH RESULTS IN CHECKPOINT AGE ERROR MESSAGE This is a regression from fixing Bug#18730524 REPEATED KILL+RESTART FAILS DUE TO MISSING MLOG_FILE_NAME RECORD innobase_start_or_create_for_mysql(): Invoke fil_names_clear() before creating the "checkpoint" when changing redo log files. Approved by Jimmy Yang on IM. The relevant part of the test is that fil_names_clear() is invoked to emit an MLOG_CHECKPOINT record before the redo log files are deleted. In case the server is killed before ib_logfile0 has been deleted, the old (not-yet-resized) redo log will be treated as valid. We do not need to create a large number of tables for that.
Diffstat (limited to 'mysql-test')
-rw-r--r--mysql-test/suite/innodb/r/log_file_name_debug.result6
-rw-r--r--mysql-test/suite/innodb/r/log_file_size_checkpoint.result4
-rw-r--r--mysql-test/suite/innodb/t/log_file_name_debug.test26
-rw-r--r--mysql-test/suite/innodb/t/log_file_size_checkpoint.test27
4 files changed, 28 insertions, 35 deletions
diff --git a/mysql-test/suite/innodb/r/log_file_name_debug.result b/mysql-test/suite/innodb/r/log_file_name_debug.result
index e82feef870c..e33ce36d1f2 100644
--- a/mysql-test/suite/innodb/r/log_file_name_debug.result
+++ b/mysql-test/suite/innodb/r/log_file_name_debug.result
@@ -5,4 +5,10 @@
SET GLOBAL DEBUG_DBUG='+d,fil_names_write_bogus';
CREATE TABLE t1(a INT PRIMARY KEY) ENGINE=InnoDB;
# Kill the server
+SELECT * FROM t1;
+ERROR 42000: Unknown storage engine 'InnoDB'
+FOUND /InnoDB: Tablespace 4294967280 was not found at .*, but there were no modifications either/ in mysqld.1.err
+SELECT * FROM t1;
+ERROR 42000: Unknown storage engine 'InnoDB'
+FOUND /srv_prepare_to_delete_redo_log_files: ib_log: MLOG_CHECKPOINT.* written/ in mysqld.1.err
DROP TABLE t1;
diff --git a/mysql-test/suite/innodb/r/log_file_size_checkpoint.result b/mysql-test/suite/innodb/r/log_file_size_checkpoint.result
deleted file mode 100644
index 068b1368e1e..00000000000
--- a/mysql-test/suite/innodb/r/log_file_size_checkpoint.result
+++ /dev/null
@@ -1,4 +0,0 @@
-CREATE DATABASE logtest;
-USE logtest;
-# Kill and restart: --innodb-log-files-in-group=2 --innodb-log-file-size=4M --innodb-buffer-pool-size=50M
-DROP DATABASE logtest;
diff --git a/mysql-test/suite/innodb/t/log_file_name_debug.test b/mysql-test/suite/innodb/t/log_file_name_debug.test
index 41d7ec2e53e..44012d38c8e 100644
--- a/mysql-test/suite/innodb/t/log_file_name_debug.test
+++ b/mysql-test/suite/innodb/t/log_file_name_debug.test
@@ -10,9 +10,15 @@
SET GLOBAL DEBUG_DBUG='+d,fil_names_write_bogus';
--disable_query_log
+call mtr.add_suppression("InnoDB: Plugin initialization aborted");
+call mtr.add_suppression("Plugin 'InnoDB' init function returned error");
+call mtr.add_suppression("Plugin 'InnoDB' registration as a STORAGE ENGINE failed");
FLUSH TABLES;
--enable_query_log
+--let $n_logs=`SELECT if(@@innodb_log_files_in_group = 1, 2, 1)`
+--let $resize= --innodb-log-files-in-group=$n_logs --innodb-log-file-size=4M
+
--source include/no_checkpoint_start.inc
CREATE TABLE t1(a INT PRIMARY KEY) ENGINE=InnoDB;
@@ -20,12 +26,24 @@ CREATE TABLE t1(a INT PRIMARY KEY) ENGINE=InnoDB;
--let CLEANUP_IF_CHECKPOINT=DROP TABLE t1;
--source include/no_checkpoint_end.inc
+--let $restart_parameters= --debug=d,innodb_log_abort_1 $resize
--source include/start_mysqld.inc
-
-DROP TABLE t1;
+--error ER_UNKNOWN_STORAGE_ENGINE
+SELECT * FROM t1;
--let SEARCH_FILE = $MYSQLTEST_VARDIR/log/mysqld.1.err
---let SEARCH_PATTERN = InnoDB: Tablespace 4294967280 was not found at .*, but there were no modifications either
---let SEARCH_ABORT = NOT FOUND
--let SEARCH_RANGE = -50000
+--let SEARCH_PATTERN = InnoDB: Tablespace 4294967280 was not found at .*, but there were no modifications either
--source include/search_pattern_in_file.inc
+
+--let $restart_parameters= --debug=d,innodb_log_abort_3,ib_log $resize
+--source include/restart_mysqld.inc
+--error ER_UNKNOWN_STORAGE_ENGINE
+SELECT * FROM t1;
+--let SEARCH_PATTERN= srv_prepare_to_delete_redo_log_files: ib_log: MLOG_CHECKPOINT.* written
+--source include/search_pattern_in_file.inc
+
+--let $restart_parameters=
+--source include/restart_mysqld.inc
+DROP TABLE t1;
+
diff --git a/mysql-test/suite/innodb/t/log_file_size_checkpoint.test b/mysql-test/suite/innodb/t/log_file_size_checkpoint.test
deleted file mode 100644
index 16b71bfd1f4..00000000000
--- a/mysql-test/suite/innodb/t/log_file_size_checkpoint.test
+++ /dev/null
@@ -1,27 +0,0 @@
---source include/have_innodb.inc
---source include/not_embedded.inc
---source include/no_valgrind_without_big.inc
-
-CREATE DATABASE logtest;
-USE logtest;
-let $n=250;
-let $t=veryLongTableNameToCreateMLOG_FILE_NAMErecords;
-
---disable_query_log
-let $i=$n;
-while ($i)
-{
---eval CREATE TABLE $t$i(a INT PRIMARY KEY) ENGINE=InnoDB;
-dec $i;
-}
-
-# If we set above n to 500, this test case could fail easily, because
-# the inndob buffer pool is too small, some of which would be occupied
-# by the recv*. With n=250, this test case could sporadically fail too.
-# So we have to set buffer pool size to 50M which should be enough for this
-# test case. Once we fix the bug#22179133 and bug#22186325, we should use
-# the default innodb buffer pool(or the smaller one).
-let $restart_parameters = --innodb-log-files-in-group=2 --innodb-log-file-size=4M --innodb-buffer-pool-size=50M;
---source include/kill_and_restart_mysqld.inc
-
-DROP DATABASE logtest;