• unknown's avatar
    BUG#21166: Prepared statement causes signal 11 on second execution · 965a3970
    unknown authored
    Changes in an item tree done by optimizer weren't properly
    registered and went unnoticed, which resulted in preliminary freeing
    of used memory.
    
    
    mysql-test/r/ps.result:
      Add result for bug#21166: Prepared statement causes signal 11
      on second execution.
    mysql-test/t/ps.test:
      Add test case for bug#21166: Prepared statement causes signal 11
      on second execution.
    sql/item.cc:
      Move Item::transform() and Item_default_value::transform() from
      item.h here and use THD::change_item_tree() instead of plain
      assignment.
      Change Item_field::set_no_const_sub() to be used with Item::walk()
      instead of Item::transform().
    sql/item.h:
      Move definition of Item::transform() and Item_default_value::transform()
      to item.cc.
      Change Item::set_no_const_sub() to be used with Item::walk()
      instead of Item::transform().
    sql/item_cmpfunc.cc:
      Use Item::walk() to execute Item::set_no_const_sub().
      Use THD::change_item_tree() instead of plain assignment.
    sql/item_func.cc:
      Add assert and comment to Item_func::traverse_cond().
    sql/item_row.cc:
      Use THD::change_item_tree() instead of plain assignment.
    sql/item_strfunc.cc:
      Move Item_func_make_set::transform() from item_strfunc.h here and use
      THD::change_item_tree() instead of plain assignment.
    sql/item_strfunc.h:
      Move definition of Item_func_make_set::transform() to item_strfunc.cc.
    965a3970
item.cc 169 KB