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.
parent 52e614c5
...@@ -1811,16 +1811,21 @@ Event_job_data::compile(THD *thd, MEM_ROOT *mem_root) ...@@ -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", DBUG_PRINT("error", ("error during compile or thd->is_fatal_error: %d",
thd->is_fatal_error)); thd->is_fatal_error));
/* /*
Free lex associated resources The first thing we do after parse error is freeing sp_head to
QQ: Do we really need all this stuff here? 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 " sql_print_error("SCHEDULER: Error during compilation of %s.%s or "
"thd->is_fatal_error: %d", "thd->is_fatal_error: %d",
dbname.str, name.str, thd->is_fatal_error); dbname.str, name.str, thd->is_fatal_error);
lex.unit.cleanup();
delete lex.sphead;
sphead= lex.sphead= NULL;
ret= EVEX_COMPILE_ERROR; ret= EVEX_COMPILE_ERROR;
goto done; goto done;
} }
......
...@@ -322,6 +322,8 @@ Event_worker_thread::run(THD *thd, Event_queue_element_for_exec *event) ...@@ -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->dbname.str, job_data->name.str,
job_data->definer.str); job_data->definer.str);
else if (ret == EVEX_MICROSECOND_UNSUP) else if (ret == EVEX_MICROSECOND_UNSUP)
sql_print_information("SCHEDULER: MICROSECOND is not supported");
end: end:
delete job_data; delete job_data;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment