• Andrei Elkin's avatar
    Bug#14275000 · e3c8fb4a
    Andrei Elkin authored
    Fixes for BUG11761686 left a flaw that managed to slip away from testing.
    Only effective filtering branch was actually tested with a regression test
    added to rpl_filter_tables_not_exist.
    The reason of the failure is destuction of too early mem-root-allocated memory 
    at the end of the deferred User-var's do_apply_event().
    
    Fixed with bypassing free_root() in the deferred execution branch.
    Deallocation of created in do_apply_event() items is done by the base code
    through THD::cleanup_after_query() -> free_items() that the parent Query
    can't miss.
    
    
    
    sql/log_event.cc:
      Do not call free_root() in case the deferred User-var event.
      Necessary methods to the User-var class are added, do_apply_event() refined.
    sql/log_event.h:
      Necessary methods to avoid destoying mem-root-based memory at
      User-var applying are defined.
    e3c8fb4a
log_event.h 119 KB