diff options
author | evgen@moonbone.local <> | 2007-01-09 23:24:56 +0300 |
---|---|---|
committer | evgen@moonbone.local <> | 2007-01-09 23:24:56 +0300 |
commit | e098f736e1adc97aa2d4a5ed5bf07c5c94d15399 (patch) | |
tree | 0ab1a8c7eb8252fde7e8c1e87dda78c7513e2ff4 /sql/item_func.h | |
parent | ac48c8bae1159e8a24a7695e86f19d9f9a89d796 (diff) | |
download | mariadb-git-e098f736e1adc97aa2d4a5ed5bf07c5c94d15399.tar.gz |
Fixed bug#16861: User defined variable can have a wrong value if a tmp table was
used.
The Item::save_in_field() function is called from fill_record() to fill the
new row with data while execution of the CREATE TABLE ... SELECT statement.
Item::save_in_field() calls val_xxx() methods in order to get values.
val_xxx() methods do not take into account the result field. Due to this
Item_func_set_user_var::val_xxx() methods returns values from the original
table, not from the temporary one.
The save_in_field() member function is added to the Item_func_set_user_var
class. It detects whether the result field should be used and properly updates
the value of the user variable.
Diffstat (limited to 'sql/item_func.h')
-rw-r--r-- | sql/item_func.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sql/item_func.h b/sql/item_func.h index c116c18bc50..68591f9c6f5 100644 --- a/sql/item_func.h +++ b/sql/item_func.h @@ -1188,6 +1188,7 @@ public: void print(String *str); void print_as_stmt(String *str); const char *func_name() const { return "set_user_var"; } + int save_in_field(Field *field, bool no_conversions); }; |