summaryrefslogtreecommitdiff
path: root/sql/item_func.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/item_func.cc')
-rw-r--r--sql/item_func.cc62
1 files changed, 48 insertions, 14 deletions
diff --git a/sql/item_func.cc b/sql/item_func.cc
index bff7c9a6bf3..7bc8f2954da 100644
--- a/sql/item_func.cc
+++ b/sql/item_func.cc
@@ -287,13 +287,19 @@ void Item_func::print(String *str)
{
str->append(func_name());
str->append('(');
+ print_args(str);
+ str->append(')');
+}
+
+
+void Item_func::print_args(String *str)
+{
for (uint i=0 ; i < arg_count ; i++)
{
if (i)
str->append(',');
args[i]->print(str);
}
- str->append(')');
}
@@ -464,18 +470,18 @@ String *Item_num_op::val_str(String *str)
void Item_func_signed::print(String *str)
{
- str->append("cast(");
+ str->append("cast(", 5);
args[0]->print(str);
- str->append("as signed)");
+ str->append(" as signed)", 11);
}
void Item_func_unsigned::print(String *str)
{
- str->append("cast(");
+ str->append("cast(", 5);
args[0]->print(str);
- str->append("as unsigned)");
+ str->append(" as unsigned)", 13);
}
@@ -1202,6 +1208,21 @@ longlong Item_func_locate::val_int()
}
+void Item_func_locate::print(String *str)
+{
+ str->append("locate(", 7);
+ args[1]->print(str);
+ str->append(',');
+ args[0]->print(str);
+ if (arg_count == 3)
+ {
+ str->append(',');
+ args[2]->print(str);
+ }
+ str->append(')');
+}
+
+
longlong Item_func_field::val_int()
{
if (cmp_type == STRING_RESULT)
@@ -1782,7 +1803,7 @@ void item_user_lock_release(ULL *ull)
String tmp(buf,sizeof(buf), system_charset_info);
tmp.copy(command, strlen(command), tmp.charset());
tmp.append(ull->key,ull->key_length);
- tmp.append("\")");
+ tmp.append("\")", 2);
Query_log_event qev(current_thd, tmp.ptr(), tmp.length(),1);
qev.error_code=0; // this query is always safe to run on slave
mysql_bin_log.write(&qev);
@@ -2067,6 +2088,19 @@ longlong Item_func_benchmark::val_int()
}
+void Item_func_benchmark::print(String *str)
+{
+ str->append("benchmark(", 10);
+ char buffer[20];
+ // latin1 is good enough for numbers
+ String st(buffer, sizeof(buffer), &my_charset_latin1);
+ st.set((ulonglong)loop_count, &my_charset_latin1);
+ str->append(st);
+ str->append(',');
+ args[0]->print(str);
+ str->append(')');
+}
+
#define extra_size sizeof(double)
static user_var_entry *get_variable(HASH *hash, LEX_STRING &name,
@@ -2405,9 +2439,9 @@ String *Item_func_set_user_var::val_str(String *str)
void Item_func_set_user_var::print(String *str)
{
- str->append("(@@",3);
- str->append(name.str,name.length);
- str->append(":=",2);
+ str->append("(@", 2);
+ str->append(name.str, name.length);
+ str->append(":=", 2);
args[0]->print(str);
str->append(')');
}
@@ -2553,7 +2587,7 @@ enum Item_result Item_func_get_user_var::result_type() const
void Item_func_get_user_var::print(String *str)
{
- str->append('@');
+ str->append("(@", 2);
str->append(name.str,name.length);
str->append(')');
}
@@ -2840,7 +2874,7 @@ double Item_func_match::val()
void Item_func_match::print(String *str)
{
- str->append("(match ");
+ str->append("(match ", 7);
List_iterator_fast<Item> li(fields);
Item *item;
bool first= 1;
@@ -2852,11 +2886,11 @@ void Item_func_match::print(String *str)
str->append(',');
item->print(str);
}
- str->append(" against (");
+ str->append(" against (", 10);
args[0]->print(str);
if (mode == FT_BOOL)
- str->append(" in boolean mode");
- str->append("))");
+ str->append(" in boolean mode", 16);
+ str->append("))", 2);
}
longlong Item_func_bit_xor::val_int()