diff options
-rw-r--r-- | sql/event_data_objects.cc | 2 | ||||
-rw-r--r-- | sql/event_db_repository.cc | 2 | ||||
-rw-r--r-- | sql/events.cc | 84 | ||||
-rw-r--r-- | sql/events.h | 20 | ||||
-rw-r--r-- | sql/mysqld.cc | 8 |
5 files changed, 59 insertions, 57 deletions
diff --git a/sql/event_data_objects.cc b/sql/event_data_objects.cc index 4b72c7e55a7..228f1a4ff4a 100644 --- a/sql/event_data_objects.cc +++ b/sql/event_data_objects.cc @@ -1304,7 +1304,7 @@ Event_timed::drop(THD *thd) DBUG_ENTER("Event_timed::drop"); DBUG_RETURN(Events::get_instance()-> - db_repository.drop_event(thd, dbname, name, false, &tmp)); + db_repository->drop_event(thd, dbname, name, false, &tmp)); } diff --git a/sql/event_db_repository.cc b/sql/event_db_repository.cc index 96d2b6c957f..fc771b6bac3 100644 --- a/sql/event_db_repository.cc +++ b/sql/event_db_repository.cc @@ -271,7 +271,7 @@ evex_db_find_event_by_name(THD *thd, const LEX_STRING dbname, const LEX_STRING ev_name, TABLE *table) { - return Events::get_instance()->db_repository. + return Events::get_instance()->db_repository-> find_event_by_name(thd, dbname, ev_name, table); } diff --git a/sql/events.cc b/sql/events.cc index a5af196af2a..21da9a2fd8a 100644 --- a/sql/events.cc +++ b/sql/events.cc @@ -258,7 +258,7 @@ int Events::open_event_table(THD *thd, enum thr_lock_type lock_type, TABLE **table) { - return db_repository.open_event_table(thd, lock_type, table); + return db_repository->open_event_table(thd, lock_type, table); } @@ -292,7 +292,7 @@ Events::create_event(THD *thd, Event_timed *et, Event_parse_data *parse_data, DBUG_PRINT("enter", ("name: %*s options:%d", et->name.length, et->name.str, create_options)); - if (!(ret= db_repository. + if (!(ret= db_repository-> create_event(thd, et, create_options & HA_LEX_CREATE_IF_NOT_EXISTS, rows_affected))) @@ -340,7 +340,7 @@ Events::update_event(THD *thd, Event_timed *et, Event_parse_data *parse_data, crash later in the code when loading and compiling the new definition. Also on error conditions my_error() is called so no need to handle here */ - if (!(ret= db_repository.update_event(thd, et, new_name))) + if (!(ret= db_repository->update_event(thd, et, new_name))) { Event_scheduler *scheduler= Event_scheduler::get_instance(); if (scheduler->initialized() && @@ -376,7 +376,7 @@ Events::drop_event(THD *thd, sp_name *name, bool drop_if_exists, DBUG_ENTER("Events::drop_event"); - if (!(ret= db_repository.drop_event(thd, name->m_db, name->m_name, + if (!(ret= db_repository->drop_event(thd, name->m_db, name->m_name, drop_if_exists, rows_affected))) { Event_scheduler *scheduler= Event_scheduler::get_instance(); @@ -411,7 +411,7 @@ Events::show_create_event(THD *thd, sp_name *spn) DBUG_PRINT("enter", ("name: %*s", spn->m_name.length, spn->m_name.str)); thd->reset_n_backup_open_tables_state(&backup); - ret= db_repository.find_event(thd, spn, &et, NULL, thd->mem_root); + ret= db_repository->find_event(thd, spn, &et, NULL, thd->mem_root); thd->restore_backup_open_tables_state(&backup); if (!ret) @@ -484,7 +484,7 @@ Events::drop_schema_events(THD *thd, char *db) Event_scheduler *scheduler= Event_scheduler::get_instance(); ret= scheduler->drop_schema_events(thd, db_lex); - ret= db_repository.drop_schema_events(thd, db_lex); + ret= db_repository->drop_schema_events(thd, db_lex); DBUG_RETURN(ret); } @@ -510,15 +510,14 @@ Events::init() int ret= 0; Event_db_repository *db_repo; DBUG_ENTER("Events::init"); - db_repo= &get_instance()->db_repository; - db_repo->init_repository(); + db_repository->init_repository(); /* it should be an assignment! */ if (opt_event_scheduler) { Event_scheduler *scheduler= Event_scheduler::get_instance(); DBUG_ASSERT(opt_event_scheduler == 1 || opt_event_scheduler == 2); - DBUG_RETURN(scheduler->init(db_repo) || + DBUG_RETURN(scheduler->init(db_repository) || (opt_event_scheduler == 1? scheduler->start(): scheduler->start_suspended())); } @@ -540,19 +539,53 @@ void Events::deinit() { DBUG_ENTER("Events::deinit"); + Event_scheduler *scheduler= Event_scheduler::get_instance(); if (scheduler->initialized()) { scheduler->stop(); scheduler->destroy(); } - get_instance()->db_repository.deinit_repository(); + + db_repository->deinit_repository(); DBUG_VOID_RETURN; } /* + Inits Events mutexes + + SYNOPSIS + Events::init_mutexes() + thd Thread +*/ + +void +Events::init_mutexes() +{ + db_repository= new Event_db_repository; + Event_scheduler::init_mutexes(); +} + + +/* + Destroys Events mutexes + + SYNOPSIS + Events::destroy_mutexes() +*/ + +void +Events::destroy_mutexes() +{ + Event_scheduler::destroy_mutexes(); + delete db_repository; + db_repository= NULL; +} + + +/* Proxy for Event_scheduler::dump_internal_status SYNOPSIS @@ -603,34 +636,5 @@ Events::fill_schema_events(THD *thd, TABLE_LIST *tables, COND * /* cond */) DBUG_RETURN(1); db= thd->lex->select_lex.db; } - DBUG_RETURN(get_instance()->db_repository.fill_schema_events(thd, tables, db)); -} - - -/* - Inits Events mutexes - - SYNOPSIS - Events::init_mutexes() - thd Thread -*/ - -void -Events::init_mutexes() -{ - Event_scheduler::init_mutexes(); -} - - -/* - Destroys Events mutexes - - SYNOPSIS - Events::destroy_mutexes() -*/ - -void -Events::destroy_mutexes() -{ - Event_scheduler::destroy_mutexes(); + DBUG_RETURN(get_instance()->db_repository->fill_schema_events(thd, tables, db)); } diff --git a/sql/events.h b/sql/events.h index 3a7d1f8bc5e..45a0db13980 100644 --- a/sql/events.h +++ b/sql/events.h @@ -19,8 +19,7 @@ class sp_name; class Event_timed; class Event_parse_data; - -#include "event_db_repository.h" +class Event_db_repository; /* Return codes */ enum enum_events_error_code @@ -51,16 +50,16 @@ public: static ulong opt_event_scheduler; static TYPELIB opt_typelib; - static int + int init(); - static void + void deinit(); - static void + void init_mutexes(); - static void + void destroy_mutexes(); static Events* @@ -78,6 +77,9 @@ public: drop_event(THD *thd, sp_name *name, bool drop_if_exists, uint *rows_affected); int + drop_schema_events(THD *thd, char *db); + + int open_event_table(THD *thd, enum thr_lock_type lock_type, TABLE **table); int @@ -88,16 +90,13 @@ public: reconstruct_interval_expression(String *buf, interval_type interval, longlong expression); - int - drop_schema_events(THD *thd, char *db); - static int fill_schema_events(THD *thd, TABLE_LIST *tables, COND * /* cond */); int dump_internal_status(THD *thd); - Event_db_repository db_repository; + Event_db_repository *db_repository; private: /* Singleton DP is used */ @@ -107,7 +106,6 @@ private: /* Singleton instance */ static Events singleton; - /* Prevent use of these */ Events(const Events &); void operator=(Events &); diff --git a/sql/mysqld.cc b/sql/mysqld.cc index a82f66acd19..099779f91d0 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -886,7 +886,7 @@ static void close_connections(void) } (void) pthread_mutex_unlock(&LOCK_thread_count); // For unlink from list - Events::deinit(); + Events::get_instance()->deinit(); end_slave(); if (thread_count) @@ -1321,7 +1321,7 @@ static void clean_up_mutexes() (void) pthread_mutex_destroy(&LOCK_bytes_sent); (void) pthread_mutex_destroy(&LOCK_bytes_received); (void) pthread_mutex_destroy(&LOCK_user_conn); - Events::destroy_mutexes(); + Events::get_instance()->destroy_mutexes(); #ifdef HAVE_OPENSSL (void) pthread_mutex_destroy(&LOCK_des_key_file); #ifndef HAVE_YASSL @@ -2884,7 +2884,7 @@ static int init_thread_environment() (void) pthread_mutex_init(&LOCK_server_started, MY_MUTEX_INIT_FAST); (void) pthread_cond_init(&COND_server_started,NULL); sp_cache_init(); - Events::init_mutexes(); + Events::get_instance()->init_mutexes(); /* Parameter for threads created for connections */ (void) pthread_attr_init(&connection_attrib); (void) pthread_attr_setdetachstate(&connection_attrib, @@ -3673,7 +3673,7 @@ we force server id to 2, but this MySQL server will not act as a slave."); if (!opt_noacl) { - Events::init(); + Events::get_instance()->init(); } #if defined(__NT__) || defined(HAVE_SMEM) handle_connections_methods(); |