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