• unknown's avatar
    An attempt to fix a sporadic valgrind memory leak in Event Scheduler: · c1b6e128
    unknown authored
    streamline the event worker thread work flow and try to eliminate
    possibilities for memory corruptions that might have been
    lurking in previous (complicated) code.
    This patch: 
     * removes Event_job_data::compile that was never used
     * cleans up Event_job_data::execute to minimize juggling with
       thread context and eliminate unneded code paths
     * Implements Security_context::change/restore_security_context
       to be able to re-use these methods in all stored programs
    This is to maybe fix Bug#27733 "Valgrind failures in 
    remove_table_from_cache".
    Review comments applied.
    
    
    sql/event_data_objects.cc:
      Remove Event_job_data::compile, which was never used without
      Event_job_data::execute().
      Merge the implementation of compile() with Event_job_data::execute().
      Reuse existing functions to prepare the event worker thread
      for execution instead of some previously copy-pasted code.
      Do not change and restore the current database inside 
      Event_job_data::execute(), just set the current database in the 
      thread, that is enough to parse and execute an event.
    sql/event_data_objects.h:
      Update declarations.
    sql/event_scheduler.cc:
      Allocate Event_job_data on stack.
    sql/item_func.cc:
      Update to match the new declaration of restore_security_context()
    sql/sp_head.cc:
      Update to match the new declaration of 
      change/restore_security_context()
    sql/sql_class.cc:
      Move change/restore_security_context to class Security_context.
      Add more comments.
    sql/sql_class.h:
      Make change/restore_security_context methods of Security_context.
      That allows us to reuse them in Event Scheduler (instead of a
      copy-paste presently used there).
    sql/sql_trigger.cc:
      Update to match the new declaration of 
      change/restore_security_context()
    c1b6e128
event_data_objects.h 5.19 KB