• Sergey Glukhov's avatar
    Bug#47150 Assertion in Field_long::val_int() on MERGE + TRIGGER + multi-table UPDATE · 5f8bb5c5
    Sergey Glukhov authored
    The bug is not related to MERGE table or TRIGGER. More correct description
    would be 'assertion on multi-table UPDATE + NATURAL JOIN + MERGEABLE VIEW'.
    On PREPARE stage(see test case) we call mark_common_columns() func which
    creates ON condition for NATURAL JOIN and sets appropriate
    table read_set bitmaps for fields which are used in ON condition.
    On EXECUTE stage mark_common_columns() is not called, we set
    necessary read_set bitmaps in setup_conds(). But 'B.f1' field
    is already processed and related item alredy fixed before
    setup_conds() as updated field and setup_conds can not set
    read_set bitmap because of that.
    The fix is to set read_set bitmap for appropriate table field even
    if Item_direct_view_ref item which represents a refernce to this field
    is fixed.
    
    
    
    mysql-test/r/join.result:
      test result
    mysql-test/t/join.test:
      test case
    sql/item.cc:
      The bug is not related to MERGE table or TRIGGER. More correct description
      would be 'assertion on multi-table UPDATE + NATURAL JOIN + MERGEABLE VIEW'.
      On PREPARE stage(see test case) we call mark_common_columns() func which
      creates ON condition for NATURAL JOIN and sets appropriate
      table read_set bitmaps for fields which are used in ON condition.
      On EXECUTE stage mark_common_columns() is not called, we set
      necessary read_set bitmaps in setup_conds(). But 'B.f1' field
      is already processed and related item alredy fixed before
      setup_conds() as updated field and setup_conds can not set
      read_set bitmap because of that.
      The fix is to set read_set bitmap for appropriate table field even
      if Item_direct_view_ref item which represents a refernce to this field
      is fixed.
    5f8bb5c5
item.cc 208 KB