summaryrefslogtreecommitdiff
path: root/sql/event_scheduler.cc
diff options
context:
space:
mode:
authorunknown <kostja@vajra.(none)>2007-04-05 20:47:22 +0400
committerunknown <kostja@vajra.(none)>2007-04-05 20:47:22 +0400
commitff452d050a78083b878260f8d2393016503ae0cb (patch)
tree8ca3fb500b914b5ecd4542a6d38a8a4c49bd22c1 /sql/event_scheduler.cc
parenta36054f4201568fac1717b451040ffa7925900a2 (diff)
downloadmariadb-git-ff452d050a78083b878260f8d2393016503ae0cb.tar.gz
Post-merge and post-review fixes for the patch for
Bug#23631 "Events: SHOW VARIABLES doesn't work when mysql.event is damaged: mysql-test/r/events.result: Update results (a post-merge fix) mysql-test/r/events_bugs.result: Update results (a post-merge fix) mysql-test/r/events_scheduling.result: Update results (a post-merge fix) mysql-test/t/events_scheduling.test: Make sure this test has no races. sql/event_data_objects.cc: Manual post-merge fix for the events replication patch. sql/event_data_objects.h: A post-merge fix. sql/event_db_repository.cc: A post-merge fix. sql/event_scheduler.cc: We should drop the event inside ::execute since there we have the right credentials to do so (otherwise Events::drop_event returns "access denied" error). sql/events.cc: A post-review fix for: rename start_or_stop_event_scheduler to switch_event_scheduler_state. sql/events.h: A post-review fix for: rename start_or_stop_event_scheduler to switch_event_scheduler_state. sql/set_var.cc: A post-review fix for: rename start_or_stop_event_scheduler to switch_event_scheduler_state. sql/sql_yacc.yy: Remove unused declaratoins.
Diffstat (limited to 'sql/event_scheduler.cc')
-rw-r--r--sql/event_scheduler.cc23
1 files changed, 1 insertions, 22 deletions
diff --git a/sql/event_scheduler.cc b/sql/event_scheduler.cc
index a9a93cbc74b..fa5cde9a43a 100644
--- a/sql/event_scheduler.cc
+++ b/sql/event_scheduler.cc
@@ -309,7 +309,7 @@ Event_worker_thread::run(THD *thd, Event_queue_element_for_exec *event)
thd->enable_slow_log= TRUE;
- ret= job_data->execute(thd);
+ ret= job_data->execute(thd, event->dropped);
print_warnings(thd, job_data);
@@ -338,27 +338,6 @@ Event_worker_thread::run(THD *thd, Event_queue_element_for_exec *event)
end:
delete job_data;
- if (event->dropped)
- {
- sql_print_information("Event Scheduler: Dropping %s.%s",
- event->dbname.str, event->name.str);
- /*
- Using db_repository can lead to a race condition because we access
- the table without holding LOCK_metadata.
- Scenario:
- 1. CREATE EVENT xyz AT ... (conn thread)
- 2. execute xyz (worker)
- 3. CREATE EVENT XYZ EVERY ... (conn thread)
- 4. drop xyz (worker)
- 5. XYZ was just created on disk but `drop xyz` of the worker dropped it.
- A consequent load to create Event_queue_element will fail.
-
- If all operations are performed under LOCK_metadata there is no such
- problem. However, this comes at the price of introduction bi-directional
- association between class Events and class Event_worker_thread.
- */
- Events::drop_event(thd, event->dbname, event->name, FALSE);
- }
DBUG_PRINT("info", ("Done with Event %s.%s", event->dbname.str,
event->name.str));