diff options
-rw-r--r-- | mysql-test/r/ctype_utf8.result | 3 | ||||
-rw-r--r-- | mysql-test/t/ctype_utf8.test | 8 | ||||
-rw-r--r-- | sql/field.cc | 7 |
3 files changed, 16 insertions, 2 deletions
diff --git a/mysql-test/r/ctype_utf8.result b/mysql-test/r/ctype_utf8.result index 6c11dd210aa..b8ca99fe8f1 100644 --- a/mysql-test/r/ctype_utf8.result +++ b/mysql-test/r/ctype_utf8.result @@ -240,3 +240,6 @@ select 'zвася' rlike '[[:<:]]вася[[:>:]]'; select 'zвасяz' rlike '[[:<:]]вася[[:>:]]'; 'zвасяz' rlike '[[:<:]]вася[[:>:]]' 0 +CREATE TABLE t1 (a enum ('Y', 'N') DEFAULT 'N' COLLATE utf8_unicode_ci); +ALTER TABLE t1 ADD COLUMN b CHAR(20); +DROP TABLE t1; diff --git a/mysql-test/t/ctype_utf8.test b/mysql-test/t/ctype_utf8.test index 6a504a8533a..07baee1b3bd 100644 --- a/mysql-test/t/ctype_utf8.test +++ b/mysql-test/t/ctype_utf8.test @@ -157,3 +157,11 @@ select ' вася ' rlike '[[:<:]]вася[[:>:]]'; select 'васяz' rlike '[[:<:]]вася[[:>:]]'; select 'zвася' rlike '[[:<:]]вася[[:>:]]'; select 'zвасяz' rlike '[[:<:]]вася[[:>:]]'; + +# +# Bug #4555 +# ALTER TABLE crashes mysqld with enum column collated utf8_unicode_ci +# +CREATE TABLE t1 (a enum ('Y', 'N') DEFAULT 'N' COLLATE utf8_unicode_ci); +ALTER TABLE t1 ADD COLUMN b CHAR(20); +DROP TABLE t1; diff --git a/sql/field.cc b/sql/field.cc index 26c84575b4d..c96a5a6d809 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -5625,8 +5625,11 @@ bool Field_enum::eq_def(Field *field) if (typelib->count < from_lib->count) return 0; for (uint i=0 ; i < from_lib->count ; i++) - if (my_strcasecmp(field_charset, - typelib->type_names[i],from_lib->type_names[i])) + if (my_strnncoll(field_charset, + (const uchar*)typelib->type_names[i], + strlen(typelib->type_names[i]), + (const uchar*)from_lib->type_names[i], + strlen(from_lib->type_names[i]))) return 0; return 1; } |