• Sergey Petrunya's avatar
    MDEV-5600: Wrong result on 2nd execution of PS depending on the length of the query · 097b6440
    Sergey Petrunya authored
    - Item_direct_view_ref didn't clear its pointer to item_equal in ::cleanup.
    - Some Item_direct_view_ref objects have statement lifetime (i.e. they
      survive across multiple EXECUTE commands). Item_equal objects live only for
      the duration of one EXECUTE. This caused Item_direct_view_ref to have a stale pointer,
      which could cause all sorts of effects. (In this bug's testcase it was pointing to
      the wrong Item_equal, causing wrong query result)
    - Fixed by doing what Item_field::cleanup() does - don't keep item_equal pointer value.
    - There is no testcase because the only testcase I've got is highly fragile (e.g. the
      bug will not show up if @@datadir is of the wrong length).
    097b6440
item.h 128 KB