call mtr.add_suppression("character set is multi-byte"); drop table if exists t1; create table t1 SELECT 1,"table 1"; repair table t1 use_frm; Table Op Msg_type Msg_text test.t1 repair warning Number of rows changed from 0 to 1 test.t1 repair status OK alter table t1 ENGINE=HEAP; repair table t1 use_frm; Table Op Msg_type Msg_text test.t1 repair note The storage engine for the table doesn't support repair drop table t1; create table t1(id int PRIMARY KEY, st varchar(10), KEY st_key(st)); insert into t1 values(1, "One"); alter table t1 disable keys; show keys from t1; Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Ignored t1 0 PRIMARY 1 id A 1 NULL NULL BTREE NO t1 1 st_key 1 st A NULL NULL NULL YES BTREE disabled NO repair table t1 extended; Table Op Msg_type Msg_text test.t1 repair status OK show keys from t1; Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Ignored t1 0 PRIMARY 1 id A 1 NULL NULL BTREE NO t1 1 st_key 1 st A NULL NULL NULL YES BTREE disabled NO drop table t1; repair table t1 use_frm; Table Op Msg_type Msg_text test.t1 repair Error Table 'test.t1' doesn't exist test.t1 repair status Operation failed create table t1 engine=myisam SELECT 1,"table 1"; flush tables; repair table t1; Table Op Msg_type Msg_text test.t1 repair Error Incorrect file format 't1' test.t1 repair error Corrupt repair table t1 use_frm; Table Op Msg_type Msg_text test.t1 repair warning Number of rows changed from 0 to 1 test.t1 repair status OK drop table t1; CREATE TABLE t1(a INT, KEY(a)); INSERT INTO t1 VALUES(1),(2),(3),(4),(5); SET myisam_repair_threads=2; REPAIR TABLE t1; Table Op Msg_type Msg_text test.t1 repair status OK SHOW INDEX FROM t1; Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Ignored t1 1 a 1 a A 5 NULL NULL YES BTREE NO SET myisam_repair_threads=@@global.myisam_repair_threads; DROP TABLE t1; CREATE TABLE t1(a INT); USE mysql; REPAIR TABLE test.t1 USE_FRM; Table Op Msg_type Msg_text test.t1 repair status OK USE test; DROP TABLE t1; CREATE TABLE t1(a CHAR(255), KEY(a)); SET myisam_sort_buffer_size=4096; INSERT INTO t1 VALUES ('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'), ('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'), ('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'), ('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'), ('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'), ('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'), ('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'), ('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'), ('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'), ('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'), ('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'), ('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'), ('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'), ('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'), ('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'), ('0'),('0'),('0'),('0'),('0'),('0'),('0'); SET myisam_repair_threads=2; REPAIR TABLE t1; Table Op Msg_type Msg_text test.t1 repair error myisam_sort_buffer_size is too small. X test.t1 repair warning Number of rows changed from 0 to 157 test.t1 repair status OK SET myisam_repair_threads=@@global.myisam_repair_threads; SET myisam_sort_buffer_size=@@global.myisam_sort_buffer_size; DROP TABLE t1; CREATE TABLE t1(a CHAR(255), KEY(a)); SET myisam_sort_buffer_size=4496; INSERT INTO t1 VALUES ('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'), ('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'), ('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'), ('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'), ('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'), ('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'), ('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'), ('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'), ('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'), ('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'), ('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'), ('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'), ('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'), ('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'), ('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'), ('0'),('0'),('0'),('0'),('0'),('0'),('0'); SET myisam_repair_threads=2; REPAIR TABLE t1; Table Op Msg_type Msg_text test.t1 repair status OK SET myisam_repair_threads=@@global.myisam_repair_threads; SET myisam_sort_buffer_size=@@global.myisam_sort_buffer_size; DROP TABLE t1; # End of 4.1 tests # Test with a saved table from 4.1 SHOW TABLE STATUS LIKE 't1'; Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment Max_index_length Temporary t1 MyISAM 9 Fixed 2 5 10 21474836479 1024 0 NULL # # NULL latin1_swedish_ci NULL 17179868160 N SELECT * FROM t1; id 1 2 # Run CHECK TABLE, it should indicate table need a REPAIR TABLE CHECK TABLE t1 FOR UPGRADE; Table Op Msg_type Msg_text test.t1 check error Upgrade required. Please do "REPAIR TABLE `t1`" or dump/reload to fix it! # REPAIR old table USE_FRM should fail REPAIR TABLE t1 USE_FRM; Table Op Msg_type Msg_text test.t1 repair warning Number of rows changed from 0 to 1 test.t1 repair status OK # Run REPAIR TABLE to upgrade .frm file REPAIR TABLE t1; Table Op Msg_type Msg_text test.t1 repair status OK SHOW TABLE STATUS LIKE 't1'; Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment Max_index_length Temporary t1 MyISAM 10 Fixed 1 7 7 1970324836974591 1024 0 NULL # # NULL latin1_swedish_ci NULL 17179868160 N SELECT * FROM t1; id 1 REPAIR TABLE t1 USE_FRM; Table Op Msg_type Msg_text test.t1 repair warning Number of rows changed from 0 to 1 test.t1 repair status OK SELECT * FROM t1; id 1 DROP TABLE t1; # End of 5.0 tests DROP TABLE IF EXISTS tt1; CREATE TEMPORARY TABLE tt1 (c1 INT); REPAIR TABLE tt1 USE_FRM; Table Op Msg_type Msg_text tt1 repair error Cannot repair temporary table from .frm file DROP TABLE tt1; # # Bug #48248 assert in MDL_ticket::upgrade_shared_lock_to_exclusive # DROP TABLE IF EXISTS t1; CREATE TABLE t1(a INT); LOCK TABLES t1 READ; REPAIR TABLE t1; Table Op Msg_type Msg_text test.t1 repair Error Table 't1' was locked with a READ lock and can't be updated test.t1 repair status Operation failed UNLOCK TABLES; DROP TABLE t1; # # Test for bug #50784 "MDL: Assertion `m_tickets.is_empty() || # m_tickets.front() == m_trans_sentinel'" # drop tables if exists t1, t2; create table t1 (i int); create table t2 (j int); set @@autocommit= 0; repair table t1, t2; Table Op Msg_type Msg_text test.t1 repair status OK test.t2 repair status OK set @@autocommit= default; drop tables t1, t2; # # Check that we have decent error messages when using crashed # .frm file from MySQL 3.23 # # Test with a saved table from 3.23 SET @save_global_character_set_server= @@global.character_set_server; set @@global.character_set_server=@@character_set_server; select count(*) from t1; ERROR HY000: Got error 190 "Incompatible key or row definition between the MariaDB .frm file and the information in the storage engine. You may have retry " from storage engine MyISAM check table t1; Table Op Msg_type Msg_text test.t1 check Error Got error 190 "Incompatible key or row definition between the MariaDB .frm file and the information in the storage engine. You may have retry " from storage engine MyISAM test.t1 check error Corrupt repair table t1; Table Op Msg_type Msg_text test.t1 repair Error Got error 190 "Incompatible key or row definition between the MariaDB .frm file and the information in the storage engine. You may have retry " from storage engine MyISAM test.t1 repair error Corrupt repair table t1 use_frm; Table Op Msg_type Msg_text test.t1 repair status OK select count(*) from t1; count(*) 0 check table t1; Table Op Msg_type Msg_text test.t1 check status OK drop table t1; set @@global.character_set_server=@save_global_character_set_server; create table t1 (a blob); create view v1 as select * from t1; repair view v1; Table Op Msg_type Msg_text test.v1 repair status OK drop view v1; drop table t1; # End of 5.5 tests CREATE TABLE t1 (i INT) ENGINE=MyISAM; INSERT t1 VALUES (1); LOCK TABLE t1 WRITE; REPAIR TABLE t1; Table Op Msg_type Msg_text test.t1 repair status OK SELECT * FROM INFORMATION_SCHEMA.TABLES; SELECT * FROM t1; i 1 UNLOCK TABLES; DROP TABLE t1; # End of 10.0 tests create table t1 (a int, b varchar(200)); insert t1 select seq, repeat(200, seq) from seq_1_to_30; delete from t1 where a % 13 = 0; repair table t1 use_frm; Table Op Msg_type Msg_text test.t1 repair warning Number of rows changed from 0 to 28 test.t1 repair status OK delete from t1 where a % 11 = 0; repair table t1 extended use_frm; Table Op Msg_type Msg_text test.t1 repair warning Number of rows changed from 0 to 26 test.t1 repair status OK delete from t1 where a % 7 = 0; set myisam_repair_threads = 2; repair table t1 use_frm; Table Op Msg_type Msg_text test.t1 repair warning Number of rows changed from 0 to 22 test.t1 repair status OK set myisam_repair_threads = default; drop table t1; # End of 10.2 tests