From: Date: November 21 2008 9:21am Subject: bzr commit into mysql-6.0 branch (ramil:2941) Bug#40054 List-Archive: http://lists.mysql.com/commits/59471 X-Bug: 40054 Message-Id: <0KAO004FXCJDHT30@fe-emea-10.sun.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7BIT #At file:///home/ram/mysql/mysql-6.0-bugteam/ 2941 Ramil Kalimullin 2008-11-21 Fix for bug#40054: 'check table .. for upgrade' doesn't detect collation change made in 6.0.{1, 6} Problem: 'CHECK TABLE ... FOR UPGRADE' did not check for incompatible collation changes made in MySQL 6.0.1 and 6.0.6. Fix: add the check. modified: sql/handler.cc per-file messages: sql/handler.cc Fix for bug#40054: 'check table .. for upgrade' doesn't detect collation change made in 6.0.{1, 6} - check for incompatible collation changes made in 6.0.1 and 6.0.6: WL #3664: latin2_czech_cs bug #25420: big5_chinese_ci cp866_general_ci gb2312_chinese_ci gbk_chinese_ci === modified file 'sql/handler.cc' --- a/sql/handler.cc 2008-11-06 18:46:03 +0000 +++ b/sql/handler.cc 2008-11-21 08:20:56 +0000 @@ -2783,7 +2783,7 @@ int handler::check_collation_compatibili { ulong mysql_version= table->s->mysql_version; - if (mysql_version < 50124) + if (mysql_version < 60006) { KEY *key= table->key_info; KEY *key_end= key + table->s->keys; @@ -2798,17 +2798,24 @@ int handler::check_collation_compatibili Field *field= table->field[key_part->fieldnr - 1]; uint cs_number= field->charset()->number; if ((mysql_version < 50048 && - (cs_number == 11 || /* ascii_general_ci - bug #29499, bug #27562 */ - cs_number == 41 || /* latin7_general_ci - bug #29461 */ - cs_number == 42 || /* latin7_general_cs - bug #29461 */ - cs_number == 20 || /* latin7_estonian_cs - bug #29461 */ - cs_number == 21 || /* latin2_hungarian_ci - bug #29461 */ - cs_number == 22 || /* koi8u_general_ci - bug #29461 */ - cs_number == 23 || /* cp1251_ukrainian_ci - bug #29461 */ + (cs_number == 11 || /* ascii_general_ci - bug #29499, bug #27562 */ + cs_number == 41 || /* latin7_general_ci - bug #29461 */ + cs_number == 42 || /* latin7_general_cs - bug #29461 */ + cs_number == 20 || /* latin7_estonian_cs - bug #29461 */ + cs_number == 21 || /* latin2_hungarian_ci - bug #29461 */ + cs_number == 22 || /* koi8u_general_ci - bug #29461 */ + cs_number == 23 || /* cp1251_ukrainian_ci - bug #29461 */ cs_number == 26)) || /* cp1250_general_ci - bug #29461 */ - (mysql_version < 50124 && - (cs_number == 33 || /* utf8_general_ci - bug #27877 */ - cs_number == 35))) /* ucs2_general_ci - bug #27877 */ + (mysql_version < 50124 && + (cs_number == 33 || /* utf8_general_ci - bug #27877 */ + cs_number == 35)) || /* ucs2_general_ci - bug #27877 */ + (mysql_version < 60001 && + (cs_number == 2)) || /* latin2_czech_cs - WL #3664 */ + (mysql_version < 60006 && + (cs_number == 1 || /* big5_chinese_ci - bug #25420 */ + cs_number == 36 || /* cp866_general_ci - bug #25420 */ + cs_number == 24 || /* gb2312_chinese_ci - bug #25420 */ + cs_number == 28))) /* gbk_chinese_ci - bug #25420 */ return HA_ADMIN_NEEDS_UPGRADE; } }