summaryrefslogtreecommitdiff
path: root/sql/item_strfunc.cc
diff options
context:
space:
mode:
authorunknown <bar@bar.intranet.mysql.r18.ru>2004-03-19 12:09:14 +0400
committerunknown <bar@bar.intranet.mysql.r18.ru>2004-03-19 12:09:14 +0400
commit54735ae3a9252fa64c38f930b516e60d394e65cb (patch)
tree1f1f1a545b2c6f7acb1af5bba3abb9f779824920 /sql/item_strfunc.cc
parent8bbb6d2b42f8f7f6ce50171addc4d57c5d2c81f4 (diff)
downloadmariadb-git-54735ae3a9252fa64c38f930b516e60d394e65cb.tar.gz
Bug #3087 CONCAT_WS makes the server die in case of illegal mix of collations
Diffstat (limited to 'sql/item_strfunc.cc')
-rw-r--r--sql/item_strfunc.cc2
1 files changed, 2 insertions, 0 deletions
diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc
index 2833e1ca016..06131950ec3 100644
--- a/sql/item_strfunc.cc
+++ b/sql/item_strfunc.cc
@@ -628,9 +628,11 @@ void Item_func_concat_ws::fix_length_and_dec()
max_length=separator->max_length*(arg_count-1);
for (uint i=0 ; i < arg_count ; i++)
{
+ DTCollation tmp(collation.collation, collation.derivation);
max_length+=args[i]->max_length;
if (collation.aggregate(args[i]->collation))
{
+ collation.set(tmp); // Restore the previous value
my_coll_agg_error(collation, args[i]->collation, func_name());
break;
}