Commit 134138bb authored by unknown's avatar unknown

Bug#29850: Wrong charset of GROUP_CONCAT result when the select employs

a temporary table.

The result string of the Item_func_group_concat wasn't initialized in the 
copying constructor of the Item_func_group_concat class. This led to a
wrong charset of GROUP_CONCAT result when the select employs a temporary
table.

The copying constructor of the Item_func_group_concat class now correctly
initializes the charset of the result string.


mysql-test/t/func_gconcat.test:
  Added a test case for the bug#29850: Wrong charset of the GROUP_CONCAT result
  when the select employs a temporary table.
mysql-test/r/func_gconcat.result:
  Added a test case for the bug#29850: Wrong charset of the GROUP_CONCAT result
  when the select employs a temporary table.
sql/item_sum.cc:
  Bug#29850: Wrong charset of GROUP_CONCAT result when the select employs
  a temporary table.
  The copying constructor of the Item_func_group_concat class now correctly
  initializes the charset of the result string.
parent efcdfc8f
...@@ -810,4 +810,13 @@ LENGTH( GROUP_CONCAT( a ) ) ...@@ -810,4 +810,13 @@ LENGTH( GROUP_CONCAT( a ) )
65535 65535
SET group_concat_max_len= DEFAULT; SET group_concat_max_len= DEFAULT;
DROP TABLE t1, t2, t3; DROP TABLE t1, t2, t3;
set names latin1;
create table t1 (id int, name varchar(20)) DEFAULT CHARSET=utf8;
insert into t1 (id, name) values (1, "ra");
insert into t1 (id, name) values (2, "ra");
select b.id, group_concat(b.name) from t1 a, t1 b group by b.id;
id group_concat(b.name)
1 ra,ra
2 ra,ra
drop table t1;
End of 5.0 tests End of 5.0 tests
...@@ -551,4 +551,15 @@ SELECT LENGTH( GROUP_CONCAT( a ) ) FROM t3 WHERE b = 3; ...@@ -551,4 +551,15 @@ SELECT LENGTH( GROUP_CONCAT( a ) ) FROM t3 WHERE b = 3;
SET group_concat_max_len= DEFAULT; SET group_concat_max_len= DEFAULT;
DROP TABLE t1, t2, t3; DROP TABLE t1, t2, t3;
#
# Bug#29850: Wrong charset of the GROUP_CONCAT result when the select employs
# a temporary table.
#
set names latin1;
create table t1 (id int, name varchar(20)) DEFAULT CHARSET=utf8;
insert into t1 (id, name) values (1, "ra");
insert into t1 (id, name) values (2, "ra");
select b.id, group_concat(b.name) from t1 a, t1 b group by b.id;
drop table t1;
--echo End of 5.0 tests --echo End of 5.0 tests
...@@ -3068,6 +3068,7 @@ Item_func_group_concat::Item_func_group_concat(THD *thd, ...@@ -3068,6 +3068,7 @@ Item_func_group_concat::Item_func_group_concat(THD *thd,
original(item) original(item)
{ {
quick_group= item->quick_group; quick_group= item->quick_group;
result.set_charset(collation.collation);
} }
......
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