Merge host.loc:/work/bugs/5.0-bugteam-36055
into host.loc:/work/bk/5.1-bugteam sql/handler.cc: Auto merged mysql-test/r/repair.result: Merge with 5.0-bugteam (bug#36055). mysql-test/t/repair.test: Merge with 5.0-bugteam (bug#36055). sql/sql_table.cc: Merge with 5.0-bugteam (bug#36055).
This commit is contained in:
commit
07343d013f
@ -115,6 +115,42 @@ 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
|
||||
t1 MyISAM 9 Fixed 2 5 10 21474836479 1024 0 NULL # # NULL latin1_swedish_ci NULL
|
||||
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 Table upgrade required. Please do "REPAIR TABLE `t1`" to fix it!
|
||||
# REPAIR old table USE_FRM should fail
|
||||
REPAIR TABLE t1 USE_FRM;
|
||||
Table Op Msg_type Msg_text
|
||||
t1 repair error Failed reparing incompatible .FRM file
|
||||
# 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
|
||||
t1 MyISAM 10 Fixed 2 7 14 1970324836974591 1024 0 NULL # # NULL latin1_swedish_ci NULL
|
||||
SELECT * FROM t1;
|
||||
id
|
||||
1
|
||||
2
|
||||
REPAIR TABLE t1 USE_FRM;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 repair warning Number of rows changed from 0 to 2
|
||||
test.t1 repair status OK
|
||||
SELECT * FROM t1;
|
||||
id
|
||||
1
|
||||
2
|
||||
DROP TABLE t1;
|
||||
DROP TABLE IF EXISTS tt1;
|
||||
CREATE TEMPORARY TABLE tt1 (c1 INT);
|
||||
REPAIR TABLE tt1 USE_FRM;
|
||||
|
BIN
mysql-test/std_data/bug36055.MYD
Normal file
BIN
mysql-test/std_data/bug36055.MYD
Normal file
Binary file not shown.
BIN
mysql-test/std_data/bug36055.MYI
Normal file
BIN
mysql-test/std_data/bug36055.MYI
Normal file
Binary file not shown.
BIN
mysql-test/std_data/bug36055.frm
Normal file
BIN
mysql-test/std_data/bug36055.frm
Normal file
Binary file not shown.
@ -113,6 +113,36 @@ SET myisam_sort_buffer_size=@@global.myisam_sort_buffer_size;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 4.1 tests
|
||||
|
||||
#
|
||||
# BUG#36055 - mysql_upgrade doesn't really 'upgrade' tables
|
||||
#
|
||||
|
||||
--echo # Test with a saved table from 4.1
|
||||
--copy_file std_data/bug36055.frm $MYSQLTEST_VARDIR/master-data/test/t1.frm
|
||||
--copy_file std_data/bug36055.MYD $MYSQLTEST_VARDIR/master-data/test/t1.MYD
|
||||
--copy_file std_data/bug36055.MYI $MYSQLTEST_VARDIR/master-data/test/t1.MYI
|
||||
|
||||
--replace_column 12 # 13 #
|
||||
SHOW TABLE STATUS LIKE 't1';
|
||||
SELECT * FROM t1;
|
||||
|
||||
--echo # Run CHECK TABLE, it should indicate table need a REPAIR TABLE
|
||||
CHECK TABLE t1 FOR UPGRADE;
|
||||
|
||||
--echo # REPAIR old table USE_FRM should fail
|
||||
REPAIR TABLE t1 USE_FRM;
|
||||
|
||||
--echo # Run REPAIR TABLE to upgrade .frm file
|
||||
REPAIR TABLE t1;
|
||||
--replace_column 12 # 13 #
|
||||
SHOW TABLE STATUS LIKE 't1';
|
||||
SELECT * FROM t1;
|
||||
|
||||
REPAIR TABLE t1 USE_FRM;
|
||||
SELECT * FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
# End of 5.0 tests
|
||||
|
||||
#
|
||||
|
@ -2738,6 +2738,8 @@ int handler::ha_check_for_upgrade(HA_CHECK_OPT *check_opt)
|
||||
}
|
||||
}
|
||||
}
|
||||
if (table->s->frm_version != FRM_VER_TRUE_VARCHAR)
|
||||
return HA_ADMIN_NEEDS_ALTER;
|
||||
return check_for_upgrade(check_opt);
|
||||
}
|
||||
|
||||
|
@ -4021,6 +4021,13 @@ static int prepare_for_repair(THD *thd, TABLE_LIST *table_list,
|
||||
- Run a normal repair using the new index file and the old data file
|
||||
*/
|
||||
|
||||
if (table->s->frm_version != FRM_VER_TRUE_VARCHAR)
|
||||
{
|
||||
error= send_check_errmsg(thd, table_list, "repair",
|
||||
"Failed reparing incompatible .FRM file");
|
||||
goto end;
|
||||
}
|
||||
|
||||
/*
|
||||
Check if this is a table type that stores index and data separately,
|
||||
like ISAM or MyISAM. We assume fixed order of engine file name
|
||||
|
Loading…
x
Reference in New Issue
Block a user