summaryrefslogtreecommitdiff
path: root/sql/item_strfunc.cc
diff options
context:
space:
mode:
authorunknown <gluh@gluh.mysql.r18.ru>2005-03-17 16:51:07 +0300
committerunknown <gluh@gluh.mysql.r18.ru>2005-03-17 16:51:07 +0300
commit17791f95002b2f9c8cb31eed64c36f019b2edda9 (patch)
tree7107fca24e8d8dd39be0300a9e1e64d7ad8921a2 /sql/item_strfunc.cc
parent621abfacfe316df9ce06c9d046ec11f23e543ea7 (diff)
parent3e4ae65a144d8f7a63ee5f8c4d1ec65f94f35b58 (diff)
downloadmariadb-git-17791f95002b2f9c8cb31eed64c36f019b2edda9.tar.gz
Merge 4.1 -> 5.0
heap/hp_create.c: Auto merged mysql-test/mysql-test-run.sh: Auto merged mysql-test/r/ctype_utf8.result: Auto merged mysql-test/r/olap.result: Auto merged mysql-test/t/func_str.test: Auto merged sql/item.cc: Auto merged sql/item.h: Auto merged sql/item_func.cc: Auto merged sql/item_strfunc.cc: Auto merged sql/key.cc: Auto merged sql/set_var.cc: Auto merged sql/sql_select.h: Auto merged sql/sql_string.h: Auto merged client/mysqldump.c: Manual merge mysql-test/r/func_gconcat.result: Manual merge mysql-test/r/func_str.result: Manual merge mysql-test/t/func_gconcat.test: Manual merge sql/ha_heap.cc: Manual merge sql/sql_select.cc: Manual merge
Diffstat (limited to 'sql/item_strfunc.cc')
-rw-r--r--sql/item_strfunc.cc18
1 files changed, 8 insertions, 10 deletions
diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc
index a9ec7139ea7..81120bbe3f7 100644
--- a/sql/item_strfunc.cc
+++ b/sql/item_strfunc.cc
@@ -267,8 +267,7 @@ String *Item_func_concat::val_str(String *str)
current_thd->variables.max_allowed_packet);
goto null;
}
- if (!args[0]->const_item() &&
- res->alloced_length() >= res->length()+res2->length())
+ if (res->alloced_length() >= res->length()+res2->length())
{ // Use old buffer
res->append(*res2);
}
@@ -2308,12 +2307,11 @@ void Item_func_set_collation::print(String *str)
String *Item_func_charset::val_str(String *str)
{
DBUG_ASSERT(fixed == 1);
- String *res = args[0]->val_str(str);
uint dummy_errors;
- if ((null_value=(args[0]->null_value || !res->charset())))
- return 0;
- str->copy(res->charset()->csname,strlen(res->charset()->csname),
+ CHARSET_INFO *cs= args[0]->collation.collation;
+ null_value= 0;
+ str->copy(cs->csname, strlen(cs->csname),
&my_charset_latin1, collation.collation, &dummy_errors);
return str;
}
@@ -2321,12 +2319,11 @@ String *Item_func_charset::val_str(String *str)
String *Item_func_collation::val_str(String *str)
{
DBUG_ASSERT(fixed == 1);
- String *res = args[0]->val_str(str);
uint dummy_errors;
+ CHARSET_INFO *cs= args[0]->collation.collation;
- if ((null_value=(args[0]->null_value || !res->charset())))
- return 0;
- str->copy(res->charset()->name,strlen(res->charset()->name),
+ null_value= 0;
+ str->copy(cs->name, strlen(cs->name),
&my_charset_latin1, collation.collation, &dummy_errors);
return str;
}
@@ -2490,6 +2487,7 @@ String* Item_func_export_set::val_str(String* str)
uint num_set_values = 64;
ulonglong mask = 0x1;
str->length(0);
+ str->set_charset(collation.collation);
/* Check if some argument is a NULL value */
if (args[0]->null_value || args[1]->null_value || args[2]->null_value)