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;
|
SET myisam_sort_buffer_size=@@global.myisam_sort_buffer_size;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
End of 4.1 tests
|
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;
|
DROP TABLE IF EXISTS tt1;
|
||||||
CREATE TEMPORARY TABLE tt1 (c1 INT);
|
CREATE TEMPORARY TABLE tt1 (c1 INT);
|
||||||
REPAIR TABLE tt1 USE_FRM;
|
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;
|
DROP TABLE t1;
|
||||||
|
|
||||||
--echo End of 4.1 tests
|
--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
|
# 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);
|
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
|
- 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,
|
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
|
like ISAM or MyISAM. We assume fixed order of engine file name
|
||||||
|
Loading…
x
Reference in New Issue
Block a user