summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2017-01-25 16:05:32 +0200
committerJan Lindström <jan.lindstrom@mariadb.com>2017-01-25 18:04:04 +0200
commit1cbea1976373254a7facb5d2ce5b7a8614b969a5 (patch)
tree966ef39a504228dc02023895e4fcfef68c973972
parent09cc177de071d7e254ab610f1267f260cc549bcb (diff)
downloadmariadb-git-1cbea1976373254a7facb5d2ce5b7a8614b969a5.tar.gz
Import and adjust a test from MySQL 5.7.
-rw-r--r--mysql-test/suite/innodb/r/log_alter_table.result16
-rw-r--r--mysql-test/suite/innodb/t/log_alter_table.test51
2 files changed, 67 insertions, 0 deletions
diff --git a/mysql-test/suite/innodb/r/log_alter_table.result b/mysql-test/suite/innodb/r/log_alter_table.result
new file mode 100644
index 00000000000..f1ee61e7572
--- /dev/null
+++ b/mysql-test/suite/innodb/r/log_alter_table.result
@@ -0,0 +1,16 @@
+#
+# Bug#21801423 INNODB REDO LOG DOES NOT INDICATE WHEN
+# FILES ARE CREATED
+#
+# Bug#21796691 INNODB REDO LOG DOES NOT INDICATE WHEN
+# REDO LOGGING IS SKIPPED
+#
+CREATE TABLE t1 (a INT NOT NULL, b INT UNIQUE) ENGINE=InnoDB;
+INSERT INTO t1 VALUES (1,2);
+ALTER TABLE t1 ADD PRIMARY KEY(a), ALGORITHM=INPLACE;
+ALTER TABLE t1 DROP INDEX b, ADD INDEX (b);
+# Kill the server
+CHECK TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+DROP TABLE t1;
diff --git a/mysql-test/suite/innodb/t/log_alter_table.test b/mysql-test/suite/innodb/t/log_alter_table.test
new file mode 100644
index 00000000000..f479c6695aa
--- /dev/null
+++ b/mysql-test/suite/innodb/t/log_alter_table.test
@@ -0,0 +1,51 @@
+--source include/have_innodb.inc
+--source include/have_debug.inc
+
+# Embedded server does not support crashing
+--source include/not_embedded.inc
+
+--echo #
+--echo # Bug#21801423 INNODB REDO LOG DOES NOT INDICATE WHEN
+--echo # FILES ARE CREATED
+--echo #
+--echo # Bug#21796691 INNODB REDO LOG DOES NOT INDICATE WHEN
+--echo # REDO LOGGING IS SKIPPED
+--echo #
+--source include/no_checkpoint_start.inc
+CREATE TABLE t1 (a INT NOT NULL, b INT UNIQUE) ENGINE=InnoDB;
+# MLOG_INDEX_LOAD will not be emitted for empty tables. Insert a row.
+INSERT INTO t1 VALUES (1,2);
+# We should get two MLOG_INDEX_LOAD for this.
+ALTER TABLE t1 ADD PRIMARY KEY(a), ALGORITHM=INPLACE;
+# And one MLOG_INDEX_LOAD for this.
+ALTER TABLE t1 DROP INDEX b, ADD INDEX (b);
+
+--let CLEANUP_IF_CHECKPOINT=DROP TABLE t1;
+--source include/no_checkpoint_end.inc
+
+--let $restart_parameters= --debug=d,ib_log
+--source include/start_mysqld.inc
+
+let SEARCH_RANGE = -50000;
+let SEARCH_FILE = $MYSQLTEST_VARDIR/log/mysqld.1.err;
+let SEARCH_ABORT=NOT FOUND;
+# Look for at least one MLOG_FILE_CREATE2 in the error log.
+# Theoretically, it may have been written by this test or an earlier test.
+# FIXME: redirect the error log of the restart to a new file,
+# and ensure that we have exactly 2 records there.
+let SEARCH_PATTERN=scan .*: multi-log rec MLOG_FILE_CREATE2.*page .*:0;
+--source include/search_pattern_in_file.inc
+# Look for at least one MLOG_INDEX_LOAD in the error log.
+# Theoretically, it may have been written by this test or an earlier test.
+# FIXME: redirect the error log of the restart to a new file,
+# and ensure that we have exactly 3 records there.
+let SEARCH_PATTERN=scan .*: log rec MLOG_INDEX_LOAD;
+--source include/search_pattern_in_file.inc
+
+CHECK TABLE t1;
+
+# Remove the --debug=d,ib_log setting.
+--let $restart_parameters=
+--source include/restart_mysqld.inc
+
+DROP TABLE t1;