From 2f2607faeffb09d946e09a5f090a24449e73742b Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 7 Apr 2006 13:19:31 +0500 Subject: [PATCH] Fix for bug#18281 group_concat changes charset to binary skip charset aggregation for order columns --- mysql-test/r/func_gconcat.result | 5 +++++ mysql-test/t/func_gconcat.test | 8 ++++++++ sql/item_sum.cc | 5 ++++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/func_gconcat.result b/mysql-test/r/func_gconcat.result index f1c9f8b9f76..7889f8953f4 100644 --- a/mysql-test/r/func_gconcat.result +++ b/mysql-test/r/func_gconcat.result @@ -626,3 +626,8 @@ latin1 latin1 drop table t1, t2, t3; set names default; +create table t1 (c1 varchar(10), c2 int); +select charset(group_concat(c1 order by c2)) from t1; +charset(group_concat(c1 order by c2)) +latin1 +drop table t1; diff --git a/mysql-test/t/func_gconcat.test b/mysql-test/t/func_gconcat.test index 1b88ed90fa3..aa28c9d5f52 100644 --- a/mysql-test/t/func_gconcat.test +++ b/mysql-test/t/func_gconcat.test @@ -414,3 +414,11 @@ select charset(a) from t2; select charset(a) from t3; drop table t1, t2, t3; set names default; + +# +# Bug#18281 group_concat changes charset to binary +# +create table t1 (c1 varchar(10), c2 int); +select charset(group_concat(c1 order by c2)) from t1; +drop table t1; + diff --git a/sql/item_sum.cc b/sql/item_sum.cc index 1cd1741cea6..8826144266e 100644 --- a/sql/item_sum.cc +++ b/sql/item_sum.cc @@ -3226,7 +3226,10 @@ Item_func_group_concat::fix_fields(THD *thd, Item **ref) } if (agg_item_charsets(collation, func_name(), - args, arg_count, MY_COLL_ALLOW_CONV)) + args, + /* skip charset aggregation for order columns */ + arg_count - arg_count_order, + MY_COLL_ALLOW_CONV)) return 1; result.set_charset(collation.collation);