Commit c924aece authored by andrey@lmy004's avatar andrey@lmy004

Merge ahristov@bk-internal.mysql.com:/home/bk/mysql-5.1-new

into lmy004.:/work/mysql-5.1-bug16537
parents 9d819dff 991ff478
...@@ -49,11 +49,11 @@ ...@@ -49,11 +49,11 @@
- Consider using conditional variable when doing shutdown instead of - Consider using conditional variable when doing shutdown instead of
waiting till all worker threads end. waiting till all worker threads end.
- Make event_timed::get_show_create_event() work - Make Event_timed::get_show_create_event() work
- Add logging to file - Add logging to file
- Move comparison code to class event_timed - Move comparison code to class Event_timed
Warning: Warning:
- For now parallel execution is not possible because the same sp_head cannot be - For now parallel execution is not possible because the same sp_head cannot be
...@@ -276,13 +276,13 @@ my_time_compare(TIME *a, TIME *b) ...@@ -276,13 +276,13 @@ my_time_compare(TIME *a, TIME *b)
/* /*
Compares the execute_at members of 2 event_timed instances Compares the execute_at members of 2 Event_timed instances
Synopsis Synopsis
event_timed_compare() event_timed_compare()
a - first event_timed object a - first Event_timed object
b - second event_timed object b - second Event_timed object
RETURNS: RETURNS:
-1 - a->execute_at < b->execute_at -1 - a->execute_at < b->execute_at
...@@ -294,14 +294,14 @@ my_time_compare(TIME *a, TIME *b) ...@@ -294,14 +294,14 @@ my_time_compare(TIME *a, TIME *b)
*/ */
int int
event_timed_compare(event_timed *a, event_timed *b) event_timed_compare(Event_timed *a, Event_timed *b)
{ {
return my_time_compare(&a->execute_at, &b->execute_at); return my_time_compare(&a->execute_at, &b->execute_at);
} }
/* /*
Compares the execute_at members of 2 event_timed instances. Compares the execute_at members of 2 Event_timed instances.
Used as callback for the prioritized queue when shifting Used as callback for the prioritized queue when shifting
elements inside. elements inside.
...@@ -309,8 +309,8 @@ event_timed_compare(event_timed *a, event_timed *b) ...@@ -309,8 +309,8 @@ event_timed_compare(event_timed *a, event_timed *b)
event_timed_compare() event_timed_compare()
vptr - not used (set it to NULL) vptr - not used (set it to NULL)
a - first event_timed object a - first Event_timed object
b - second event_timed object b - second Event_timed object
RETURNS: RETURNS:
-1 - a->execute_at < b->execute_at -1 - a->execute_at < b->execute_at
...@@ -324,7 +324,7 @@ event_timed_compare(event_timed *a, event_timed *b) ...@@ -324,7 +324,7 @@ event_timed_compare(event_timed *a, event_timed *b)
int int
event_timed_compare_q(void *vptr, byte* a, byte *b) event_timed_compare_q(void *vptr, byte* a, byte *b)
{ {
return event_timed_compare((event_timed *)a, (event_timed *)b); return event_timed_compare((Event_timed *)a, (Event_timed *)b);
} }
...@@ -520,7 +520,7 @@ evex_open_event_table(THD *thd, enum thr_lock_type lock_type, TABLE **table) ...@@ -520,7 +520,7 @@ evex_open_event_table(THD *thd, enum thr_lock_type lock_type, TABLE **table)
*/ */
inline int inline int
evex_db_find_event_aux(THD *thd, event_timed *et, TABLE *table) evex_db_find_event_aux(THD *thd, Event_timed *et, TABLE *table)
{ {
return evex_db_find_event_by_name(thd, et->dbname, et->name, return evex_db_find_event_by_name(thd, et->dbname, et->name,
et->definer, table); et->definer, table);
...@@ -600,7 +600,7 @@ evex_db_find_event_by_name(THD *thd, const LEX_STRING dbname, ...@@ -600,7 +600,7 @@ evex_db_find_event_by_name(THD *thd, const LEX_STRING dbname,
*/ */
static int static int
evex_fill_row(THD *thd, TABLE *table, event_timed *et, my_bool is_update) evex_fill_row(THD *thd, TABLE *table, Event_timed *et, my_bool is_update)
{ {
enum evex_table_field field_num; enum evex_table_field field_num;
...@@ -707,7 +707,7 @@ trunc_err: ...@@ -707,7 +707,7 @@ trunc_err:
SYNOPSIS SYNOPSIS
db_create_event() db_create_event()
thd THD thd THD
et event_timed object containing information for the event et Event_timed object containing information for the event
create_if_not - if an warning should be generated in case event exists create_if_not - if an warning should be generated in case event exists
rows_affected - how many rows were affected rows_affected - how many rows were affected
...@@ -720,7 +720,7 @@ trunc_err: ...@@ -720,7 +720,7 @@ trunc_err:
*/ */
static int static int
db_create_event(THD *thd, event_timed *et, my_bool create_if_not, db_create_event(THD *thd, Event_timed *et, my_bool create_if_not,
uint *rows_affected) uint *rows_affected)
{ {
int ret= 0; int ret= 0;
...@@ -855,7 +855,7 @@ err: ...@@ -855,7 +855,7 @@ err:
*/ */
static int static int
db_update_event(THD *thd, event_timed *et, sp_name *new_name) db_update_event(THD *thd, Event_timed *et, sp_name *new_name)
{ {
TABLE *table; TABLE *table;
int ret= EVEX_OPEN_TABLE_FAILED; int ret= EVEX_OPEN_TABLE_FAILED;
...@@ -954,13 +954,13 @@ err: ...@@ -954,13 +954,13 @@ err:
*/ */
static int static int
db_find_event(THD *thd, sp_name *name, LEX_STRING *definer, event_timed **ett, db_find_event(THD *thd, sp_name *name, LEX_STRING *definer, Event_timed **ett,
TABLE *tbl, MEM_ROOT *root) TABLE *tbl, MEM_ROOT *root)
{ {
TABLE *table; TABLE *table;
int ret; int ret;
char *ptr; char *ptr;
event_timed *et=NULL; Event_timed *et=NULL;
DBUG_ENTER("db_find_event"); DBUG_ENTER("db_find_event");
DBUG_PRINT("enter", ("name: %*s", name->m_name.length, name->m_name.str)); DBUG_PRINT("enter", ("name: %*s", name->m_name.length, name->m_name.str));
...@@ -982,7 +982,7 @@ db_find_event(THD *thd, sp_name *name, LEX_STRING *definer, event_timed **ett, ...@@ -982,7 +982,7 @@ db_find_event(THD *thd, sp_name *name, LEX_STRING *definer, event_timed **ett,
my_error(ER_EVENT_DOES_NOT_EXIST, MYF(0), name->m_name.str); my_error(ER_EVENT_DOES_NOT_EXIST, MYF(0), name->m_name.str);
goto done; goto done;
} }
et= new event_timed; et= new Event_timed;
/* /*
1)The table should not be closed beforehand. ::load_from_row() only loads 1)The table should not be closed beforehand. ::load_from_row() only loads
...@@ -1032,7 +1032,7 @@ evex_load_and_compile_event(THD * thd, sp_name *spn, LEX_STRING definer, ...@@ -1032,7 +1032,7 @@ evex_load_and_compile_event(THD * thd, sp_name *spn, LEX_STRING definer,
{ {
int ret= 0; int ret= 0;
MEM_ROOT *tmp_mem_root; MEM_ROOT *tmp_mem_root;
event_timed *ett; Event_timed *ett;
Open_tables_state backup; Open_tables_state backup;
DBUG_ENTER("db_load_and_compile_event"); DBUG_ENTER("db_load_and_compile_event");
...@@ -1089,7 +1089,7 @@ done: ...@@ -1089,7 +1089,7 @@ done:
use_lock - whether to lock the mutex LOCK_event_arrays or not in case it use_lock - whether to lock the mutex LOCK_event_arrays or not in case it
has been already locked outside has been already locked outside
is_drop - if an event is currently being executed then we can also delete is_drop - if an event is currently being executed then we can also delete
the event_timed instance, so we alarm the event that it should the Event_timed instance, so we alarm the event that it should
drop itself if this parameter is set to TRUE. It's false on drop itself if this parameter is set to TRUE. It's false on
ALTER EVENT. ALTER EVENT.
...@@ -1116,7 +1116,7 @@ evex_remove_from_cache(LEX_STRING *db, LEX_STRING *name, bool use_lock, ...@@ -1116,7 +1116,7 @@ evex_remove_from_cache(LEX_STRING *db, LEX_STRING *name, bool use_lock,
for (i= 0; i < evex_queue_num_elements(EVEX_EQ_NAME); ++i) for (i= 0; i < evex_queue_num_elements(EVEX_EQ_NAME); ++i)
{ {
event_timed *et= evex_queue_element(&EVEX_EQ_NAME, i, event_timed*); Event_timed *et= evex_queue_element(&EVEX_EQ_NAME, i, Event_timed*);
DBUG_PRINT("info", ("[%s.%s]==[%s.%s]?",db->str,name->str, et->dbname.str, DBUG_PRINT("info", ("[%s.%s]==[%s.%s]?",db->str,name->str, et->dbname.str,
et->name.str)); et->name.str));
if (!sortcmp_lex_string(*name, et->name, system_charset_info) && if (!sortcmp_lex_string(*name, et->name, system_charset_info) &&
...@@ -1168,7 +1168,7 @@ done: ...@@ -1168,7 +1168,7 @@ done:
*/ */
int int
evex_create_event(THD *thd, event_timed *et, uint create_options, evex_create_event(THD *thd, Event_timed *et, uint create_options,
uint *rows_affected) uint *rows_affected)
{ {
int ret = 0; int ret = 0;
...@@ -1213,7 +1213,7 @@ done: ...@@ -1213,7 +1213,7 @@ done:
*/ */
int int
evex_update_event(THD *thd, event_timed *et, sp_name *new_name, evex_update_event(THD *thd, Event_timed *et, sp_name *new_name,
uint *rows_affected) uint *rows_affected)
{ {
int ret, i; int ret, i;
...@@ -1267,7 +1267,7 @@ done: ...@@ -1267,7 +1267,7 @@ done:
rows_affected affected number of rows is returned heres rows_affected affected number of rows is returned heres
*/ */
int db_drop_event(THD *thd, event_timed *et, bool drop_if_exists, int db_drop_event(THD *thd, Event_timed *et, bool drop_if_exists,
uint *rows_affected) uint *rows_affected)
{ {
TABLE *table; TABLE *table;
...@@ -1308,7 +1308,7 @@ int db_drop_event(THD *thd, event_timed *et, bool drop_if_exists, ...@@ -1308,7 +1308,7 @@ int db_drop_event(THD *thd, event_timed *et, bool drop_if_exists,
done: done:
/* /*
evex_drop_event() is used by event_timed::drop therefore evex_drop_event() is used by Event_timed::drop therefore
we have to close our thread tables. we have to close our thread tables.
*/ */
close_thread_tables(thd); close_thread_tables(thd);
...@@ -1330,7 +1330,7 @@ done: ...@@ -1330,7 +1330,7 @@ done:
*/ */
int int
evex_drop_event(THD *thd, event_timed *et, bool drop_if_exists, evex_drop_event(THD *thd, Event_timed *et, bool drop_if_exists,
uint *rows_affected) uint *rows_affected)
{ {
TABLE *table; TABLE *table;
...@@ -1373,7 +1373,7 @@ int ...@@ -1373,7 +1373,7 @@ int
evex_show_create_event(THD *thd, sp_name *spn, LEX_STRING definer) evex_show_create_event(THD *thd, sp_name *spn, LEX_STRING definer)
{ {
int ret; int ret;
event_timed *et= NULL; Event_timed *et= NULL;
Open_tables_state backup; Open_tables_state backup;
DBUG_ENTER("evex_update_event"); DBUG_ENTER("evex_update_event");
...@@ -1442,15 +1442,15 @@ evex_show_create_event(THD *thd, sp_name *spn, LEX_STRING definer) ...@@ -1442,15 +1442,15 @@ evex_show_create_event(THD *thd, sp_name *spn, LEX_STRING definer)
1. Go through the in-memory cache, if the scheduler is working 1. Go through the in-memory cache, if the scheduler is working
and for every event whose dbname matches the database we drop and for every event whose dbname matches the database we drop
check whether is currently in execution: check whether is currently in execution:
- event_timed::can_spawn() returns true -> the event is not - Event_timed::can_spawn() returns true -> the event is not
being executed in a child thread. The reason not to use being executed in a child thread. The reason not to use
event_timed::is_running() is that the latter shows only if Event_timed::is_running() is that the latter shows only if
it is being executed, which is 99% of the time in the thread it is being executed, which is 99% of the time in the thread
but there are some initiliazations before and after the but there are some initiliazations before and after the
anonymous SP is being called. So if we delete in this moment anonymous SP is being called. So if we delete in this moment
-=> *boom*, so we have to check whether the thread has been -=> *boom*, so we have to check whether the thread has been
spawned and can_spawn() is the right method. spawned and can_spawn() is the right method.
- event_timed::can_spawn() returns false -> being runned ATM - Event_timed::can_spawn() returns false -> being runned ATM
just set the flags so it should drop itself. just set the flags so it should drop itself.
*/ */
...@@ -1484,7 +1484,7 @@ evex_drop_db_events(THD *thd, char *db) ...@@ -1484,7 +1484,7 @@ evex_drop_db_events(THD *thd, char *db)
for (i= 0; i < evex_queue_num_elements(EVEX_EQ_NAME); ++i) for (i= 0; i < evex_queue_num_elements(EVEX_EQ_NAME); ++i)
{ {
event_timed *et= evex_queue_element(&EVEX_EQ_NAME, i, event_timed*); Event_timed *et= evex_queue_element(&EVEX_EQ_NAME, i, Event_timed*);
if (sortcmp_lex_string(et->dbname, db_lex, system_charset_info)) if (sortcmp_lex_string(et->dbname, db_lex, system_charset_info))
continue; continue;
...@@ -1561,7 +1561,7 @@ skip_memory: ...@@ -1561,7 +1561,7 @@ skip_memory:
LEX_STRING et_db_lex= {et_db, strlen(et_db)}; LEX_STRING et_db_lex= {et_db, strlen(et_db)};
if (!sortcmp_lex_string(et_db_lex, db_lex, system_charset_info)) if (!sortcmp_lex_string(et_db_lex, db_lex, system_charset_info))
{ {
event_timed ett; Event_timed ett;
char *ptr; char *ptr;
if ((ptr= get_field(thd->mem_root, table->field[EVEX_FIELD_STATUS])) if ((ptr= get_field(thd->mem_root, table->field[EVEX_FIELD_STATUS]))
......
...@@ -76,10 +76,10 @@ enum evex_table_field ...@@ -76,10 +76,10 @@ enum evex_table_field
EVEX_FIELD_COUNT /* a cool trick to count the number of fields :) */ EVEX_FIELD_COUNT /* a cool trick to count the number of fields :) */
} ; } ;
class event_timed class Event_timed
{ {
event_timed(const event_timed &); /* Prevent use of these */ Event_timed(const Event_timed &); /* Prevent use of these */
void operator=(event_timed &); void operator=(Event_timed &);
my_bool in_spawned_thread; my_bool in_spawned_thread;
ulong locked_by_thread_id; ulong locked_by_thread_id;
my_bool running; my_bool running;
...@@ -122,7 +122,7 @@ public: ...@@ -122,7 +122,7 @@ public:
bool free_sphead_on_delete; bool free_sphead_on_delete;
uint flags;//all kind of purposes uint flags;//all kind of purposes
event_timed():in_spawned_thread(0),locked_by_thread_id(0), Event_timed():in_spawned_thread(0),locked_by_thread_id(0),
running(0), status_changed(false), running(0), status_changed(false),
last_executed_changed(false), expression(0), created(0), last_executed_changed(false), expression(0), created(0),
modified(0), on_completion(MYSQL_EVENT_ON_COMPLETION_DROP), modified(0), on_completion(MYSQL_EVENT_ON_COMPLETION_DROP),
...@@ -135,7 +135,7 @@ public: ...@@ -135,7 +135,7 @@ public:
init(); init();
} }
~event_timed() ~Event_timed()
{ {
pthread_mutex_destroy(&this->LOCK_running); pthread_mutex_destroy(&this->LOCK_running);
if (free_sphead_on_delete) if (free_sphead_on_delete)
...@@ -259,15 +259,15 @@ protected: ...@@ -259,15 +259,15 @@ protected:
int int
evex_create_event(THD *thd, event_timed *et, uint create_options, evex_create_event(THD *thd, Event_timed *et, uint create_options,
uint *rows_affected); uint *rows_affected);
int int
evex_update_event(THD *thd, event_timed *et, sp_name *new_name, evex_update_event(THD *thd, Event_timed *et, sp_name *new_name,
uint *rows_affected); uint *rows_affected);
int int
evex_drop_event(THD *thd, event_timed *et, bool drop_if_exists, evex_drop_event(THD *thd, Event_timed *et, bool drop_if_exists,
uint *rows_affected); uint *rows_affected);
int int
...@@ -296,7 +296,7 @@ shutdown_events(); ...@@ -296,7 +296,7 @@ shutdown_events();
// auxiliary // auxiliary
int int
event_timed_compare(event_timed **a, event_timed **b); event_timed_compare(Event_timed **a, Event_timed **b);
......
...@@ -55,7 +55,7 @@ static int ...@@ -55,7 +55,7 @@ static int
evex_load_events_from_db(THD *thd); evex_load_events_from_db(THD *thd);
bool bool
evex_print_warnings(THD *thd, event_timed *et); evex_print_warnings(THD *thd, Event_timed *et);
/* /*
TODO Andrey: Check for command line option whether to start TODO Andrey: Check for command line option whether to start
...@@ -316,7 +316,7 @@ init_event_thread(THD* thd) ...@@ -316,7 +316,7 @@ init_event_thread(THD* thd)
static int static int
executor_wait_till_next_event_exec(THD *thd) executor_wait_till_next_event_exec(THD *thd)
{ {
event_timed *et; Event_timed *et;
TIME time_now; TIME time_now;
int t2sleep; int t2sleep;
...@@ -331,7 +331,7 @@ executor_wait_till_next_event_exec(THD *thd) ...@@ -331,7 +331,7 @@ executor_wait_till_next_event_exec(THD *thd)
VOID(pthread_mutex_unlock(&LOCK_event_arrays)); VOID(pthread_mutex_unlock(&LOCK_event_arrays));
DBUG_RETURN(WAIT_STATUS_EMPTY_QUEUE); DBUG_RETURN(WAIT_STATUS_EMPTY_QUEUE);
} }
et= evex_queue_first_element(&EVEX_EQ_NAME, event_timed*); et= evex_queue_first_element(&EVEX_EQ_NAME, Event_timed*);
DBUG_ASSERT(et); DBUG_ASSERT(et);
if (et->status == MYSQL_EVENT_DISABLED) if (et->status == MYSQL_EVENT_DISABLED)
{ {
...@@ -361,7 +361,7 @@ executor_wait_till_next_event_exec(THD *thd) ...@@ -361,7 +361,7 @@ executor_wait_till_next_event_exec(THD *thd)
*/ */
while (t2sleep-- && !thd->killed && event_executor_running_global_var && while (t2sleep-- && !thd->killed && event_executor_running_global_var &&
evex_queue_num_elements(EVEX_EQ_NAME) && evex_queue_num_elements(EVEX_EQ_NAME) &&
(evex_queue_first_element(&EVEX_EQ_NAME, event_timed*) == et)) (evex_queue_first_element(&EVEX_EQ_NAME, Event_timed*) == et))
{ {
DBUG_PRINT("evex main thread",("will sleep a bit more")); DBUG_PRINT("evex main thread",("will sleep a bit more"));
my_sleep(1000000); my_sleep(1000000);
...@@ -371,7 +371,7 @@ executor_wait_till_next_event_exec(THD *thd) ...@@ -371,7 +371,7 @@ executor_wait_till_next_event_exec(THD *thd)
int ret= WAIT_STATUS_READY; int ret= WAIT_STATUS_READY;
if (!evex_queue_num_elements(EVEX_EQ_NAME)) if (!evex_queue_num_elements(EVEX_EQ_NAME))
ret= WAIT_STATUS_EMPTY_QUEUE; ret= WAIT_STATUS_EMPTY_QUEUE;
else if (evex_queue_first_element(&EVEX_EQ_NAME, event_timed*) != et) else if (evex_queue_first_element(&EVEX_EQ_NAME, Event_timed*) != et)
ret= WAIT_STATUS_NEW_TOP_EVENT; ret= WAIT_STATUS_NEW_TOP_EVENT;
if (thd->killed && event_executor_running_global_var) if (thd->killed && event_executor_running_global_var)
ret= WAIT_STATUS_STOP_EXECUTOR; ret= WAIT_STATUS_STOP_EXECUTOR;
...@@ -470,7 +470,7 @@ event_executor_main(void *arg) ...@@ -470,7 +470,7 @@ event_executor_main(void *arg)
while (!thd->killed) while (!thd->killed)
{ {
TIME time_now; TIME time_now;
event_timed *et; Event_timed *et;
cnt++; cnt++;
DBUG_PRINT("info", ("EVEX External Loop %d thd->k", cnt)); DBUG_PRINT("info", ("EVEX External Loop %d thd->k", cnt));
...@@ -519,7 +519,7 @@ restart_ticking: ...@@ -519,7 +519,7 @@ restart_ticking:
DBUG_PRINT("evex main thread",("empty queue")); DBUG_PRINT("evex main thread",("empty queue"));
continue; continue;
} }
et= evex_queue_first_element(&EVEX_EQ_NAME, event_timed*); et= evex_queue_first_element(&EVEX_EQ_NAME, Event_timed*);
DBUG_PRINT("evex main thread",("got event from the queue")); DBUG_PRINT("evex main thread",("got event from the queue"));
if (!et->execute_at_null && my_time_compare(&time_now,&et->execute_at) == -1) if (!et->execute_at_null && my_time_compare(&time_now,&et->execute_at) == -1)
...@@ -621,7 +621,7 @@ finish: ...@@ -621,7 +621,7 @@ finish:
VOID(pthread_mutex_lock(&LOCK_event_arrays)); VOID(pthread_mutex_lock(&LOCK_event_arrays));
for (i= 0; i < evex_queue_num_elements(EVEX_EQ_NAME); ++i) for (i= 0; i < evex_queue_num_elements(EVEX_EQ_NAME); ++i)
{ {
event_timed *et= evex_queue_element(&EVEX_EQ_NAME, i, event_timed*); Event_timed *et= evex_queue_element(&EVEX_EQ_NAME, i, Event_timed*);
et->free_sp(); et->free_sp();
delete et; delete et;
} }
...@@ -666,14 +666,14 @@ err_no_thd: ...@@ -666,14 +666,14 @@ err_no_thd:
SYNOPSIS SYNOPSIS
event_executor_worker() event_executor_worker()
arg The event_timed object to be processed arg The Event_timed object to be processed
*/ */
pthread_handler_t pthread_handler_t
event_executor_worker(void *event_void) event_executor_worker(void *event_void)
{ {
THD *thd; /* needs to be first for thread_stack */ THD *thd; /* needs to be first for thread_stack */
event_timed *event = (event_timed *) event_void; Event_timed *event = (Event_timed *) event_void;
MEM_ROOT worker_mem_root; MEM_ROOT worker_mem_root;
DBUG_ENTER("event_executor_worker"); DBUG_ENTER("event_executor_worker");
...@@ -771,7 +771,7 @@ err_no_thd: ...@@ -771,7 +771,7 @@ err_no_thd:
/* /*
Loads all ENABLED events from mysql.event into the prioritized Loads all ENABLED events from mysql.event into the prioritized
queue. Called during scheduler main thread initialization. Compiles queue. Called during scheduler main thread initialization. Compiles
the events. Creates event_timed instances for every ENABLED event the events. Creates Event_timed instances for every ENABLED event
from mysql.event. from mysql.event.
SYNOPSIS SYNOPSIS
...@@ -808,8 +808,8 @@ evex_load_events_from_db(THD *thd) ...@@ -808,8 +808,8 @@ evex_load_events_from_db(THD *thd)
init_read_record(&read_record_info, thd, table ,NULL,1,0); init_read_record(&read_record_info, thd, table ,NULL,1,0);
while (!(read_record_info.read_record(&read_record_info))) while (!(read_record_info.read_record(&read_record_info)))
{ {
event_timed *et; Event_timed *et;
if (!(et= new event_timed)) if (!(et= new Event_timed))
{ {
DBUG_PRINT("evex_load_events_from_db", ("Out of memory")); DBUG_PRINT("evex_load_events_from_db", ("Out of memory"));
ret= -1; ret= -1;
...@@ -941,7 +941,7 @@ static sql_print_xxx_func sql_print_xxx_handlers[3] = ...@@ -941,7 +941,7 @@ static sql_print_xxx_func sql_print_xxx_handlers[3] =
*/ */
bool bool
evex_print_warnings(THD *thd, event_timed *et) evex_print_warnings(THD *thd, Event_timed *et)
{ {
MYSQL_ERROR *err; MYSQL_ERROR *err;
DBUG_ENTER("evex_show_warnings"); DBUG_ENTER("evex_show_warnings");
......
...@@ -44,7 +44,7 @@ evex_db_find_event_by_name(THD *thd, const LEX_STRING dbname, ...@@ -44,7 +44,7 @@ evex_db_find_event_by_name(THD *thd, const LEX_STRING dbname,
int int
event_timed_compare_q(void *vptr, byte* a, byte *b); event_timed_compare_q(void *vptr, byte* a, byte *b);
int db_drop_event(THD *thd, event_timed *et, bool drop_if_exists, int db_drop_event(THD *thd, Event_timed *et, bool drop_if_exists,
uint *rows_affected); uint *rows_affected);
......
This diff is collapsed.
...@@ -27,7 +27,7 @@ class sp_instr; ...@@ -27,7 +27,7 @@ class sp_instr;
class sp_pcontext; class sp_pcontext;
class st_alter_tablespace; class st_alter_tablespace;
class partition_info; class partition_info;
class event_timed; class Event_timed;
#ifdef MYSQL_SERVER #ifdef MYSQL_SERVER
/* /*
...@@ -932,7 +932,7 @@ typedef struct st_lex ...@@ -932,7 +932,7 @@ typedef struct st_lex
st_sp_chistics sp_chistics; st_sp_chistics sp_chistics;
event_timed *et; Event_timed *et;
bool et_compile_phase; bool et_compile_phase;
bool only_view; /* used for SHOW CREATE TABLE/VIEW */ bool only_view; /* used for SHOW CREATE TABLE/VIEW */
......
...@@ -3936,7 +3936,7 @@ fill_events_copy_to_schema_table(THD *thd, TABLE *sch_table, TABLE *event_table) ...@@ -3936,7 +3936,7 @@ fill_events_copy_to_schema_table(THD *thd, TABLE *sch_table, TABLE *event_table)
const char *wild= thd->lex->wild ? thd->lex->wild->ptr() : NullS; const char *wild= thd->lex->wild ? thd->lex->wild->ptr() : NullS;
CHARSET_INFO *scs= system_charset_info; CHARSET_INFO *scs= system_charset_info;
TIME time; TIME time;
event_timed et; Event_timed et;
DBUG_ENTER("fill_events_copy_to_schema_tab"); DBUG_ENTER("fill_events_copy_to_schema_tab");
restore_record(sch_table, s->default_values); restore_record(sch_table, s->default_values);
......
...@@ -1343,7 +1343,7 @@ create: ...@@ -1343,7 +1343,7 @@ create:
lex->create_info.options= $3; lex->create_info.options= $3;
if (!(lex->et= new event_timed())) // implicitly calls event_timed::init() if (!(lex->et= new Event_timed())) // implicitly calls Event_timed::init()
YYABORT; YYABORT;
/* /*
...@@ -4822,7 +4822,7 @@ alter: ...@@ -4822,7 +4822,7 @@ alter:
*/ */
{ {
LEX *lex=Lex; LEX *lex=Lex;
event_timed *et; Event_timed *et;
if (lex->et) if (lex->et)
{ {
...@@ -4835,7 +4835,7 @@ alter: ...@@ -4835,7 +4835,7 @@ alter:
} }
lex->spname= 0;//defensive programming lex->spname= 0;//defensive programming
if (!(et= new event_timed()))// implicitly calls event_timed::init() if (!(et= new Event_timed()))// implicitly calls Event_timed::init()
YYABORT; YYABORT;
lex->et = et; lex->et = et;
...@@ -4911,7 +4911,7 @@ opt_ev_rename_to: /* empty */ { $$= 0;} ...@@ -4911,7 +4911,7 @@ opt_ev_rename_to: /* empty */ { $$= 0;}
{ {
LEX *lex=Lex; LEX *lex=Lex;
lex->spname= $3; //use lex's spname to hold the new name lex->spname= $3; //use lex's spname to hold the new name
//the original name is in the event_timed object //the original name is in the Event_timed object
$$= 1; $$= 1;
} }
; ;
...@@ -7734,7 +7734,7 @@ drop: ...@@ -7734,7 +7734,7 @@ drop:
YYABORT; YYABORT;
} }
if (!(lex->et= new event_timed())) if (!(lex->et= new Event_timed()))
YYABORT; YYABORT;
if (!lex->et_compile_phase) if (!lex->et_compile_phase)
...@@ -8458,7 +8458,7 @@ show_param: ...@@ -8458,7 +8458,7 @@ show_param:
{ {
Lex->sql_command = SQLCOM_SHOW_CREATE_EVENT; Lex->sql_command = SQLCOM_SHOW_CREATE_EVENT;
Lex->spname= $3; Lex->spname= $3;
Lex->et= new event_timed(); Lex->et= new Event_timed();
if (!Lex->et) if (!Lex->et)
YYABORT; YYABORT;
Lex->et->init_definer(YYTHD); Lex->et->init_definer(YYTHD);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment