add these, forgotten in the previous commit
This commit is contained in:
parent
4d891eb91c
commit
582299d700
210
libmysqld/event.h
Normal file
210
libmysqld/event.h
Normal file
@ -0,0 +1,210 @@
|
||||
/* -*- C++ -*- */
|
||||
#ifndef _EVENT_H_
|
||||
#define _EVENT_H_
|
||||
#include "sp_head.h"
|
||||
|
||||
|
||||
extern ulong opt_event_executor;
|
||||
|
||||
#define EVEX_OK 0
|
||||
#define EVEX_KEY_NOT_FOUND -1
|
||||
#define EVEX_OPEN_TABLE_FAILED -2
|
||||
#define EVEX_WRITE_ROW_FAILED -3
|
||||
#define EVEX_DELETE_ROW_FAILED -4
|
||||
#define EVEX_GET_FIELD_FAILED -5
|
||||
#define EVEX_PARSE_ERROR -6
|
||||
#define EVEX_INTERNAL_ERROR -7
|
||||
#define EVEX_NO_DB_ERROR -8
|
||||
#define EVEX_GENERAL_ERROR -9
|
||||
#define EVEX_BAD_PARAMS -10
|
||||
#define EVEX_NOT_RUNNING -11
|
||||
|
||||
#define EVENT_EXEC_NO_MORE (1L << 0)
|
||||
#define EVENT_NOT_USED (1L << 1)
|
||||
|
||||
|
||||
enum enum_event_on_completion
|
||||
{
|
||||
MYSQL_EVENT_ON_COMPLETION_DROP = 1,
|
||||
MYSQL_EVENT_ON_COMPLETION_PRESERVE
|
||||
};
|
||||
|
||||
enum enum_event_status
|
||||
{
|
||||
MYSQL_EVENT_ENABLED = 1,
|
||||
MYSQL_EVENT_DISABLED
|
||||
};
|
||||
|
||||
|
||||
class event_timed
|
||||
{
|
||||
event_timed(const event_timed &); /* Prevent use of these */
|
||||
void operator=(event_timed &);
|
||||
|
||||
public:
|
||||
LEX_STRING m_db;
|
||||
LEX_STRING m_name;
|
||||
LEX_STRING m_qname; // db.name
|
||||
LEX_STRING m_body;
|
||||
|
||||
LEX_STRING m_definer_user;
|
||||
LEX_STRING m_definer_host;
|
||||
LEX_STRING m_definer;// combination of user and host
|
||||
|
||||
LEX_STRING m_comment;
|
||||
TIME m_starts;
|
||||
TIME m_ends;
|
||||
TIME m_execute_at;
|
||||
longlong m_expr;
|
||||
interval_type m_interval;
|
||||
longlong m_created;
|
||||
longlong m_modified;
|
||||
TIME m_last_executed;
|
||||
enum enum_event_on_completion m_on_completion;
|
||||
enum enum_event_status m_status;
|
||||
sp_head *m_sphead;
|
||||
|
||||
|
||||
|
||||
uint m_old_cmq; // Old CLIENT_MULTI_QUERIES value
|
||||
const uchar *m_body_begin;
|
||||
|
||||
bool m_dropped;
|
||||
bool m_free_sphead_on_delete;
|
||||
uint m_flags;//all kind of purposes
|
||||
bool m_last_executed_changed;
|
||||
bool m_status_changed;
|
||||
|
||||
event_timed():m_expr(0), m_created(0), m_modified(0),
|
||||
m_on_completion(MYSQL_EVENT_ON_COMPLETION_DROP),
|
||||
m_status(MYSQL_EVENT_ENABLED), m_sphead(0), m_dropped(false),
|
||||
m_free_sphead_on_delete(true), m_flags(0),
|
||||
m_last_executed_changed(false), m_status_changed(false)
|
||||
{ init(); }
|
||||
|
||||
~event_timed()
|
||||
{
|
||||
if (m_free_sphead_on_delete)
|
||||
free_sp();
|
||||
}
|
||||
|
||||
void
|
||||
init();
|
||||
|
||||
int
|
||||
init_definer(THD *thd);
|
||||
|
||||
int
|
||||
init_execute_at(THD *thd, Item *expr);
|
||||
|
||||
int
|
||||
init_interval(THD *thd, Item *expr, interval_type interval);
|
||||
|
||||
void
|
||||
init_name(THD *thd, sp_name *name);
|
||||
|
||||
int
|
||||
init_starts(THD *thd, Item *starts);
|
||||
|
||||
int
|
||||
init_ends(THD *thd, Item *ends);
|
||||
|
||||
void
|
||||
event_timed::init_body(THD *thd);
|
||||
|
||||
void
|
||||
init_comment(THD *thd, LEX_STRING *comment);
|
||||
|
||||
void
|
||||
set_on_completion_drop(bool drop);
|
||||
|
||||
void
|
||||
set_event_status(bool enabled);
|
||||
|
||||
int
|
||||
load_from_row(MEM_ROOT *mem_root, TABLE *table);
|
||||
|
||||
bool
|
||||
compute_next_execution_time();
|
||||
|
||||
void
|
||||
mark_last_executed();
|
||||
|
||||
bool
|
||||
drop(THD *thd);
|
||||
|
||||
bool
|
||||
update_fields(THD *thd);
|
||||
|
||||
char *
|
||||
get_show_create_event(THD *thd, uint *length);
|
||||
|
||||
int
|
||||
execute(THD *thd, MEM_ROOT *mem_root);
|
||||
|
||||
int
|
||||
compile(THD *thd, MEM_ROOT *mem_root);
|
||||
|
||||
void free_sp()
|
||||
{
|
||||
if (m_sphead)
|
||||
{
|
||||
delete m_sphead;
|
||||
m_sphead= 0;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
int
|
||||
evex_create_event(THD *thd, event_timed *et, uint create_options);
|
||||
|
||||
int
|
||||
evex_update_event(THD *thd, sp_name *name, event_timed *et);
|
||||
|
||||
int
|
||||
evex_drop_event(THD *thd, event_timed *et, bool drop_if_exists);
|
||||
|
||||
|
||||
int
|
||||
init_events();
|
||||
|
||||
void
|
||||
shutdown_events();
|
||||
|
||||
/*
|
||||
typedef struct st_event_item {
|
||||
my_time_t execute_at;
|
||||
sp_head *proc;
|
||||
char *definer_user;
|
||||
char *definer_host;
|
||||
} EVENT_ITEM;
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
CREATE TABLE `event` (
|
||||
`db` varchar(64) character set latin1 collate latin1_bin NOT NULL default '',
|
||||
`name` varchar(64) NOT NULL default '',
|
||||
`body` blob NOT NULL,
|
||||
`definer` varchar(77) character set latin1 collate latin1_bin NOT NULL default '',
|
||||
`execute_at` datetime default NULL,
|
||||
`transient_expression` int(11) default NULL,
|
||||
`interval_type` enum('YEAR','QUARTER','MONTH','DAY','HOUR','MINUTE','WEEK',
|
||||
'SECOND','MICROSECOND','YEAR_MONTH','DAY_HOUR','DAY_MINUTE',
|
||||
'DAY_SECOND','HOUR_MINUTE','HOUR_SECOND','MINUTE_SECOND',
|
||||
'DAY_MICROSECOND','HOUR_MICROSECOND','MINUTE_MICROSECOND',
|
||||
'SECOND_MICROSECOND') DEFAULT NULL,
|
||||
`created` timestamp NOT NULL default '0000-00-00 00:00:00',
|
||||
`modified` timestamp NOT NULL default '0000-00-00 00:00:00',
|
||||
`last_executed` datetime default NULL,
|
||||
`starts` datetime default NULL,
|
||||
`ends` datetime default NULL,
|
||||
`status` enum('ENABLED','DISABLED') NOT NULL default 'ENABLED',
|
||||
`on_completion` enum('DROP','PRESERVE') NOT NULL default 'DROP',
|
||||
`comment` varchar(64) character set latin1 collate latin1_bin NOT NULL default '',
|
||||
PRIMARY KEY (`db`,`name`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
*/
|
||||
|
||||
#endif /* _EVENT_H_ */
|
2310
sql/event.cc
Normal file
2310
sql/event.cc
Normal file
File diff suppressed because it is too large
Load Diff
210
sql/event.h
Normal file
210
sql/event.h
Normal file
@ -0,0 +1,210 @@
|
||||
/* -*- C++ -*- */
|
||||
#ifndef _EVENT_H_
|
||||
#define _EVENT_H_
|
||||
#include "sp_head.h"
|
||||
|
||||
|
||||
extern ulong opt_event_executor;
|
||||
|
||||
#define EVEX_OK 0
|
||||
#define EVEX_KEY_NOT_FOUND -1
|
||||
#define EVEX_OPEN_TABLE_FAILED -2
|
||||
#define EVEX_WRITE_ROW_FAILED -3
|
||||
#define EVEX_DELETE_ROW_FAILED -4
|
||||
#define EVEX_GET_FIELD_FAILED -5
|
||||
#define EVEX_PARSE_ERROR -6
|
||||
#define EVEX_INTERNAL_ERROR -7
|
||||
#define EVEX_NO_DB_ERROR -8
|
||||
#define EVEX_GENERAL_ERROR -9
|
||||
#define EVEX_BAD_PARAMS -10
|
||||
#define EVEX_NOT_RUNNING -11
|
||||
|
||||
#define EVENT_EXEC_NO_MORE (1L << 0)
|
||||
#define EVENT_NOT_USED (1L << 1)
|
||||
|
||||
|
||||
enum enum_event_on_completion
|
||||
{
|
||||
MYSQL_EVENT_ON_COMPLETION_DROP = 1,
|
||||
MYSQL_EVENT_ON_COMPLETION_PRESERVE
|
||||
};
|
||||
|
||||
enum enum_event_status
|
||||
{
|
||||
MYSQL_EVENT_ENABLED = 1,
|
||||
MYSQL_EVENT_DISABLED
|
||||
};
|
||||
|
||||
|
||||
class event_timed
|
||||
{
|
||||
event_timed(const event_timed &); /* Prevent use of these */
|
||||
void operator=(event_timed &);
|
||||
|
||||
public:
|
||||
LEX_STRING m_db;
|
||||
LEX_STRING m_name;
|
||||
LEX_STRING m_qname; // db.name
|
||||
LEX_STRING m_body;
|
||||
|
||||
LEX_STRING m_definer_user;
|
||||
LEX_STRING m_definer_host;
|
||||
LEX_STRING m_definer;// combination of user and host
|
||||
|
||||
LEX_STRING m_comment;
|
||||
TIME m_starts;
|
||||
TIME m_ends;
|
||||
TIME m_execute_at;
|
||||
longlong m_expr;
|
||||
interval_type m_interval;
|
||||
longlong m_created;
|
||||
longlong m_modified;
|
||||
TIME m_last_executed;
|
||||
enum enum_event_on_completion m_on_completion;
|
||||
enum enum_event_status m_status;
|
||||
sp_head *m_sphead;
|
||||
|
||||
|
||||
|
||||
uint m_old_cmq; // Old CLIENT_MULTI_QUERIES value
|
||||
const uchar *m_body_begin;
|
||||
|
||||
bool m_dropped;
|
||||
bool m_free_sphead_on_delete;
|
||||
uint m_flags;//all kind of purposes
|
||||
bool m_last_executed_changed;
|
||||
bool m_status_changed;
|
||||
|
||||
event_timed():m_expr(0), m_created(0), m_modified(0),
|
||||
m_on_completion(MYSQL_EVENT_ON_COMPLETION_DROP),
|
||||
m_status(MYSQL_EVENT_ENABLED), m_sphead(0), m_dropped(false),
|
||||
m_free_sphead_on_delete(true), m_flags(0),
|
||||
m_last_executed_changed(false), m_status_changed(false)
|
||||
{ init(); }
|
||||
|
||||
~event_timed()
|
||||
{
|
||||
if (m_free_sphead_on_delete)
|
||||
free_sp();
|
||||
}
|
||||
|
||||
void
|
||||
init();
|
||||
|
||||
int
|
||||
init_definer(THD *thd);
|
||||
|
||||
int
|
||||
init_execute_at(THD *thd, Item *expr);
|
||||
|
||||
int
|
||||
init_interval(THD *thd, Item *expr, interval_type interval);
|
||||
|
||||
void
|
||||
init_name(THD *thd, sp_name *name);
|
||||
|
||||
int
|
||||
init_starts(THD *thd, Item *starts);
|
||||
|
||||
int
|
||||
init_ends(THD *thd, Item *ends);
|
||||
|
||||
void
|
||||
event_timed::init_body(THD *thd);
|
||||
|
||||
void
|
||||
init_comment(THD *thd, LEX_STRING *comment);
|
||||
|
||||
void
|
||||
set_on_completion_drop(bool drop);
|
||||
|
||||
void
|
||||
set_event_status(bool enabled);
|
||||
|
||||
int
|
||||
load_from_row(MEM_ROOT *mem_root, TABLE *table);
|
||||
|
||||
bool
|
||||
compute_next_execution_time();
|
||||
|
||||
void
|
||||
mark_last_executed();
|
||||
|
||||
bool
|
||||
drop(THD *thd);
|
||||
|
||||
bool
|
||||
update_fields(THD *thd);
|
||||
|
||||
char *
|
||||
get_show_create_event(THD *thd, uint *length);
|
||||
|
||||
int
|
||||
execute(THD *thd, MEM_ROOT *mem_root);
|
||||
|
||||
int
|
||||
compile(THD *thd, MEM_ROOT *mem_root);
|
||||
|
||||
void free_sp()
|
||||
{
|
||||
if (m_sphead)
|
||||
{
|
||||
delete m_sphead;
|
||||
m_sphead= 0;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
int
|
||||
evex_create_event(THD *thd, event_timed *et, uint create_options);
|
||||
|
||||
int
|
||||
evex_update_event(THD *thd, sp_name *name, event_timed *et);
|
||||
|
||||
int
|
||||
evex_drop_event(THD *thd, event_timed *et, bool drop_if_exists);
|
||||
|
||||
|
||||
int
|
||||
init_events();
|
||||
|
||||
void
|
||||
shutdown_events();
|
||||
|
||||
/*
|
||||
typedef struct st_event_item {
|
||||
my_time_t execute_at;
|
||||
sp_head *proc;
|
||||
char *definer_user;
|
||||
char *definer_host;
|
||||
} EVENT_ITEM;
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
CREATE TABLE `event` (
|
||||
`db` varchar(64) character set latin1 collate latin1_bin NOT NULL default '',
|
||||
`name` varchar(64) NOT NULL default '',
|
||||
`body` blob NOT NULL,
|
||||
`definer` varchar(77) character set latin1 collate latin1_bin NOT NULL default '',
|
||||
`execute_at` datetime default NULL,
|
||||
`transient_expression` int(11) default NULL,
|
||||
`interval_type` enum('YEAR','QUARTER','MONTH','DAY','HOUR','MINUTE','WEEK',
|
||||
'SECOND','MICROSECOND','YEAR_MONTH','DAY_HOUR','DAY_MINUTE',
|
||||
'DAY_SECOND','HOUR_MINUTE','HOUR_SECOND','MINUTE_SECOND',
|
||||
'DAY_MICROSECOND','HOUR_MICROSECOND','MINUTE_MICROSECOND',
|
||||
'SECOND_MICROSECOND') DEFAULT NULL,
|
||||
`created` timestamp NOT NULL default '0000-00-00 00:00:00',
|
||||
`modified` timestamp NOT NULL default '0000-00-00 00:00:00',
|
||||
`last_executed` datetime default NULL,
|
||||
`starts` datetime default NULL,
|
||||
`ends` datetime default NULL,
|
||||
`status` enum('ENABLED','DISABLED') NOT NULL default 'ENABLED',
|
||||
`on_completion` enum('DROP','PRESERVE') NOT NULL default 'DROP',
|
||||
`comment` varchar(64) character set latin1 collate latin1_bin NOT NULL default '',
|
||||
PRIMARY KEY (`db`,`name`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
*/
|
||||
|
||||
#endif /* _EVENT_H_ */
|
Loading…
x
Reference in New Issue
Block a user