Loading mysql-test/r/ctype_ucs.result +43 −0 Original line number Diff line number Diff line Loading @@ -722,3 +722,46 @@ id MIN(s) 1 ZZZ 2 ZZZ DROP TABLE t1; drop table if exists bug20536; set names latin1; create table bug20536 (id bigint not null auto_increment primary key, name varchar(255) character set ucs2 not null); insert into `bug20536` (`id`,`name`) values (1, _latin1 x'74657374311a'), (2, "'test\\_2'"); select md5(name) from bug20536; md5(name) 3417d830fe24ffb2f81a28e54df2d1b3 48d95db0d8305c2fe11548a3635c9385 select sha1(name) from bug20536; sha1(name) 72228a6d56efb7a89a09543068d5d8fa4c330881 677d4d505355eb5b0549b865fcae4b7f0c28aef5 select make_set(3, name, upper(name)) from bug20536; make_set(3, name, upper(name)) test1,TEST1 'test\_2','TEST\_2' select export_set(5, name, upper(name)) from bug20536; export_set(5, name, upper(name)) test1,TEST1,test1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1 'test\_2','TEST\_2','test\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2' select export_set(5, name, upper(name), ",", 5) from bug20536; export_set(5, name, upper(name), ",", 5) test1,TEST1,test1,TEST1,TEST1 'test\_2','TEST\_2','test\_2','TEST\_2','TEST\_2' select password(name) from bug20536; password(name) ???????????????????? ???????????????????? select old_password(name) from bug20536; old_password(name) ???????? ???????? select encrypt(name, 'SALT') from bug20536; encrypt(name, 'SALT') SA5pDi1UPZdys SA5pDi1UPZdys select quote(name) from bug20536; quote(name) ?????????? ???????????????? drop table bug20536; End of 4.1 tests mysql-test/r/func_misc.result +4 −0 Original line number Diff line number Diff line Loading @@ -93,3 +93,7 @@ SELECT IS_USED_LOCK('bug16501'); IS_USED_LOCK('bug16501') NULL DROP TABLE t1; select export_set(3, _latin1'foo', _utf8'bar', ',', 4); export_set(3, _latin1'foo', _utf8'bar', ',', 4) foo,foo,bar,bar End of 4.1 tests mysql-test/t/ctype_ucs.test +40 −1 Original line number Diff line number Diff line Loading @@ -463,4 +463,43 @@ INSERT INTO t1 VALUES (1, 'ZZZZZ'), (1, 'ZZZ'), (2, 'ZZZ'), (2, 'ZZZZZ'); SELECT id, MIN(s) FROM t1 GROUP BY id; DROP TABLE t1; # End of 4.1 tests # # Bug #20536: md5() with GROUP BY and UCS2 return different results on myisam/innodb # --disable_warnings drop table if exists bug20536; --enable_warnings set names latin1; create table bug20536 (id bigint not null auto_increment primary key, name varchar(255) character set ucs2 not null); insert into `bug20536` (`id`,`name`) values (1, _latin1 x'74657374311a'), (2, "'test\\_2'"); select md5(name) from bug20536; select sha1(name) from bug20536; select make_set(3, name, upper(name)) from bug20536; select export_set(5, name, upper(name)) from bug20536; select export_set(5, name, upper(name), ",", 5) from bug20536; # Some broken functions: add these tests just to document current behavior. # PASSWORD and OLD_PASSWORD don't work with UCS2 strings, but to fix it would # not be backwards compatible in all cases, so it's best to leave it alone select password(name) from bug20536; select old_password(name) from bug20536; # ENCRYPT relies on OS function crypt() which takes a NUL-terminated string; it # doesn't return good results for strings with embedded 0 bytes. It won't be # fixed unless we choose to re-implement the crypt() function ourselves to take # an extra size_t string_length argument. select encrypt(name, 'SALT') from bug20536; # QUOTE doesn't work with UCS2 data. It would require a total rewrite # of Item_func_quote::val_str(), which isn't worthwhile until UCS2 is # supported fully as a client character set. select quote(name) from bug20536; drop table bug20536; --echo End of 4.1 tests mysql-test/t/func_misc.test +6 −1 Original line number Diff line number Diff line Loading @@ -83,4 +83,9 @@ connection default; DROP TABLE t1; # End of 4.1 tests # # Bug #21531: EXPORT_SET() doesn't accept args with coercible character sets # select export_set(3, _latin1'foo', _utf8'bar', ',', 4); --echo End of 4.1 tests sql/item_func.h +1 −2 Original line number Diff line number Diff line Loading @@ -159,8 +159,7 @@ class Item_func :public Item_result_field return agg_item_collations_for_comparison(c, func_name(), items, nitems, flags); } bool agg_arg_charsets(DTCollation &c, Item **items, uint nitems, uint flags= 0) bool agg_arg_charsets(DTCollation &c, Item **items, uint nitems, uint flags) { return agg_item_charsets(c, func_name(), items, nitems, flags); } Loading Loading
mysql-test/r/ctype_ucs.result +43 −0 Original line number Diff line number Diff line Loading @@ -722,3 +722,46 @@ id MIN(s) 1 ZZZ 2 ZZZ DROP TABLE t1; drop table if exists bug20536; set names latin1; create table bug20536 (id bigint not null auto_increment primary key, name varchar(255) character set ucs2 not null); insert into `bug20536` (`id`,`name`) values (1, _latin1 x'74657374311a'), (2, "'test\\_2'"); select md5(name) from bug20536; md5(name) 3417d830fe24ffb2f81a28e54df2d1b3 48d95db0d8305c2fe11548a3635c9385 select sha1(name) from bug20536; sha1(name) 72228a6d56efb7a89a09543068d5d8fa4c330881 677d4d505355eb5b0549b865fcae4b7f0c28aef5 select make_set(3, name, upper(name)) from bug20536; make_set(3, name, upper(name)) test1,TEST1 'test\_2','TEST\_2' select export_set(5, name, upper(name)) from bug20536; export_set(5, name, upper(name)) test1,TEST1,test1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1 'test\_2','TEST\_2','test\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2' select export_set(5, name, upper(name), ",", 5) from bug20536; export_set(5, name, upper(name), ",", 5) test1,TEST1,test1,TEST1,TEST1 'test\_2','TEST\_2','test\_2','TEST\_2','TEST\_2' select password(name) from bug20536; password(name) ???????????????????? ???????????????????? select old_password(name) from bug20536; old_password(name) ???????? ???????? select encrypt(name, 'SALT') from bug20536; encrypt(name, 'SALT') SA5pDi1UPZdys SA5pDi1UPZdys select quote(name) from bug20536; quote(name) ?????????? ???????????????? drop table bug20536; End of 4.1 tests
mysql-test/r/func_misc.result +4 −0 Original line number Diff line number Diff line Loading @@ -93,3 +93,7 @@ SELECT IS_USED_LOCK('bug16501'); IS_USED_LOCK('bug16501') NULL DROP TABLE t1; select export_set(3, _latin1'foo', _utf8'bar', ',', 4); export_set(3, _latin1'foo', _utf8'bar', ',', 4) foo,foo,bar,bar End of 4.1 tests
mysql-test/t/ctype_ucs.test +40 −1 Original line number Diff line number Diff line Loading @@ -463,4 +463,43 @@ INSERT INTO t1 VALUES (1, 'ZZZZZ'), (1, 'ZZZ'), (2, 'ZZZ'), (2, 'ZZZZZ'); SELECT id, MIN(s) FROM t1 GROUP BY id; DROP TABLE t1; # End of 4.1 tests # # Bug #20536: md5() with GROUP BY and UCS2 return different results on myisam/innodb # --disable_warnings drop table if exists bug20536; --enable_warnings set names latin1; create table bug20536 (id bigint not null auto_increment primary key, name varchar(255) character set ucs2 not null); insert into `bug20536` (`id`,`name`) values (1, _latin1 x'74657374311a'), (2, "'test\\_2'"); select md5(name) from bug20536; select sha1(name) from bug20536; select make_set(3, name, upper(name)) from bug20536; select export_set(5, name, upper(name)) from bug20536; select export_set(5, name, upper(name), ",", 5) from bug20536; # Some broken functions: add these tests just to document current behavior. # PASSWORD and OLD_PASSWORD don't work with UCS2 strings, but to fix it would # not be backwards compatible in all cases, so it's best to leave it alone select password(name) from bug20536; select old_password(name) from bug20536; # ENCRYPT relies on OS function crypt() which takes a NUL-terminated string; it # doesn't return good results for strings with embedded 0 bytes. It won't be # fixed unless we choose to re-implement the crypt() function ourselves to take # an extra size_t string_length argument. select encrypt(name, 'SALT') from bug20536; # QUOTE doesn't work with UCS2 data. It would require a total rewrite # of Item_func_quote::val_str(), which isn't worthwhile until UCS2 is # supported fully as a client character set. select quote(name) from bug20536; drop table bug20536; --echo End of 4.1 tests
mysql-test/t/func_misc.test +6 −1 Original line number Diff line number Diff line Loading @@ -83,4 +83,9 @@ connection default; DROP TABLE t1; # End of 4.1 tests # # Bug #21531: EXPORT_SET() doesn't accept args with coercible character sets # select export_set(3, _latin1'foo', _utf8'bar', ',', 4); --echo End of 4.1 tests
sql/item_func.h +1 −2 Original line number Diff line number Diff line Loading @@ -159,8 +159,7 @@ class Item_func :public Item_result_field return agg_item_collations_for_comparison(c, func_name(), items, nitems, flags); } bool agg_arg_charsets(DTCollation &c, Item **items, uint nitems, uint flags= 0) bool agg_arg_charsets(DTCollation &c, Item **items, uint nitems, uint flags) { return agg_item_charsets(c, func_name(), items, nitems, flags); } Loading