summaryrefslogtreecommitdiff
path: root/sql/item.cc
diff options
context:
space:
mode:
authorSergei Golubchik <sergii@pisem.net>2012-05-20 14:57:29 +0200
committerSergei Golubchik <sergii@pisem.net>2012-05-20 14:57:29 +0200
commit7f6f53a8df10c76f93848c8d06bc5af71051c525 (patch)
tree9a539823cdf05f53574fdf91941b3a242025acba /sql/item.cc
parent0e7e724d6b36b2f5b8a0604171adb750d7c82c9c (diff)
parent280fcf08085e43b5359ec79c0e34166e51b3ebd8 (diff)
downloadmariadb-git-7f6f53a8df10c76f93848c8d06bc5af71051c525.tar.gz
5.2 merge
Diffstat (limited to 'sql/item.cc')
-rw-r--r--sql/item.cc23
1 files changed, 8 insertions, 15 deletions
diff --git a/sql/item.cc b/sql/item.cc
index 4e57221c0a6..15c4cf7aadf 100644
--- a/sql/item.cc
+++ b/sql/item.cc
@@ -3362,7 +3362,7 @@ String *Item_param::val_str(String* str)
that binary log contains wrong statement
*/
-const String *Item_param::query_val_str(String* str) const
+const String *Item_param::query_val_str(THD *thd, String* str) const
{
switch (state) {
case INT_VALUE:
@@ -3400,7 +3400,8 @@ const String *Item_param::query_val_str(String* str) const
case LONG_DATA_VALUE:
{
str->length(0);
- append_query_string(value.cs_info.character_set_client, &str_value, str);
+ append_query_string(thd, value.cs_info.character_set_client, &str_value,
+ str);
break;
}
case NULL_VALUE:
@@ -3533,7 +3534,7 @@ void Item_param::print(String *str, enum_query_type query_type)
char buffer[STRING_BUFFER_USUAL_SIZE];
String tmp(buffer, sizeof(buffer), &my_charset_bin);
const String *res;
- res= query_val_str(&tmp);
+ res= query_val_str(current_thd, &tmp);
str->append(*res);
}
}
@@ -7756,20 +7757,12 @@ bool Item_insert_value::fix_fields(THD *thd, Item **items)
}
if (arg->type() == REF_ITEM)
+ arg= static_cast<Item_ref *>(arg)->ref[0];
+ if (arg->type() != FIELD_ITEM)
{
- Item_ref *ref= (Item_ref *)arg;
- if (ref->ref[0]->type() != FIELD_ITEM)
- {
- my_error(ER_BAD_FIELD_ERROR, MYF(0), "", "VALUES() function");
- return TRUE;
- }
- arg= ref->ref[0];
+ my_error(ER_BAD_FIELD_ERROR, MYF(0), "", "VALUES() function");
+ return TRUE;
}
- /*
- According to our SQL grammar, VALUES() function can reference
- only to a column.
- */
- DBUG_ASSERT(arg->type() == FIELD_ITEM);
Item_field *field_arg= (Item_field *)arg;