1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-01 03:47:19 +03:00

Fix for bug#37527: mysqlcheck fails to report entire database

when InnoDB frm file corruption

Problem: mysqlcheck runs 'SHOW FULL TABLE' queries to get table lists.
The query may fail for some reasons (e.g. null .frm file) then
mysqlcheck doesn't process the database tables.

Fix: try to run 'SHOW TABLES' if 'SHOW FULL TABLES' failed.


client/mysqlcheck.c:
  Fix for bug#37527: mysqlcheck fails to report entire database 
  when InnoDB frm file corruption
    - run "SHOW TABLES" query if "SHOW /*!50002 FULL*/ TABLES" failed;
    - print error info if both failed.
mysql-test/r/mysqlcheck.result:
  Fix for bug#37527: mysqlcheck fails to report entire database 
  when InnoDB frm file corruption
    - test result.
mysql-test/t/mysqlcheck.test:
  Fix for bug#37527: mysqlcheck fails to report entire database 
  when InnoDB frm file corruption
    - test case.
This commit is contained in:
Ramil Kalimullin
2008-11-14 11:40:46 +04:00
parent f5583481e3
commit e3de8d361e
3 changed files with 34 additions and 2 deletions

View File

@ -63,4 +63,11 @@ Table Op Msg_type Msg_text
test.v1 check status OK
information_schema.routines check note The storage engine for the table doesn't support check
drop view v1;
CREATE TABLE t1(a INT);
CREATE TABLE t2(a INT);
test.t1
Error : Incorrect information in file: './test/t1.frm'
error : Corrupt
test.t2 OK
DROP TABLE t1, t2;
End of 5.0 tests

View File

@ -65,4 +65,24 @@ create view v1 as select * from information_schema.routines;
check table v1, information_schema.routines;
drop view v1;
#
# Bug#37527: mysqlcheck fails to report entire database
# when frm file corruption
#
CREATE TABLE t1(a INT);
CREATE TABLE t2(a INT);
# backup then null t1.frm
--copy_file $MYSQLTEST_VARDIR/master-data/test/t1.frm $MYSQLTEST_VARDIR/master-data/test/t1.frm.bak
--remove_file $MYSQLTEST_VARDIR/master-data/test/t1.frm
--write_file $MYSQLTEST_VARDIR/master-data/test/t1.frm
EOF
--exec $MYSQL_CHECK test
# restore t1.frm
--remove_file $MYSQLTEST_VARDIR/master-data/test/t1.frm
--copy_file $MYSQLTEST_VARDIR/master-data/test/t1.frm.bak $MYSQLTEST_VARDIR/master-data/test/t1.frm
--remove_file $MYSQLTEST_VARDIR/master-data/test/t1.frm.bak
DROP TABLE t1, t2;
--echo End of 5.0 tests