diff options
author | unknown <andrey@example.com> | 2006-08-14 15:26:59 +0200 |
---|---|---|
committer | unknown <andrey@example.com> | 2006-08-14 15:26:59 +0200 |
commit | ef58a44275c63aa528f9e6c0f7d5d6e6804e0db9 (patch) | |
tree | 383d73f49b56ca07c2200d1bcb11c1ea020525e1 /sql/events.h | |
parent | d3758acc94fdc5bd22f9a5b53e4125eba9c1f1ab (diff) | |
parent | 9dc1a3eb10ec8e92742724896dfbfdbbe1e1cb2a (diff) | |
download | mariadb-git-ef58a44275c63aa528f9e6c0f7d5d6e6804e0db9.tar.gz |
Merge ahristov@bk-internal.mysql.com:/home/bk/mysql-5.1-wl3337
into example.com:/work/mysql-5.1-runtime-wl3337
BitKeeper/etc/ignore:
auto-union
client/mysqltest.c:
Auto merged
libmysqld/Makefile.am:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/r/sp_notembedded.result:
Auto merged
sql/CMakeLists.txt:
Auto merged
sql/Makefile.am:
Auto merged
sql/mysqld.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/sp_head.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_db.cc:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_show.cc:
Auto merged
sql/share/errmsg.txt:
C
mysql-test/r/events_bugs.result:
update result
manual merge
mysql-test/r/ps_1general.result:
update result
manual merge
sql/sql_yacc.yy:
manual merge
Diffstat (limited to 'sql/events.h')
-rw-r--r-- | sql/events.h | 124 |
1 files changed, 79 insertions, 45 deletions
diff --git a/sql/events.h b/sql/events.h index 66cce6e7777..f14aed0fbd1 100644 --- a/sql/events.h +++ b/sql/events.h @@ -16,78 +16,112 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +class sp_name; +class Event_parse_data; +class Event_db_repository; +class Event_queue; +class Event_queue_element; +class Event_scheduler; + +/* Return codes */ +enum enum_events_error_code +{ + OP_OK= 0, + OP_NOT_RUNNING, + OP_CANT_KILL, + OP_CANT_INIT, + OP_DISABLED_EVENT, + OP_LOAD_ERROR, + OP_ALREADY_EXISTS +}; + +int +sortcmp_lex_string(LEX_STRING s, LEX_STRING t, CHARSET_INFO *cs); -class Event_timed; class Events { public: + friend class Event_queue_element; + /* + Quite NOT the best practice and will be removed once + Event_timed::drop() and Event_timed is fixed not do drop directly + or other scheme will be found. + */ + static ulong opt_event_scheduler; static TYPELIB opt_typelib; - enum enum_table_field - { - FIELD_DB = 0, - FIELD_NAME, - FIELD_BODY, - FIELD_DEFINER, - FIELD_EXECUTE_AT, - FIELD_INTERVAL_EXPR, - FIELD_TRANSIENT_INTERVAL, - FIELD_CREATED, - FIELD_MODIFIED, - FIELD_LAST_EXECUTED, - FIELD_STARTS, - FIELD_ENDS, - FIELD_STATUS, - FIELD_ON_COMPLETION, - FIELD_SQL_MODE, - FIELD_COMMENT, - FIELD_COUNT /* a cool trick to count the number of fields :) */ - }; + bool + init(); + + void + deinit(); - static int - create_event(THD *thd, Event_timed *et, uint create_options, + void + init_mutexes(); + + void + destroy_mutexes(); + + bool + start_execution_of_events(); + + bool + stop_execution_of_events(); + + bool + is_started(); + + static Events* + get_instance(); + + int + create_event(THD *thd, Event_parse_data *parse_data, bool if_exists, uint *rows_affected); - static int - update_event(THD *thd, Event_timed *et, sp_name *new_name, + int + update_event(THD *thd, Event_parse_data *parse_data, sp_name *rename_to, uint *rows_affected); - static int - drop_event(THD *thd, Event_timed *et, bool drop_if_exists, - uint *rows_affected); + int + drop_event(THD *thd, LEX_STRING dbname, LEX_STRING name, bool if_exists, + uint *rows_affected, bool only_from_disk); - static int + int + drop_schema_events(THD *thd, char *db); + + int open_event_table(THD *thd, enum thr_lock_type lock_type, TABLE **table); - static int - show_create_event(THD *thd, sp_name *spn); + int + show_create_event(THD *thd, LEX_STRING dbname, LEX_STRING name); + /* Needed for both SHOW CREATE EVENT and INFORMATION_SCHEMA */ static int reconstruct_interval_expression(String *buf, interval_type interval, longlong expression); static int - drop_schema_events(THD *thd, char *db); + fill_schema_events(THD *thd, TABLE_LIST *tables, COND * /* cond */); - static int + bool dump_internal_status(THD *thd); - - static int - init(); - - static void - shutdown(); - static void - init_mutexes(); - - static void - destroy_mutexes(); +private: + /* Singleton DP is used */ + Events(){} + ~Events(){} + /* Singleton instance */ + static Events singleton; + + Event_queue *event_queue; + Event_scheduler *scheduler; + Event_db_repository *db_repository; + + pthread_mutex_t LOCK_event_metadata; -private: /* Prevent use of these */ Events(const Events &); void operator=(Events &); |