summaryrefslogtreecommitdiff
path: root/sql/item_sum.cc
diff options
context:
space:
mode:
authorunknown <lars/lthalmann@dl145j.mysql.com>2007-07-02 13:42:39 +0200
committerunknown <lars/lthalmann@dl145j.mysql.com>2007-07-02 13:42:39 +0200
commitf00722b95e7fce173e51706d28fa3c5886d9f7e6 (patch)
tree999dba896cdd1de30a761a081f695ad4ed390607 /sql/item_sum.cc
parentde0ba5c894df8f86512d025f4196d62687efb1bb (diff)
parente3a6b29b556fec051fbe7d8e61b23bf285dc2e02 (diff)
downloadmariadb-git-f00722b95e7fce173e51706d28fa3c5886d9f7e6.tar.gz
Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-5.1-new-rpl
into mysql.com:/nfsdisk1/lars/MERGE/mysql-5.1-merge mysql-test/t/disabled.def: Auto merged sql/item_sum.cc: Auto merged sql/sql_base.cc: Auto merged sql/sql_yacc.yy: Auto merged include/my_base.h: Manual merge main->rpl 5.1 mysql-test/t/innodb.test: Manual merge main->rpl 5.1
Diffstat (limited to 'sql/item_sum.cc')
-rw-r--r--sql/item_sum.cc21
1 files changed, 21 insertions, 0 deletions
diff --git a/sql/item_sum.cc b/sql/item_sum.cc
index e2d4c02d986..0fa46d231a9 100644
--- a/sql/item_sum.cc
+++ b/sql/item_sum.cc
@@ -3230,6 +3230,27 @@ Item_func_group_concat::fix_fields(THD *thd, Item **ref)
null_value= 1;
max_length= thd->variables.group_concat_max_len;
+ uint32 offset;
+ if (separator->needs_conversion(separator->length(), separator->charset(),
+ collation.collation, &offset))
+ {
+ uint32 buflen= collation.collation->mbmaxlen * separator->length();
+ uint errors, conv_length;
+ char *buf;
+ String *new_separator;
+
+ if (!(buf= (char*) thd->stmt_arena->alloc(buflen)) ||
+ !(new_separator= new(thd->stmt_arena->mem_root)
+ String(buf, buflen, collation.collation)))
+ return TRUE;
+
+ conv_length= copy_and_convert(buf, buflen, collation.collation,
+ separator->ptr(), separator->length(),
+ separator->charset(), &errors);
+ new_separator->length(conv_length);
+ separator= new_separator;
+ }
+
if (check_sum_func(thd, ref))
return TRUE;