summaryrefslogtreecommitdiff
path: root/mysql-test/suite/innodb
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2017-09-08 15:28:50 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2017-09-08 15:34:42 +0300
commit672590afafbaead2011dfaf26bf21634b6f640ea (patch)
tree256ca6f099d0b06fd30cc1f460b5de998af693aa /mysql-test/suite/innodb
parent13d4dfd02c1dde7508a50c0b04387a7b67b74ca2 (diff)
downloadmariadb-git-672590afafbaead2011dfaf26bf21634b6f640ea.tar.gz
Adjust the imported innodb.alter_crash test for MariaDB
trx_undo_assign_undo(): Restore the fault injection.
Diffstat (limited to 'mysql-test/suite/innodb')
-rw-r--r--mysql-test/suite/innodb/r/alter_crash.result28
-rw-r--r--mysql-test/suite/innodb/t/alter_crash.opt1
-rw-r--r--mysql-test/suite/innodb/t/alter_crash.test23
3 files changed, 27 insertions, 25 deletions
diff --git a/mysql-test/suite/innodb/r/alter_crash.result b/mysql-test/suite/innodb/r/alter_crash.result
index e1539d20a65..8de02cc5fbd 100644
--- a/mysql-test/suite/innodb/r/alter_crash.result
+++ b/mysql-test/suite/innodb/r/alter_crash.result
@@ -2,18 +2,18 @@
# Bug#20015132 ALTER TABLE FAILS TO CHECK IF TABLE IS CORRUPTED
#
CREATE TABLE t1(c1 INT PRIMARY KEY, c2 CHAR(1), c3 INT UNSIGNED) ENGINE=InnoDB;
-SET DEBUG='+d,ib_create_table_fail_too_many_trx';
+SET @saved_debug_dbug = @@SESSION.debug_dbug;
+SET DEBUG_DBUG='+d,ib_create_table_fail_too_many_trx';
ALTER TABLE t1 ADD INDEX (c2), ADD INDEX (c3);
ERROR HY000: Too many active concurrent transactions
-SET DEBUG='-d,ib_create_table_fail_too_many_trx';
+SET DEBUG_DBUG=@saved_debug_dbug;
ALTER TABLE t1 ADD INDEX (c2), ADD INDEX (c3);
-SET DEBUG='+d,dict_set_index_corrupted';
+SET DEBUG_DBUG='+d,dict_set_index_corrupted';
CHECK TABLE t1;
Table Op Msg_type Msg_text
-test.t1 check Warning InnoDB: The B-tree of index c2 is corrupted.
-test.t1 check Warning InnoDB: The B-tree of index c3 is corrupted.
+test.t1 check Warning InnoDB: Index c2 is marked as corrupted
+test.t1 check Warning InnoDB: Index c3 is marked as corrupted
test.t1 check error Corrupt
-# restart
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check Warning InnoDB: Index c2 is marked as corrupted
@@ -25,7 +25,7 @@ Table Op Msg_type Msg_text
test.t1 check Warning InnoDB: Index c3 is marked as corrupted
test.t1 check error Corrupt
ALTER TABLE t1 ADD INDEX (c2,c3);
-ERROR 42000: Can't open table
+ERROR HY000: Index c3 is corrupted
ALTER TABLE t1 CHANGE c3 c3 INT NOT NULL;
CHECK TABLE t1;
Table Op Msg_type Msg_text
@@ -40,11 +40,10 @@ DROP TABLE t1;
# just after committing the dictionary changes.
CREATE TABLE t1 (f1 INT NOT NULL, f2 INT NOT NULL) ENGINE=innodb;
INSERT INTO t1 VALUES (1,2),(3,4);
-SET DEBUG='d,innodb_alter_commit_crash_after_commit';
+SET DEBUG_DBUG='+d,innodb_alter_commit_crash_after_commit';
ALTER TABLE t1 ADD PRIMARY KEY (f2, f1);
ERROR HY000: Lost connection to MySQL server during query
# Restart mysqld after the crash and reconnect.
-# restart
# Manual *.frm recovery begin.
# Manual recovery end
FLUSH TABLES;
@@ -80,11 +79,10 @@ DROP TABLE t1;
# is not committed, the renames will not be replayed.
CREATE TABLE t2 (f1 int not null, f2 int not null) ENGINE=InnoDB;
INSERT INTO t2 VALUES (1,2),(3,4);
-SET DEBUG='d,innodb_alter_commit_crash_before_commit';
+SET DEBUG_DBUG='+d,innodb_alter_commit_crash_before_commit';
ALTER TABLE t2 ADD PRIMARY KEY (f2, f1);
ERROR HY000: Lost connection to MySQL server during query
# Startup the server after the crash
-# restart
# Read and remember the temporary table name
# Manual *.frm recovery begin. The dictionary was not updated
# and the files were not renamed. The rebuilt table
@@ -118,13 +116,13 @@ DROP TABLE t2;
# Bug#19330255 WL#7142 - CRASH DURING ALTER TABLE LEADS TO
# DATA DICTIONARY INCONSISTENCY
#
-CREATE TABLE t1(a int PRIMARY KEY, b varchar(255), c int NOT NULL);
+CREATE TABLE t1(a int PRIMARY KEY, b varchar(255), c int NOT NULL)
+ENGINE=InnoDB;
INSERT INTO t1 SET a=1,c=2;
-SET DEBUG='d,innodb_alter_commit_crash_after_commit';
-ALTER TABLE t1 ADD INDEX (b), CHANGE c d int;
+SET DEBUG_DBUG='+d,innodb_alter_commit_crash_after_commit';
+ALTER TABLE t1 ADD INDEX (b), CHANGE c d int, ALGORITHM=INPLACE;
ERROR HY000: Lost connection to MySQL server during query
# Restart mysqld after the crash and reconnect.
-# restart
# Manual *.frm recovery begin.
# Manual recovery end
FLUSH TABLES;
diff --git a/mysql-test/suite/innodb/t/alter_crash.opt b/mysql-test/suite/innodb/t/alter_crash.opt
new file mode 100644
index 00000000000..39b93371503
--- /dev/null
+++ b/mysql-test/suite/innodb/t/alter_crash.opt
@@ -0,0 +1 @@
+--loose-innodb-sys-tables
diff --git a/mysql-test/suite/innodb/t/alter_crash.test b/mysql-test/suite/innodb/t/alter_crash.test
index 5417ec88e70..54cc51aecf4 100644
--- a/mysql-test/suite/innodb/t/alter_crash.test
+++ b/mysql-test/suite/innodb/t/alter_crash.test
@@ -18,14 +18,15 @@ call mtr.add_suppression('InnoDB: Index `c[23]` .*is corrupted');
--echo #
CREATE TABLE t1(c1 INT PRIMARY KEY, c2 CHAR(1), c3 INT UNSIGNED) ENGINE=InnoDB;
-SET DEBUG='+d,ib_create_table_fail_too_many_trx';
+SET @saved_debug_dbug = @@SESSION.debug_dbug;
+SET DEBUG_DBUG='+d,ib_create_table_fail_too_many_trx';
--error ER_TOO_MANY_CONCURRENT_TRXS
ALTER TABLE t1 ADD INDEX (c2), ADD INDEX (c3);
-SET DEBUG='-d,ib_create_table_fail_too_many_trx';
+SET DEBUG_DBUG=@saved_debug_dbug;
ALTER TABLE t1 ADD INDEX (c2), ADD INDEX (c3);
# Flag the secondary indexes corrupted.
-SET DEBUG='+d,dict_set_index_corrupted';
+SET DEBUG_DBUG='+d,dict_set_index_corrupted';
CHECK TABLE t1;
# Ensure that the corruption is permanent.
@@ -35,7 +36,7 @@ ALTER TABLE t1 DROP INDEX c2;
CHECK TABLE t1;
# We refuse an ALTER TABLE that would modify the InnoDB data dictionary
# while leaving some of the table corrupted.
---error ER_CHECK_NO_SUCH_TABLE
+--error ER_INDEX_CORRUPT
ALTER TABLE t1 ADD INDEX (c2,c3);
# This will rebuild the table, uncorrupting all secondary indexes.
ALTER TABLE t1 CHANGE c3 c3 INT NOT NULL;
@@ -59,7 +60,7 @@ let datadir= `select @@datadir`;
CREATE TABLE t1 (f1 INT NOT NULL, f2 INT NOT NULL) ENGINE=innodb;
INSERT INTO t1 VALUES (1,2),(3,4);
-SET DEBUG='d,innodb_alter_commit_crash_after_commit';
+SET DEBUG_DBUG='+d,innodb_alter_commit_crash_after_commit';
let $orig_table_id = `SELECT table_id
FROM information_schema.innodb_sys_tables
@@ -118,7 +119,7 @@ DROP TABLE t1;
CREATE TABLE t2 (f1 int not null, f2 int not null) ENGINE=InnoDB;
INSERT INTO t2 VALUES (1,2),(3,4);
-SET DEBUG='d,innodb_alter_commit_crash_before_commit';
+SET DEBUG_DBUG='+d,innodb_alter_commit_crash_before_commit';
let $orig_table_id = `SELECT table_id
FROM information_schema.innodb_sys_tables
@@ -177,18 +178,20 @@ DROP TABLE t2;
--echo # DATA DICTIONARY INCONSISTENCY
--echo #
-CREATE TABLE t1(a int PRIMARY KEY, b varchar(255), c int NOT NULL);
+CREATE TABLE t1(a int PRIMARY KEY, b varchar(255), c int NOT NULL)
+ENGINE=InnoDB;
INSERT INTO t1 SET a=1,c=2;
-SET DEBUG='d,innodb_alter_commit_crash_after_commit';
+SET DEBUG_DBUG='+d,innodb_alter_commit_crash_after_commit';
let $orig_table_id = `select table_id from
information_schema.innodb_sys_tables where name = 'test/t1'`;
+# FIXME: MDEV-9469 'Incorrect key file' on ALTER TABLE
# Write file to make mysql-test-run.pl expect crash
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
-
+#
--error 2013
-ALTER TABLE t1 ADD INDEX (b), CHANGE c d int;
+ALTER TABLE t1 ADD INDEX (b), CHANGE c d int, ALGORITHM=INPLACE;
--echo # Restart mysqld after the crash and reconnect.
--source include/start_mysqld.inc