diff options
author | unknown <lars/lthalmann@dl145j.mysql.com> | 2007-07-02 13:42:39 +0200 |
---|---|---|
committer | unknown <lars/lthalmann@dl145j.mysql.com> | 2007-07-02 13:42:39 +0200 |
commit | f00722b95e7fce173e51706d28fa3c5886d9f7e6 (patch) | |
tree | 999dba896cdd1de30a761a081f695ad4ed390607 /sql/item_sum.cc | |
parent | de0ba5c894df8f86512d025f4196d62687efb1bb (diff) | |
parent | e3a6b29b556fec051fbe7d8e61b23bf285dc2e02 (diff) | |
download | mariadb-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.cc | 21 |
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; |