Commit b2a0d025 authored by unknown's avatar unknown

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.
parent 216f20ad
......@@ -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
......@@ -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
......@@ -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);
}
......
......@@ -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;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment