summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkroki/tomash@moonlight.home <>2007-01-31 21:16:48 +0300
committerkroki/tomash@moonlight.home <>2007-01-31 21:16:48 +0300
commit84ca9c72ca314f4d535593d12715c5ba2c6178e6 (patch)
tree9006bd39b52fb50dc331dbb0e3085378893f7022
parent52e614c5d4b568871fcec523e9b516eec6d48490 (diff)
downloadmariadb-git-84ca9c72ca314f4d535593d12715c5ba2c6178e6.tar.gz
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.
-rw-r--r--sql/event_data_objects.cc15
-rw-r--r--sql/event_scheduler.cc2
2 files changed, 12 insertions, 5 deletions
diff --git a/sql/event_data_objects.cc b/sql/event_data_objects.cc
index 198f6518184..b1724a28820 100644
--- a/sql/event_data_objects.cc
+++ b/sql/event_data_objects.cc
@@ -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;
}
diff --git a/sql/event_scheduler.cc b/sql/event_scheduler.cc
index 1013f5af3a8..accf2ad03be 100644
--- a/sql/event_scheduler.cc
+++ b/sql/event_scheduler.cc
@@ -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;