From f0eb8f153d55305e43a43e6fa604418fc406fd48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Lindstr=C3=B6m?= Date: Mon, 8 May 2017 12:04:08 +0300 Subject: [PATCH] MDEV-12628: innodb.innodb_bug14147491 sporadically fails in buildbot due to wrong error number Actual error number returned from the query depends what point corrupted page is accessed, is it accessed when we read one of the pages for result set or is it accessed during background page read. --- .../suite/innodb/r/innodb_bug14147491.result | 15 +++++---------- .../suite/innodb/t/innodb_bug14147491.test | 16 ++++++++-------- 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/mysql-test/suite/innodb/r/innodb_bug14147491.result b/mysql-test/suite/innodb/r/innodb_bug14147491.result index fc5b7e75142..40b9c7515c2 100644 --- a/mysql-test/suite/innodb/r/innodb_bug14147491.result +++ b/mysql-test/suite/innodb/r/innodb_bug14147491.result @@ -6,17 +6,12 @@ INSERT INTO t1 (b) VALUES ('corrupt me'); # Corrupt the table Munged a string. Munged a string. -# The below SELECT query will return that table is not -# in engine because table is corrupted +# Now t1 is corrupted but we should not crash SELECT * FROM t1; -ERROR 42S02: Table 'test.t1' doesn't exist in engine +Got one of the listed errors INSERT INTO t1(b) VALUES('abcdef'); -ERROR 42S02: Table 'test.t1' doesn't exist in engine +Got one of the listed errors UPDATE t1 set b = 'deadbeef' where a = 1; -ERROR 42S02: Table 'test.t1' doesn't exist in engine -CHECK TABLE t1; -Table Op Msg_type Msg_text -test.t1 check Error Table 'test.t1' doesn't exist in engine -test.t1 check status Operation failed -# Cleanup +Got one of the listed errors +# Cleanup, this must be possible DROP TABLE t1; diff --git a/mysql-test/suite/innodb/t/innodb_bug14147491.test b/mysql-test/suite/innodb/t/innodb_bug14147491.test index a09eb796aa5..4bfcff02560 100644 --- a/mysql-test/suite/innodb/t/innodb_bug14147491.test +++ b/mysql-test/suite/innodb/t/innodb_bug14147491.test @@ -11,6 +11,8 @@ call mtr.add_suppression("InnoDB: Table `test`.`t1` is corrupted. Please drop the table and recreate."); call mtr.add_suppression("InnoDB: Cannot open table test/t1 from the internal data dictionary of InnoDB though the .frm file for the table exists. Please refer to http://dev.mysql.com/doc/refman/5.7/en/innodb-troubleshooting.html for how to resolve the issue."); call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed file read of tablespace test/t1 page \[page id: space=[0-9]+, page number=[0-9]+\]. You may have to recover from a backup."); +call mtr.add_suppression("InnoDB: We detected index corruption in an InnoDB type table.*"); +call mtr.add_suppression("mysqld: Index for table 't1' is corrupt; try to repair it"); --enable_query_log --echo # Create and populate the table to be corrupted @@ -63,18 +65,16 @@ EOF --source include/start_mysqld.inc ---echo # The below SELECT query will return that table is not ---echo # in engine because table is corrupted ---error ER_NO_SUCH_TABLE_IN_ENGINE +--echo # Now t1 is corrupted but we should not crash + +--error 1030,1712,1932 SELECT * FROM t1; ---error ER_NO_SUCH_TABLE_IN_ENGINE +--error 126,1030,1034,1712,1932 INSERT INTO t1(b) VALUES('abcdef'); ---error ER_NO_SUCH_TABLE_IN_ENGINE +--error 1030,1712,1932 UPDATE t1 set b = 'deadbeef' where a = 1; -CHECK TABLE t1; - ---echo # Cleanup +--echo # Cleanup, this must be possible DROP TABLE t1;