diff --git a/mysql-test/r/bad_frm_crash_5029.result b/mysql-test/r/bad_frm_crash_5029.result index 7a829c8f6ba..8aa0065f5ee 100644 --- a/mysql-test/r/bad_frm_crash_5029.result +++ b/mysql-test/r/bad_frm_crash_5029.result @@ -1,2 +1,13 @@ show create table t1; ERROR 42000: Unknown storage engine 'InnoDB' +call mtr.add_suppression("t1.frm is inconsistent: engine typecode 43, engine name Aria"); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) DEFAULT NULL, + `b` int(11) DEFAULT NULL, + `c` int(11) DEFAULT NULL, + KEY `a` (`a`), + KEY `b` (`b`) +) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 +drop table t1; diff --git a/mysql-test/std_data/mdev5029.frm b/mysql-test/std_data/mdev5029_1.frm similarity index 100% rename from mysql-test/std_data/mdev5029.frm rename to mysql-test/std_data/mdev5029_1.frm diff --git a/mysql-test/std_data/mdev5029_2.MAD b/mysql-test/std_data/mdev5029_2.MAD new file mode 100644 index 00000000000..3dcc005ec0d Binary files /dev/null and b/mysql-test/std_data/mdev5029_2.MAD differ diff --git a/mysql-test/std_data/mdev5029_2.MAI b/mysql-test/std_data/mdev5029_2.MAI new file mode 100644 index 00000000000..3533a1d705a Binary files /dev/null and b/mysql-test/std_data/mdev5029_2.MAI differ diff --git a/mysql-test/std_data/mdev5029_2.frm b/mysql-test/std_data/mdev5029_2.frm new file mode 100644 index 00000000000..d7eb677fea7 Binary files /dev/null and b/mysql-test/std_data/mdev5029_2.frm differ diff --git a/mysql-test/t/bad_frm_crash_5029.test b/mysql-test/t/bad_frm_crash_5029.test index b15c37fbc6d..858922886ab 100644 --- a/mysql-test/t/bad_frm_crash_5029.test +++ b/mysql-test/t/bad_frm_crash_5029.test @@ -4,8 +4,17 @@ # a.k.a. fail to open an frm with indexes: let $datadir=`select @@datadir`; -copy_file std_data/mdev5029.frm $datadir/test/t1.frm; + +# normal innodb table (but innodb is disabled here) +copy_file std_data/mdev5029_1.frm $datadir/test/t1.frm; --error ER_UNKNOWN_STORAGE_ENGINE show create table t1; remove_file $datadir/test/t1.frm; +# Aria table, incorrect typecode +call mtr.add_suppression("t1.frm is inconsistent: engine typecode 43, engine name Aria"); +copy_file std_data/mdev5029_2.frm $datadir/test/t1.frm; +copy_file std_data/mdev5029_2.MAI $datadir/test/t1.MAI; +copy_file std_data/mdev5029_2.MAD $datadir/test/t1.MAD; +show create table t1; +drop table t1; diff --git a/sql/table.cc b/sql/table.cc index 9e71680652a..15fbe867c15 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -1093,7 +1093,10 @@ static int open_binary_frm(THD *thd, TABLE_SHARE *share, uchar *head, plugin_data(tmp_plugin, handlerton *))) { /* bad file, legacy_db_type did not match the name */ - goto err; + sql_print_warning("%s.frm is inconsistent: engine typecode %d, engine name %s (%d)", + share->normalized_path.str, legacy_db_type, + plugin_name(tmp_plugin)->str, + ha_legacy_type(plugin_data(tmp_plugin, handlerton *))); } /* tmp_plugin is locked with a local lock.