Commit 2b491daa authored by Narayanan V's avatar Narayanan V

BUG#37631 - Incorrect key file for table after upgrading from 5.0 to 5.1

This patch adds corrections to the original patch
submitted 2009-04-08 (http://lists.mysql.com/commits/71607):

- fixed that the original patch didn't work because of an
  incorrect condition;
- added a test case.
parent e4d4226e
...@@ -57,6 +57,18 @@ s1 ...@@ -57,6 +57,18 @@ s1
1 1
drop table `txu@0023p@0023p1`; drop table `txu@0023p@0023p1`;
drop table `txu#p#p1`; drop table `txu#p#p1`;
#
# Bug#37631 Incorrect key file for table after upgrading from 5.0 to 5.1
#
# copy table created using mysql4.0 into the data dir
# check the table created using mysql 4.0
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check error Table upgrade required. Please do "REPAIR TABLE `t1`" or dump/reload to fix it!
# query the table created using mysql 4.0
SELECT * FROM t1;
c1 c2 c3
DROP TABLE t1;
truncate t1; truncate t1;
drop table t1; drop table t1;
drop database if exists `tabc`; drop database if exists `tabc`;
......
...@@ -48,6 +48,20 @@ select * from `txu#p#p1`; ...@@ -48,6 +48,20 @@ select * from `txu#p#p1`;
drop table `txu@0023p@0023p1`; drop table `txu@0023p@0023p1`;
drop table `txu#p#p1`; drop table `txu#p#p1`;
--echo #
--echo # Bug#37631 Incorrect key file for table after upgrading from 5.0 to 5.1
--echo #
--echo # copy table created using mysql4.0 into the data dir
let $MYSQLD_DATADIR= `SELECT @@datadir`;
copy_file std_data/bug37631.frm $MYSQLD_DATADIR/test/t1.frm;
copy_file std_data/bug37631.MYD $MYSQLD_DATADIR/test/t1.MYD;
copy_file std_data/bug37631.MYI $MYSQLD_DATADIR/test/t1.MYI;
--echo # check the table created using mysql 4.0
CHECK TABLE t1;
--echo # query the table created using mysql 4.0
SELECT * FROM t1;
DROP TABLE t1;
# #
# Check if old tables work # Check if old tables work
# #
......
...@@ -392,7 +392,7 @@ int check_definition(MI_KEYDEF *t1_keyinfo, MI_COLUMNDEF *t1_recinfo, ...@@ -392,7 +392,7 @@ int check_definition(MI_KEYDEF *t1_keyinfo, MI_COLUMNDEF *t1_recinfo,
test(t2_keyinfo[i].flag & HA_SPATIAL))); test(t2_keyinfo[i].flag & HA_SPATIAL)));
DBUG_RETURN(1); DBUG_RETURN(1);
} }
if ((mysql_40_compat && if ((!mysql_40_compat &&
t1_keyinfo[i].key_alg != t2_keyinfo[i].key_alg) || t1_keyinfo[i].key_alg != t2_keyinfo[i].key_alg) ||
t1_keyinfo[i].keysegs != t2_keyinfo[i].keysegs) t1_keyinfo[i].keysegs != t2_keyinfo[i].keysegs)
{ {
...@@ -424,7 +424,7 @@ int check_definition(MI_KEYDEF *t1_keyinfo, MI_COLUMNDEF *t1_recinfo, ...@@ -424,7 +424,7 @@ int check_definition(MI_KEYDEF *t1_keyinfo, MI_COLUMNDEF *t1_recinfo,
t1_keysegs_j__type= HA_KEYTYPE_VARBINARY1; /* purecov: inspected */ t1_keysegs_j__type= HA_KEYTYPE_VARBINARY1; /* purecov: inspected */
} }
if ((mysql_40_compat && if ((!mysql_40_compat &&
t1_keysegs[j].language != t2_keysegs[j].language) || t1_keysegs[j].language != t2_keysegs[j].language) ||
t1_keysegs_j__type != t2_keysegs[j].type || t1_keysegs_j__type != t2_keysegs[j].type ||
t1_keysegs[j].null_bit != t2_keysegs[j].null_bit || t1_keysegs[j].null_bit != t2_keysegs[j].null_bit ||
......
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