• unknown's avatar
    Fixed bug#16861: User defined variable can have a wrong value if a tmp table was · f094fe55
    unknown authored
    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.
    
    
    sql/item_func.cc:
      Bug#16861: User defined variable can have a wrong value if a tmp table was used.
      Added the save_in_field() member function to the Item_func_set_user_var class.
    sql/item_func.h:
      Bug#16861: User defined variable can have a wrong value if a tmp table was used.
      Added the save_in_field() member function to the Item_func_set_user_var class.
    mysql-test/r/user_var.result:
      Extended the test case for bug#18681: User defined variable can have a wrong value if
      a tmp table was used.
    mysql-test/t/user_var.test:
      Extended the test case for bug#18681: User defined variable can have a wrong value if
      a tmp table was used.
    f094fe55
item_func.h 39.8 KB