diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2017-09-08 15:28:50 +0300 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2017-09-08 15:34:42 +0300 |
commit | 672590afafbaead2011dfaf26bf21634b6f640ea (patch) | |
tree | 256ca6f099d0b06fd30cc1f460b5de998af693aa /mysql-test/suite/innodb | |
parent | 13d4dfd02c1dde7508a50c0b04387a7b67b74ca2 (diff) | |
download | mariadb-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.result | 28 | ||||
-rw-r--r-- | mysql-test/suite/innodb/t/alter_crash.opt | 1 | ||||
-rw-r--r-- | mysql-test/suite/innodb/t/alter_crash.test | 23 |
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 |