summaryrefslogtreecommitdiff
path: root/sql/events.h
diff options
context:
space:
mode:
authorunknown <andrey@example.com>2006-08-14 15:26:59 +0200
committerunknown <andrey@example.com>2006-08-14 15:26:59 +0200
commitef58a44275c63aa528f9e6c0f7d5d6e6804e0db9 (patch)
tree383d73f49b56ca07c2200d1bcb11c1ea020525e1 /sql/events.h
parentd3758acc94fdc5bd22f9a5b53e4125eba9c1f1ab (diff)
parent9dc1a3eb10ec8e92742724896dfbfdbbe1e1cb2a (diff)
downloadmariadb-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.h124
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 &);