summaryrefslogtreecommitdiff
path: root/sql/item_func.h
diff options
context:
space:
mode:
authorunknown <monty@mishka.mysql.fi>2003-10-03 00:40:27 +0300
committerunknown <monty@mishka.mysql.fi>2003-10-03 00:40:27 +0300
commit2985e91acd78841fac42b298cea19c7332895eb9 (patch)
treedae461536c421dd366da2962a088561908db14ce /sql/item_func.h
parent904dee7a9774510b3b5992d86981b0f467d8fe3c (diff)
downloadmariadb-git-2985e91acd78841fac42b298cea19c7332895eb9.tar.gz
Optimized code for setting user variables with := and fixed some bugs in old code (Bug #1194)
Use forced close of socket to make mysqld shutdown faster when used under valgrind mysql-test/mysql-test-run.sh: Added --skip-bdb for valgrind mysql-test/r/user_var.result: Extended test for user variables mysql-test/t/user_var.test: Extended test for user variables sql/item_func.cc: Optimized code for setting user variables with := and fixed some bugs in old code sql/item_func.h: Optimized code for setting user variables sql/log.cc: Fixed comments sql/mysqld.cc: Use forced close of socket to make mysqld shutdown faster when used under valgrind sql/sql_class.h: Optimized code for setting user variables
Diffstat (limited to 'sql/item_func.h')
-rw-r--r--sql/item_func.h40
1 files changed, 5 insertions, 35 deletions
diff --git a/sql/item_func.h b/sql/item_func.h
index ffc587c3cf3..09aba9694dd 100644
--- a/sql/item_func.h
+++ b/sql/item_func.h
@@ -888,45 +888,16 @@ class Item_func_set_user_var :public Item_func
enum Item_result cached_result_type;
LEX_STRING name;
user_var_entry *entry;
-
- double native_val()
- {
- double value=args[0]->val();
- update_hash((void*) &value,sizeof(value), REAL_RESULT);
- return value;
- }
-
- longlong native_val_int()
- {
- longlong value=args[0]->val_int();
- update_hash((void*) &value,sizeof(longlong),INT_RESULT);
- return value;
- }
-
- String *native_val_str(String *str)
- {
- char buffer[MAX_FIELD_WIDTH];
- String *res=args[0]->val_str(str);
- if (!res) // Null value
- update_hash((void*) 0,0,STRING_RESULT);
- else
- update_hash(res->c_ptr(),res->length()+1,STRING_RESULT);
- return res;
- }
-
- String *native_val_str()
- {
- char buffer[MAX_FIELD_WIDTH];
- String tmp(buffer,sizeof(buffer));
- return native_val_str(&tmp);
- }
+ char buffer[MAX_FIELD_WIDTH];
+ String value;
public:
- Item_func_set_user_var(LEX_STRING a,Item *b): Item_func(b), name(a) {}
+ Item_func_set_user_var(LEX_STRING a,Item *b):
+ Item_func(b), name(a), value(buffer,sizeof(buffer)) {}
double val();
longlong val_int();
String *val_str(String *str);
- void update_hash(void *ptr, uint length, enum Item_result type);
+ bool update_hash(const void *ptr, uint length, enum Item_result type);
bool update();
enum Item_result result_type () const { return cached_result_type; }
bool fix_fields(THD *thd,struct st_table_list *tables);
@@ -945,7 +916,6 @@ class Item_func_get_user_var :public Item_func
public:
Item_func_get_user_var(LEX_STRING a):
Item_func(), name(a) {}
- user_var_entry *get_entry();
double val();
longlong val_int();
String *val_str(String* str);