Commit 07343d01 authored by unknown's avatar unknown

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).
parents 95920700 e7e49eb6
...@@ -115,6 +115,42 @@ SET myisam_repair_threads=@@global.myisam_repair_threads; ...@@ -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;
......
This diff was suppressed by a .gitattributes entry.
This diff was suppressed by a .gitattributes entry.
This diff was suppressed by a .gitattributes entry.
...@@ -113,6 +113,36 @@ SET myisam_sort_buffer_size=@@global.myisam_sort_buffer_size; ...@@ -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) ...@@ -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, ...@@ -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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment