diff options
author | unknown <tsmith/tim@siva.hindu.god> | 2006-08-23 18:02:31 -0600 |
---|---|---|
committer | unknown <tsmith/tim@siva.hindu.god> | 2006-08-23 18:02:31 -0600 |
commit | b2a0d025e3f3dc2a8e9ab83634f542d50c4f99a8 (patch) | |
tree | 85b2e4bdba015b6e73f9c6b852f94f169899e51a | |
parent | 216f20ad0067a2f3f8349cff3f10355f7ea7677e (diff) | |
download | mariadb-git-b2a0d025e3f3dc2a8e9ab83634f542d50c4f99a8.tar.gz |
Bug #21531: EXPORT_SET() doesn't accept args with coercible character sets
- Fix typo in Item_func_export_set::fix_length_and_dec() which caused character set aggregation to fail
- Remove default argument from last arg of agg_arg_charsets() function, to reduce potential errors
mysql-test/r/func_misc.result:
Test EXPORT_SET() with charset coersion (bug #21531)
mysql-test/t/func_misc.test:
Test EXPORT_SET() with charset coersion (bug #21531)
sql/item_func.h:
Remove default argument from last arg of agg_arg_charsets() function, to reduce potential errors.
sql/item_strfunc.cc:
Fix typo in Item_func_export_set::fix_length_and_dec() which caused character set aggregation to fail.
-rw-r--r-- | mysql-test/r/func_misc.result | 4 | ||||
-rw-r--r-- | mysql-test/t/func_misc.test | 7 | ||||
-rw-r--r-- | sql/item_func.h | 3 | ||||
-rw-r--r-- | sql/item_strfunc.cc | 4 |
4 files changed, 13 insertions, 5 deletions
diff --git a/mysql-test/r/func_misc.result b/mysql-test/r/func_misc.result index 8bcdd8b7cbc..adf2035173f 100644 --- a/mysql-test/r/func_misc.result +++ b/mysql-test/r/func_misc.result @@ -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 diff --git a/mysql-test/t/func_misc.test b/mysql-test/t/func_misc.test index e2641f8d6cd..a7dc9e7c966 100644 --- a/mysql-test/t/func_misc.test +++ b/mysql-test/t/func_misc.test @@ -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 diff --git a/sql/item_func.h b/sql/item_func.h index 51f9d3fb36f..aaf74e4f7af 100644 --- a/sql/item_func.h +++ b/sql/item_func.h @@ -156,8 +156,7 @@ public: 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); } diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index 56a31d074ac..a43f8b5a22a 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -2624,8 +2624,8 @@ void Item_func_export_set::fix_length_and_dec() uint sep_length=(arg_count > 3 ? args[3]->max_length : 1); max_length=length*64+sep_length*63; - if (agg_arg_charsets(collation, args+1, min(4,arg_count)-1), - MY_COLL_ALLOW_CONV) + if (agg_arg_charsets(collation, args+1, min(4,arg_count)-1, + MY_COLL_ALLOW_CONV)) return; } |