Commit 6560c2aa authored by unknown's avatar unknown
Browse files

Fix for memory leaks introduced with the push of patch for bug#22740.

Original patch did not have these leaks, they were introduced later
during manual applying of the patch.


sql/event_data_objects.cc:
  Original patch was not aware of the requirement to delete lex.sphead
  before doing anything else (bug#21856), and that was missed when the
  patch was applied later.
sql/event_scheduler.cc:
  The line was lost during manual patch applying.
parent 59d9b52f
Loading
Loading
Loading
Loading
+10 −5
Original line number Diff line number Diff line
@@ -1811,16 +1811,21 @@ Event_job_data::compile(THD *thd, MEM_ROOT *mem_root)
    DBUG_PRINT("error", ("error during compile or thd->is_fatal_error: %d",
                          thd->is_fatal_error));
    /*
      Free lex associated resources
      QQ: Do we really need all this stuff here?
      The first thing we do after parse error is freeing sp_head to
      ensure that we have restored original memroot.
    */
    if (lex.sphead)
    {
      /* Clean up after failed stored procedure/function */
      delete lex.sphead;
      lex.sphead= NULL;
    }
    lex.unit.cleanup();

    sql_print_error("SCHEDULER: Error during compilation of %s.%s or "
                    "thd->is_fatal_error: %d",
                    dbname.str, name.str, thd->is_fatal_error);

    lex.unit.cleanup();
    delete lex.sphead;
    sphead= lex.sphead= NULL;
    ret= EVEX_COMPILE_ERROR;
    goto done;
  }
+2 −0
Original line number Diff line number Diff line
@@ -322,6 +322,8 @@ Event_worker_thread::run(THD *thd, Event_queue_element_for_exec *event)
                          job_data->dbname.str, job_data->name.str,
                          job_data->definer.str);
  else if (ret == EVEX_MICROSECOND_UNSUP)
    sql_print_information("SCHEDULER: MICROSECOND is not supported");

end:
  delete job_data;