mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
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.
This commit is contained in:
@@ -301,7 +301,14 @@ select @var:=f2 from t1 group by f1 order by f2 desc limit 1;
|
||||
select @var;
|
||||
@var
|
||||
3
|
||||
drop table t1;
|
||||
create table t2 as select @var:=f2 from t1 group by f1 order by f2 desc limit 1;
|
||||
select * from t2;
|
||||
@var:=f2
|
||||
3
|
||||
select @var;
|
||||
@var
|
||||
3
|
||||
drop table t1,t2;
|
||||
insert into city 'blah';
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''blah'' at line 1
|
||||
SHOW COUNT(*) WARNINGS;
|
||||
|
Reference in New Issue
Block a user