diff options
author | Narayanan V <v.narayanan@sun.com> | 2009-04-30 18:16:49 +0530 |
---|---|---|
committer | Narayanan V <v.narayanan@sun.com> | 2009-04-30 18:16:49 +0530 |
commit | db83fda90d704c14770ecaa4f6dd9be9501e834b (patch) | |
tree | 6a25256782b5cdcc9013222598cd798ff4f2db42 | |
parent | 755d312e8456da751f432fd0e9c211dc4aeba131 (diff) | |
download | mariadb-git-db83fda90d704c14770ecaa4f6dd9be9501e834b.tar.gz |
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.
mysql-test/r/upgrade.result:
Bug#37631 Incorrect key file for table after upgrading from 5.0 to 5.1
Result file for test case
mysql-test/std_data/bug37631.MYD:
Bug#37631 Incorrect key file for table after upgrading from 5.0 to 5.1
table created in mysql 4.0
mysql-test/std_data/bug37631.MYI:
Bug#37631 Incorrect key file for table after upgrading from 5.0 to 5.1
table created in mysql 4.0
mysql-test/std_data/bug37631.frm:
Bug#37631 Incorrect key file for table after upgrading from 5.0 to 5.1
table created in mysql 4.0
mysql-test/t/upgrade.test:
Bug#37631 Incorrect key file for table after upgrading from 5.0 to 5.1
Adds test for checking that upgrade works
on a table which is created by a mysql
server version <= 4.0.
storage/myisam/ha_myisam.cc:
Bug#37631 Incorrect key file for table after upgrading from 5.0 to 5.1
Fix the conformance checker to relax checking
for the correct version of the tables (for tables
created by mysql server version <= 4.0)
-rw-r--r-- | mysql-test/r/upgrade.result | 12 | ||||
-rw-r--r-- | mysql-test/std_data/bug37631.MYD | 0 | ||||
-rw-r--r-- | mysql-test/std_data/bug37631.MYI | bin | 0 -> 1024 bytes | |||
-rw-r--r-- | mysql-test/std_data/bug37631.frm | bin | 0 -> 8590 bytes | |||
-rw-r--r-- | mysql-test/t/upgrade.test | 14 | ||||
-rw-r--r-- | storage/myisam/ha_myisam.cc | 4 |
6 files changed, 28 insertions, 2 deletions
diff --git a/mysql-test/r/upgrade.result b/mysql-test/r/upgrade.result index 711e69094f7..da6201692a9 100644 --- a/mysql-test/r/upgrade.result +++ b/mysql-test/r/upgrade.result @@ -57,6 +57,18 @@ s1 1 drop table `txu@0023p@0023p1`; 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; drop table t1; drop database if exists `tabc`; diff --git a/mysql-test/std_data/bug37631.MYD b/mysql-test/std_data/bug37631.MYD new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/mysql-test/std_data/bug37631.MYD diff --git a/mysql-test/std_data/bug37631.MYI b/mysql-test/std_data/bug37631.MYI Binary files differnew file mode 100644 index 00000000000..8bf14b46add --- /dev/null +++ b/mysql-test/std_data/bug37631.MYI diff --git a/mysql-test/std_data/bug37631.frm b/mysql-test/std_data/bug37631.frm Binary files differnew file mode 100644 index 00000000000..2742a387c38 --- /dev/null +++ b/mysql-test/std_data/bug37631.frm diff --git a/mysql-test/t/upgrade.test b/mysql-test/t/upgrade.test index e096b6520a1..d571a2efc7c 100644 --- a/mysql-test/t/upgrade.test +++ b/mysql-test/t/upgrade.test @@ -48,6 +48,20 @@ select * from `txu#p#p1`; drop table `txu@0023p@0023p1`; 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 # diff --git a/storage/myisam/ha_myisam.cc b/storage/myisam/ha_myisam.cc index dd66c255475..a939a263a0f 100644 --- a/storage/myisam/ha_myisam.cc +++ b/storage/myisam/ha_myisam.cc @@ -392,7 +392,7 @@ int check_definition(MI_KEYDEF *t1_keyinfo, MI_COLUMNDEF *t1_recinfo, test(t2_keyinfo[i].flag & HA_SPATIAL))); DBUG_RETURN(1); } - if ((mysql_40_compat && + if ((!mysql_40_compat && t1_keyinfo[i].key_alg != t2_keyinfo[i].key_alg) || t1_keyinfo[i].keysegs != t2_keyinfo[i].keysegs) { @@ -424,7 +424,7 @@ int check_definition(MI_KEYDEF *t1_keyinfo, MI_COLUMNDEF *t1_recinfo, 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__type != t2_keysegs[j].type || t1_keysegs[j].null_bit != t2_keysegs[j].null_bit || |