summaryrefslogtreecommitdiff
path: root/sql/events.h
diff options
context:
space:
mode:
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 &);