summaryrefslogtreecommitdiff
path: root/sql/item_func.h
diff options
context:
space:
mode:
authormonty@mishka.mysql.fi <>2003-10-03 00:40:27 +0300
committermonty@mishka.mysql.fi <>2003-10-03 00:40:27 +0300
commit989ca397b22f5296b71ad02ad8ae39d112b5de73 (patch)
treedae461536c421dd366da2962a088561908db14ce /sql/item_func.h
parent8c13c301429b9266bccd4ced398e40fe457f314e (diff)
downloadmariadb-git-989ca397b22f5296b71ad02ad8ae39d112b5de73.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
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);