Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
780d6344
Commit
780d6344
authored
Feb 28, 2006
by
andrey@lmy004
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix for bug#16537
(post-review pre-push changes) coding style (mostly trailing spaces removed)
parent
8fe55c09
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
180 additions
and
183 deletions
+180
-183
mysql-test/r/events.result
mysql-test/r/events.result
+4
-4
sql/event.cc
sql/event.cc
+98
-100
sql/event_executor.cc
sql/event_executor.cc
+60
-59
sql/event_timed.cc
sql/event_timed.cc
+18
-20
No files found.
mysql-test/r/events.result
View file @
780d6344
...
...
@@ -40,7 +40,7 @@ drop event event2;
CREATE EVENT event_starts_test ON SCHEDULE EVERY 10 SECOND COMMENT "" DO SELECT 1;
SHOW EVENTS;
Db Name Definer Type Execute at Interval value Interval field Starts Ends Status
events_test event_starts_test root@localhost RECURRING NULL 10
INTERVAL_
SECOND # # ENABLED
events_test event_starts_test root@localhost RECURRING NULL 10 SECOND # # ENABLED
SELECT starts IS NULL, ends IS NULL, comment FROM mysql.event WHERE db='events_test' AND name='event_starts_test';
starts IS NULL ends IS NULL comment
0 1
...
...
@@ -69,21 +69,21 @@ DROP EVENT event_starts_test;
CREATE EVENT event_starts_test ON SCHEDULE EVERY 20 SECOND STARTS '2020-02-02 20:00:02' ENDS '2022-02-02 20:00:02' DO SELECT 2;
SHOW EVENTS;
Db Name Definer Type Execute at Interval value Interval field Starts Ends Status
events_test event_starts_test root@localhost RECURRING NULL 20
INTERVAL_
SECOND # # ENABLED
events_test event_starts_test root@localhost RECURRING NULL 20 SECOND # # ENABLED
SELECT starts IS NULL, ends IS NULL, comment FROM mysql.event WHERE db='events_test' AND name='event_starts_test';
starts IS NULL ends IS NULL comment
0 0
ALTER EVENT event_starts_test COMMENT "non-empty comment";
SHOW EVENTS;
Db Name Definer Type Execute at Interval value Interval field Starts Ends Status
events_test event_starts_test root@localhost RECURRING NULL 20
INTERVAL_
SECOND # # ENABLED
events_test event_starts_test root@localhost RECURRING NULL 20 SECOND # # ENABLED
SELECT starts IS NULL, ends IS NULL, comment FROM mysql.event WHERE db='events_test' AND name='event_starts_test';
starts IS NULL ends IS NULL comment
0 0 non-empty comment
ALTER EVENT event_starts_test COMMENT "";
SHOW EVENTS;
Db Name Definer Type Execute at Interval value Interval field Starts Ends Status
events_test event_starts_test root@localhost RECURRING NULL 20
INTERVAL_
SECOND # # ENABLED
events_test event_starts_test root@localhost RECURRING NULL 20 SECOND # # ENABLED
DROP EVENT event_starts_test;
create event e_43 on schedule every 1 second do set @a = 5;
set global event_scheduler = 1;
...
...
sql/event.cc
View file @
780d6344
...
...
@@ -120,6 +120,7 @@ static TABLE_FIELD_W_TYPE event_table_fields[EVEX_FIELD_COUNT] = {
{
{(
char
*
)
STRING_WITH_LEN
(
"last_executed"
)},
{(
char
*
)
STRING_WITH_LEN
(
"datetime"
)},
{
NULL
,
0
}
},
{
{(
char
*
)
STRING_WITH_LEN
(
"starts"
)},
...
...
@@ -343,8 +344,6 @@ event_timed_compare_q(void *vptr, byte* a, byte *b)
RETURNS
0 - OK
1 - Error
*/
int
...
...
@@ -619,7 +618,7 @@ evex_fill_row(THD *thd, TABLE *table, event_timed *et, my_bool is_update)
store
(
et
->
name
.
str
,
et
->
name
.
length
,
system_charset_info
))
goto
trunc_err
;
/
/ both ON_COMPLETION and STATUS are NOT NULL thus not calling set_notnull()
/
* both ON_COMPLETION and STATUS are NOT NULL thus not calling set_notnull() */
table
->
field
[
EVEX_FIELD_ON_COMPLETION
]
->
store
((
longlong
)
et
->
on_completion
);
table
->
field
[
EVEX_FIELD_STATUS
]
->
store
((
longlong
)
et
->
status
);
...
...
@@ -653,7 +652,7 @@ evex_fill_row(THD *thd, TABLE *table, event_timed *et, my_bool is_update)
if
(
!
et
->
starts_null
)
{
table
->
field
[
EVEX_FIELD_STARTS
]
->
set_notnull
();
// set NULL flag to OFF
table
->
field
[
EVEX_FIELD_STARTS
]
->
set_notnull
();
table
->
field
[
EVEX_FIELD_STARTS
]
->
store_time
(
&
et
->
starts
,
MYSQL_TIMESTAMP_DATETIME
);
}
...
...
@@ -679,8 +678,10 @@ evex_fill_row(THD *thd, TABLE *table, event_timed *et, my_bool is_update)
else
{
DBUG_ASSERT
(
is_update
);
// it is normal to be here when the action is update
// this is an error if the action is create. something is borked
/*
it is normal to be here when the action is update
this is an error if the action is create. something is borked
*/
}
((
Field_timestamp
*
)
table
->
field
[
EVEX_FIELD_MODIFIED
])
->
set_time
();
...
...
@@ -799,7 +800,10 @@ db_create_event(THD *thd, event_timed *et, my_bool create_if_not,
((
Field_timestamp
*
)
table
->
field
[
EVEX_FIELD_CREATED
])
->
set_time
();
// evex_fill_row() calls my_error() in case of error so no need to handle it here
/*
evex_fill_row() calls my_error() in case of error so no need to
handle it here
*/
if
((
ret
=
evex_fill_row
(
thd
,
table
,
et
,
false
)))
goto
err
;
...
...
@@ -813,7 +817,7 @@ db_create_event(THD *thd, event_timed *et, my_bool create_if_not,
if
(
mysql_bin_log
.
is_open
())
{
thd
->
clear_error
();
/
/ Such a statement can always go directly to binlog, no trans cache
/
* Such a statement can always go directly to binlog, no trans cache */
thd
->
binlog_query
(
THD
::
MYSQL_QUERY_TYPE
,
thd
->
query
,
thd
->
query_length
,
FALSE
,
FALSE
);
}
...
...
@@ -869,7 +873,7 @@ db_update_event(THD *thd, event_timed *et, sp_name *new_name)
goto
err
;
}
/
/ first look whether we overwrite
/
* first look whether we overwrite */
if
(
new_name
)
{
if
(
!
sortcmp_lex_string
(
et
->
name
,
new_name
->
m_name
,
system_charset_info
)
&&
...
...
@@ -898,13 +902,12 @@ db_update_event(THD *thd, event_timed *et, sp_name *new_name)
goto
err
;
}
store_record
(
table
,
record
[
1
]);
/
/ Don't update create on row update.
/
* Don't update create on row update. */
table
->
timestamp_field_type
=
TIMESTAMP_NO_AUTO_SET
;
/
/ evex_fill_row() calls my_error() in case of error so no need to handle it here
/
* evex_fill_row() calls my_error() in case of error so no need to handle it here */
if
((
ret
=
evex_fill_row
(
thd
,
table
,
et
,
true
)))
goto
err
;
...
...
@@ -922,7 +925,7 @@ db_update_event(THD *thd, event_timed *et, sp_name *new_name)
goto
err
;
}
/
/ close mysql.event or we crash later when loading the event from disk
/
* close mysql.event or we crash later when loading the event from disk */
close_thread_tables
(
thd
);
DBUG_RETURN
(
0
);
...
...
@@ -999,7 +1002,7 @@ done:
delete
et
;
et
=
0
;
}
/
/ don't close the table if we haven't opened it ourselves
/
* don't close the table if we haven't opened it ourselves */
if
(
!
tbl
&&
table
)
close_thread_tables
(
thd
);
*
ett
=
et
;
...
...
@@ -1021,7 +1024,6 @@ done:
RETURN VALUE
0 - OK
< 0 - error (in this case underlying functions call my_error()).
*/
static
int
...
...
@@ -1040,7 +1042,7 @@ evex_load_and_compile_event(THD * thd, sp_name *spn, LEX_STRING definer,
thd
->
mem_root
=
&
evex_mem_root
;
thd
->
reset_n_backup_open_tables_state
(
&
backup
);
/
/ no need to use my_error() here because db_find_event() has done it
/
* no need to use my_error() here because db_find_event() has done it */
ret
=
db_find_event
(
thd
,
spn
,
&
definer
,
&
ett
,
NULL
,
NULL
);
thd
->
restore_backup_open_tables_state
(
&
backup
);
if
(
ret
)
...
...
@@ -1092,7 +1094,7 @@ done:
ALTER EVENT.
RETURNS
0
-
OK (always)
0 OK (always)
*/
static
int
...
...
@@ -1135,7 +1137,7 @@ evex_remove_from_cache(LEX_STRING *db, LEX_STRING *name, bool use_lock,
}
DBUG_PRINT
(
"evex_remove_from_cache"
,
(
"delete from queue"
));
evex_queue_delete_element
(
&
EVEX_EQ_NAME
,
i
);
/
/ ok, we have cleaned
/
* ok, we have cleaned */
ret
=
0
;
goto
done
;
}
...
...
@@ -1189,7 +1191,7 @@ evex_create_event(THD *thd, event_timed *et, uint create_options,
VOID
(
pthread_mutex_unlock
(
&
LOCK_evex_running
));
done:
/
/ No need to close the table, it will be closed in sql_parse::do_command
/
* No need to close the table, it will be closed in sql_parse::do_command */
DBUG_RETURN
(
ret
);
}
...
...
@@ -1263,7 +1265,6 @@ done:
et event's name
drop_if_exists if set and the event not existing => warning onto the stack
rows_affected affected number of rows is returned heres
*/
int
db_drop_event
(
THD
*
thd
,
event_timed
*
et
,
bool
drop_if_exists
,
...
...
@@ -1366,7 +1367,6 @@ evex_drop_event(THD *thd, event_timed *et, bool drop_if_exists,
RETURNS
0 - OK
1 - Error during writing to the wire
*/
int
...
...
@@ -1417,7 +1417,6 @@ evex_show_create_event(THD *thd, sp_name *spn, LEX_STRING definer)
protocol
->
store
((
char
*
)
sql_mode_str
,
sql_mode_len
,
system_charset_info
);
protocol
->
store
(
show_str
.
c_ptr
(),
show_str
.
length
(),
system_charset_info
);
ret
=
protocol
->
write
();
send_eof
(
thd
);
...
...
@@ -1453,7 +1452,6 @@ evex_show_create_event(THD *thd, sp_name *spn, LEX_STRING definer)
spawned and can_spawn() is the right method.
- event_timed::can_spawn() returns false -> being runned ATM
just set the flags so it should drop itself.
*/
int
...
...
@@ -1525,7 +1523,7 @@ evex_drop_db_events(THD *thd, char *db)
}
DBUG_PRINT
(
"info"
,(
"%d elements in the queue"
,
evex_queue_num_elements
(
EVEX_EQ_NAME
)));
evex_queue_delete_element
(
&
EVEX_EQ_NAME
,
i
);
//
1
is top
evex_queue_delete_element
(
&
EVEX_EQ_NAME
,
i
);
//
0
is top
DBUG_PRINT
(
"info"
,(
"%d elements in the queue"
,
evex_queue_num_elements
(
EVEX_EQ_NAME
)));
/*
...
...
@@ -1602,7 +1600,7 @@ end:
VOID
(
pthread_mutex_unlock
(
&
LOCK_event_arrays
));
end_read_record
(
&
read_record_info
);
thd
->
version
--
;
// Force close to free memory
thd
->
version
--
;
/* Force close to free memory */
close_thread_tables
(
thd
);
...
...
sql/event_executor.cc
View file @
780d6344
...
...
@@ -135,7 +135,7 @@ evex_check_system_tables()
bool
not_used
;
Open_tables_state
backup
;
/
/ thd is 0x0 during boot of the server. Later it's !=0x0
/
* thd is 0x0 during boot of the server. Later it's !=0x0 */
if
(
!
thd
)
return
;
...
...
@@ -206,7 +206,7 @@ init_events()
if
(
event_executor_running_global_var
)
{
#ifndef DBUG_FAULTY_THR
/
/TODO Andrey: Change the error code returned!
/
* TODO Andrey: Change the error code returned! */
if
(
pthread_create
(
&
th
,
&
connection_attrib
,
event_executor_main
,(
void
*
)
NULL
))
DBUG_RETURN
(
ER_SLAVE_THREAD
);
#else
...
...
@@ -339,14 +339,14 @@ executor_wait_till_next_event_exec(THD *thd)
if
(
et
->
dropped
)
et
->
drop
(
thd
);
delete
et
;
evex_queue_delete_element
(
&
EVEX_EQ_NAME
,
1
);
// 1 is top
evex_queue_delete_element
(
&
EVEX_EQ_NAME
,
0
);
// 0 is top, internally 1
VOID
(
pthread_mutex_unlock
(
&
LOCK_event_arrays
));
sql_print_information
(
"Event found disabled, dropping."
);
DBUG_RETURN
(
1
);
}
DBUG_PRINT
(
"evex main thread"
,(
"computing time to sleep till next exec"
));
/
/ set the internal clock of thd
/
* set the internal clock of thd */
thd
->
end_time
();
my_tz_UTC
->
gmt_sec_to_TIME
(
&
time_now
,
thd
->
query_start
());
t2sleep
=
evex_time_diff
(
&
et
->
execute_at
,
&
time_now
);
...
...
@@ -387,7 +387,7 @@ executor_wait_till_next_event_exec(THD *thd)
SYNOPSIS
event_executor_main()
arg
-
unused
arg unused
NOTES
1. The host of the thead is my_localhost
...
...
@@ -407,11 +407,10 @@ event_executor_main(void *arg)
DBUG_PRINT
(
"event_executor_main"
,
(
"EVEX thread started"
));
/
/ init memory root
/
* init memory root */
init_alloc_root
(
&
evex_mem_root
,
MEM_ROOT_BLOCK_SIZE
,
MEM_ROOT_PREALLOC
);
// needs to call my_thread_init(), otherwise we get a coredump in DBUG_ stuff
/* needs to call my_thread_init(), otherwise we get a coredump in DBUG_ stuff*/
my_thread_init
();
if
(
sizeof
(
my_time_t
)
!=
sizeof
(
time_t
))
...
...
@@ -422,8 +421,8 @@ event_executor_main(void *arg)
goto
err_no_thd
;
}
/
/TODO Andrey: Check for NULL
if
(
!
(
thd
=
new
THD
))
// note that contructor of THD uses DBUG_ !
/
* note that contructor of THD uses DBUG_ ! */
if
(
!
(
thd
=
new
THD
))
{
sql_print_error
(
"SCHEDULER: Cannot create THD for the main thread."
);
goto
err_no_thd
;
...
...
@@ -584,10 +583,10 @@ restart_ticking:
}
DBUG_PRINT
(
"evex main thread"
,(
"unlocking"
));
VOID
(
pthread_mutex_unlock
(
&
LOCK_event_arrays
));
}
/
/ while
}
/
* while */
finish:
/
/ First manifest that this thread does not work and then destroy
/
* First manifest that this thread does not work and then destroy */
VOID
(
pthread_mutex_lock
(
&
LOCK_evex_running
));
evex_is_running
=
false
;
evex_main_thread_id
=
0
;
...
...
@@ -627,7 +626,7 @@ finish:
delete
et
;
}
VOID
(
pthread_mutex_unlock
(
&
LOCK_event_arrays
));
/
/ ... then we can thrash the whole queue at once
/
* ... then we can thrash the whole queue at once */
evex_queue_destroy
(
&
EVEX_EQ_NAME
);
thd
->
proc_info
=
"Clearing"
;
...
...
@@ -657,7 +656,7 @@ err_no_thd:
my_thread_end
();
pthread_exit
(
0
);
#endif
DBUG_RETURN
(
0
);
// Can't return anything here
DBUG_RETURN
(
0
);
// Can't return anything here
}
...
...
@@ -667,7 +666,7 @@ err_no_thd:
SYNOPSIS
event_executor_worker()
arg
- t
he event_timed object to be processed
arg
T
he event_timed object to be processed
*/
pthread_handler_t
...
...
@@ -684,7 +683,7 @@ event_executor_worker(void *event_void)
#ifndef DBUG_FAULTY_THR
my_thread_init
();
if
(
!
(
thd
=
new
THD
))
/
/ note that contructor of THD uses DBUG_ !
if
(
!
(
thd
=
new
THD
))
/
* note that contructor of THD uses DBUG_ ! */
{
sql_print_error
(
"SCHEDULER: Cannot create a THD structure in an worker."
);
goto
err_no_thd
;
...
...
@@ -699,7 +698,7 @@ event_executor_worker(void *event_void)
thd
->
init_for_queries
();
/
/ make this thread visible it has no vio -> show processlist needs this flag
/
* make this thread visible it has no vio -> show processlist needs this flag */
thd
->
system_thread
=
1
;
VOID
(
pthread_mutex_lock
(
&
LOCK_thread_count
));
...
...
@@ -780,8 +779,8 @@ err_no_thd:
thd - Thread context. Used for memory allocation in some cases.
RETURNS
0
-
OK
!0
-
Error
0 OK
!0 Error
NOTES
Reports the error to the console
...
...
@@ -847,7 +846,7 @@ evex_load_events_from_db(THD *thd)
break
;
}
/
/ let's find when to be executed
/
* let's find when to be executed */
if
(
et
->
compute_next_execution_time
())
{
sql_print_error
(
"SCHEDULER: Error while computing execution time of %s.%s."
...
...
@@ -869,7 +868,8 @@ end:
VOID
(
pthread_mutex_unlock
(
&
LOCK_event_arrays
));
end_read_record
(
&
read_record_info
);
thd
->
version
--
;
// Force close to free memory
/* Force close to free memory */
thd
->
version
--
;
close_thread_tables
(
thd
);
if
(
!
ret
)
...
...
@@ -891,13 +891,13 @@ end:
car - the new value
Returns
0
-
OK (always)
0 OK (always)
*/
bool
sys_var_event_executor
::
update
(
THD
*
thd
,
set_var
*
var
)
{
/
/ here start the thread if not running.
/
* here start the thread if not running. */
DBUG_ENTER
(
"sys_var_event_executor::update"
);
VOID
(
pthread_mutex_lock
(
&
LOCK_evex_running
));
*
value
=
var
->
save_result
.
ulong_value
;
...
...
@@ -954,7 +954,8 @@ evex_print_warnings(THD *thd, event_timed *et)
while
((
err
=
it
++
))
{
String
err_msg
(
msg_buf
,
sizeof
(
msg_buf
),
system_charset_info
);
err_msg
.
length
(
0
);
// set it to 0 or we start adding at the end
/* set it to 0 or we start adding at the end. That's the trick ;) */
err_msg
.
length
(
0
);
if
(
!
prefix
.
length
())
{
prefix
.
append
(
"SCHEDULER: ["
);
...
...
sql/event_timed.cc
View file @
780d6344
...
...
@@ -116,7 +116,7 @@ event_timed::init_body(THD *thd)
body_begin
,
thd
->
lex
->
ptr
));
body
.
length
=
thd
->
lex
->
ptr
-
body_begin
;
/
/ Trim nuls at the end
/
* Trim nuls at the end */
while
(
body
.
length
&&
body_begin
[
body
.
length
-
1
]
==
'\0'
)
body
.
length
--
;
...
...
@@ -161,14 +161,13 @@ event_timed::init_execute_at(THD *thd, Item *expr)
/* no starts and/or ends in case of execute_at */
DBUG_PRINT
(
"info"
,
(
"starts_null && ends_null should be 1 is %d"
,
(
starts_null
&&
ends_null
)))
(
starts_null
&&
ends_null
)));
DBUG_ASSERT
(
starts_null
&&
ends_null
);
/
/ let's check whether time is in the past
/
* let's check whether time is in the past */
thd
->
variables
.
time_zone
->
gmt_sec_to_TIME
(
&
time_tmp
,
(
my_time_t
)
thd
->
query_start
());
if
((
not_used
=
expr
->
get_date
(
&
ltime
,
TIME_NO_ZERO_DATE
)))
DBUG_RETURN
(
ER_WRONG_VALUE
);
...
...
@@ -252,14 +251,14 @@ event_timed::init_interval(THD *thd, Item *expr, interval_type new_interval)
case
INTERVAL_DAY_MINUTE
:
expression
=
(
interval
.
day
*
24
+
interval
.
hour
)
*
60
+
interval
.
minute
;
break
;
case
INTERVAL_HOUR_SECOND
:
/
/ day is anyway 0
case
INTERVAL_HOUR_SECOND
:
/
* day is anyway 0 */
case
INTERVAL_DAY_SECOND
:
/* DAY_SECOND having problems because of leap seconds? */
expression
=
((
interval
.
day
*
24
+
interval
.
hour
)
*
60
+
interval
.
minute
)
*
60
+
interval
.
second
;
break
;
case
INTERVAL_MINUTE_MICROSECOND
:
/
/ day and hour are 0
case
INTERVAL_HOUR_MICROSECOND
:
// day is anyway 0
case
INTERVAL_MINUTE_MICROSECOND
:
/
* day and hour are 0 */
case
INTERVAL_HOUR_MICROSECOND
:
/* day is anyway 0 */
case
INTERVAL_DAY_MICROSECOND
:
DBUG_RETURN
(
EVEX_MICROSECOND_UNSUP
);
expression
=
((((
interval
.
day
*
24
)
+
interval
.
hour
)
*
60
+
interval
.
minute
)
*
60
+
...
...
@@ -535,7 +534,7 @@ event_timed::load_from_row(MEM_ROOT *mem_root, TABLE *table)
et
->
definer_user
.
str
=
strmake_root
(
mem_root
,
et
->
definer
.
str
,
len
);
et
->
definer_user
.
length
=
len
;
len
=
et
->
definer
.
length
-
len
-
1
;
//1 is because of @
et
->
definer_host
.
str
=
strmake_root
(
mem_root
,
ptr
+
1
,
len
);
/
/1: because of @
et
->
definer_host
.
str
=
strmake_root
(
mem_root
,
ptr
+
1
,
len
);
/
* 1:because of @*/
et
->
definer_host
.
length
=
len
;
et
->
starts_null
=
table
->
field
[
EVEX_FIELD_STARTS
]
->
is_null
();
...
...
@@ -597,14 +596,14 @@ event_timed::load_from_row(MEM_ROOT *mem_root, TABLE *table)
#endif
last_executed_changed
=
false
;
/
/ ToDo : Andrey . Find a way not to allocate ptr on event_mem_root
/
* ToDo : Andrey . Find a way not to allocate ptr on event_mem_root */
if
((
ptr
=
get_field
(
mem_root
,
table
->
field
[
EVEX_FIELD_STATUS
]))
==
NullS
)
goto
error
;
DBUG_PRINT
(
"load_from_row"
,
(
"Event [%s] is [%s]"
,
et
->
name
.
str
,
ptr
));
et
->
status
=
(
ptr
[
0
]
==
'E'
?
MYSQL_EVENT_ENABLED
:
MYSQL_EVENT_DISABLED
);
/
/ ToDo : Andrey . Find a way not to allocate ptr on event_mem_root
/
* ToDo : Andrey . Find a way not to allocate ptr on event_mem_root */
if
((
ptr
=
get_field
(
mem_root
,
table
->
field
[
EVEX_FIELD_ON_COMPLETION
]))
==
NullS
)
goto
error
;
...
...
@@ -931,7 +930,7 @@ event_timed::mark_last_executed(THD *thd)
thd
->
end_time
();
my_tz_UTC
->
gmt_sec_to_TIME
(
&
time_now
,
(
my_time_t
)
thd
->
query_start
());
last_executed
=
time_now
;
/
/ was execute_at
last_executed
=
time_now
;
/
* was execute_at */
#ifdef ANDREY_0
last_executed
=
execute_at
;
#endif
...
...
@@ -1086,7 +1085,7 @@ event_timed::get_create_event(THD *thd, String *buf)
}
else
{
char
dtime_buff
[
20
*
2
+
32
];
/
/ +32 to make my_snprintf_{8bit|ucs2} happy
char
dtime_buff
[
20
*
2
+
32
];
/
* +32 to make my_snprintf_{8bit|ucs2} happy */
buf
->
append
(
STRING_WITH_LEN
(
"AT '"
));
/*
Pass the buffer and the second param tells fills the buffer and
...
...
@@ -1498,7 +1497,6 @@ event_timed::spawn_thread_finish(THD *thd)
Returns
0 - ok
1 - not locked by this thread
*/
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment