diff options
author | monty@mishka.mysql.fi <> | 2003-10-03 00:40:27 +0300 |
---|---|---|
committer | monty@mishka.mysql.fi <> | 2003-10-03 00:40:27 +0300 |
commit | 989ca397b22f5296b71ad02ad8ae39d112b5de73 (patch) | |
tree | dae461536c421dd366da2962a088561908db14ce /sql/item_func.h | |
parent | 8c13c301429b9266bccd4ced398e40fe457f314e (diff) | |
download | mariadb-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.h | 40 |
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); |