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
45598df7
Commit
45598df7
authored
Jun 20, 2006
by
andrey@lmy004
Browse files
Options
Browse Files
Download
Plain Diff
manual merge
parents
f237fa78
40fe2b9a
Changes
20
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
239 additions
and
211 deletions
+239
-211
.bzrignore
.bzrignore
+1
-0
include/my_time.h
include/my_time.h
+1
-1
libmysqld/CMakeLists.txt
libmysqld/CMakeLists.txt
+1
-1
libmysqld/Makefile.am
libmysqld/Makefile.am
+1
-1
sql/CMakeLists.txt
sql/CMakeLists.txt
+1
-1
sql/Makefile.am
sql/Makefile.am
+2
-2
sql/event_scheduler.cc
sql/event_scheduler.cc
+42
-11
sql/event_scheduler.h
sql/event_scheduler.h
+6
-5
sql/event_timed.cc
sql/event_timed.cc
+8
-3
sql/event_timed.h
sql/event_timed.h
+3
-82
sql/events.cc
sql/events.cc
+8
-91
sql/events.h
sql/events.h
+97
-0
sql/events_priv.h
sql/events_priv.h
+1
-8
sql/mysql_priv.h
sql/mysql_priv.h
+4
-0
sql/mysqld.cc
sql/mysqld.cc
+1
-1
sql/sql_db.cc
sql/sql_db.cc
+1
-1
sql/sql_parse.cc
sql/sql_parse.cc
+2
-1
sql/sql_show.cc
sql/sql_show.cc
+2
-1
sql/sql_yacc.yy
sql/sql_yacc.yy
+1
-1
sql/time.cc
sql/time.cc
+56
-0
No files found.
.bzrignore
View file @
45598df7
...
@@ -462,6 +462,7 @@ libmysqld/event.cc
...
@@ -462,6 +462,7 @@ libmysqld/event.cc
libmysqld/event_executor.cc
libmysqld/event_executor.cc
libmysqld/event_scheduler.cc
libmysqld/event_scheduler.cc
libmysqld/event_timed.cc
libmysqld/event_timed.cc
libmysqld/events.cc
libmysqld/examples/client_test.c
libmysqld/examples/client_test.c
libmysqld/examples/client_test.cc
libmysqld/examples/client_test.cc
libmysqld/examples/completion_hash.cc
libmysqld/examples/completion_hash.cc
...
...
include/my_time.h
View file @
45598df7
...
@@ -104,7 +104,7 @@ enum interval_type
...
@@ -104,7 +104,7 @@ enum interval_type
INTERVAL_YEAR_MONTH
,
INTERVAL_DAY_HOUR
,
INTERVAL_DAY_MINUTE
,
INTERVAL_YEAR_MONTH
,
INTERVAL_DAY_HOUR
,
INTERVAL_DAY_MINUTE
,
INTERVAL_DAY_SECOND
,
INTERVAL_HOUR_MINUTE
,
INTERVAL_HOUR_SECOND
,
INTERVAL_DAY_SECOND
,
INTERVAL_HOUR_MINUTE
,
INTERVAL_HOUR_SECOND
,
INTERVAL_MINUTE_SECOND
,
INTERVAL_DAY_MICROSECOND
,
INTERVAL_HOUR_MICROSECOND
,
INTERVAL_MINUTE_SECOND
,
INTERVAL_DAY_MICROSECOND
,
INTERVAL_HOUR_MICROSECOND
,
INTERVAL_MINUTE_MICROSECOND
,
INTERVAL_SECOND_MICROSECOND
INTERVAL_MINUTE_MICROSECOND
,
INTERVAL_SECOND_MICROSECOND
,
INTERVAL_LAST
};
};
C_MODE_END
C_MODE_END
...
...
libmysqld/CMakeLists.txt
View file @
45598df7
...
@@ -29,7 +29,7 @@ ADD_LIBRARY(mysqldemb emb_qcache.cc libmysqld.c lib_sql.cc
...
@@ -29,7 +29,7 @@ ADD_LIBRARY(mysqldemb emb_qcache.cc libmysqld.c lib_sql.cc
../libmysql/libmysql.c ../sql/password.c ../sql-common/client.c
../libmysql/libmysql.c ../sql/password.c ../sql-common/client.c
../sql-common/my_time.c ../sql-common/my_user.c
../sql-common/my_time.c ../sql-common/my_user.c
../sql-common/pack.c ../sql/derror.cc ../sql/event_executor.cc
../sql-common/pack.c ../sql/derror.cc ../sql/event_executor.cc
../sql/event_timed.cc ../sql/event.cc ../sql/discover.cc
../sql/event_timed.cc ../sql/event
s
.cc ../sql/discover.cc
../sql/field_conv.cc ../sql/field.cc ../sql/filesort.cc
../sql/field_conv.cc ../sql/field.cc ../sql/filesort.cc
../sql/gstream.cc ../sql/ha_heap.cc ../sql/ha_myisam.cc
../sql/gstream.cc ../sql/ha_heap.cc ../sql/ha_myisam.cc
../sql/ha_myisammrg.cc
${
mysql_se_ha_src
}
../sql/ha_myisammrg.cc
${
mysql_se_ha_src
}
...
...
libmysqld/Makefile.am
View file @
45598df7
...
@@ -68,7 +68,7 @@ sqlsources = derror.cc field.cc field_conv.cc strfunc.cc filesort.cc \
...
@@ -68,7 +68,7 @@ sqlsources = derror.cc field.cc field_conv.cc strfunc.cc filesort.cc \
spatial.cc gstream.cc sql_help.cc tztime.cc sql_cursor.cc
\
spatial.cc gstream.cc sql_help.cc tztime.cc sql_cursor.cc
\
sp_head.cc sp_pcontext.cc sp.cc sp_cache.cc sp_rcontext.cc
\
sp_head.cc sp_pcontext.cc sp.cc sp_cache.cc sp_rcontext.cc
\
parse_file.cc sql_view.cc sql_trigger.cc my_decimal.cc
\
parse_file.cc sql_view.cc sql_trigger.cc my_decimal.cc
\
event_scheduler.cc event.cc event_timed.cc
\
event_scheduler.cc event
s
.cc event_timed.cc
\
rpl_filter.cc sql_partition.cc sql_builtin.cc sql_plugin.cc
\
rpl_filter.cc sql_partition.cc sql_builtin.cc sql_plugin.cc
\
sql_tablespace.cc
\
sql_tablespace.cc
\
rpl_injector.cc my_user.c partition_info.cc
rpl_injector.cc my_user.c partition_info.cc
...
...
sql/CMakeLists.txt
View file @
45598df7
...
@@ -52,7 +52,7 @@ ADD_EXECUTABLE(mysqld ../sql-common/client.c derror.cc des_key_file.cc
...
@@ -52,7 +52,7 @@ ADD_EXECUTABLE(mysqld ../sql-common/client.c derror.cc des_key_file.cc
sql_update.cc sql_view.cc strfunc.cc table.cc thr_malloc.cc
sql_update.cc sql_view.cc strfunc.cc table.cc thr_malloc.cc
time.cc tztime.cc uniques.cc unireg.cc item_xmlfunc.cc
time.cc tztime.cc uniques.cc unireg.cc item_xmlfunc.cc
rpl_tblmap.cc sql_binlog.cc event_scheduler.cc event_timed.cc
rpl_tblmap.cc sql_binlog.cc event_scheduler.cc event_timed.cc
sql_tablespace.cc event.cc ../sql-common/my_user.c
sql_tablespace.cc event
s
.cc ../sql-common/my_user.c
partition_info.cc
partition_info.cc
${
PROJECT_SOURCE_DIR
}
/sql/sql_yacc.cc
${
PROJECT_SOURCE_DIR
}
/sql/sql_yacc.cc
${
PROJECT_SOURCE_DIR
}
/sql/sql_yacc.h
${
PROJECT_SOURCE_DIR
}
/sql/sql_yacc.h
...
...
sql/Makefile.am
View file @
45598df7
...
@@ -64,7 +64,7 @@ noinst_HEADERS = item.h item_func.h item_sum.h item_cmpfunc.h \
...
@@ -64,7 +64,7 @@ noinst_HEADERS = item.h item_func.h item_sum.h item_cmpfunc.h \
tztime.h my_decimal.h
\
tztime.h my_decimal.h
\
sp_head.h sp_pcontext.h sp_rcontext.h sp.h sp_cache.h
\
sp_head.h sp_pcontext.h sp_rcontext.h sp.h sp_cache.h
\
parse_file.h sql_view.h sql_trigger.h
\
parse_file.h sql_view.h sql_trigger.h
\
sql_array.h sql_cursor.h event
.h event
_priv.h
\
sql_array.h sql_cursor.h event
s.h events
_priv.h
\
sql_plugin.h authors.h sql_partition.h
\
sql_plugin.h authors.h sql_partition.h
\
partition_info.h partition_element.h event_scheduler.h
\
partition_info.h partition_element.h event_scheduler.h
\
contributors.h
contributors.h
...
@@ -104,7 +104,7 @@ mysqld_SOURCES = sql_lex.cc sql_handler.cc sql_partition.cc \
...
@@ -104,7 +104,7 @@ mysqld_SOURCES = sql_lex.cc sql_handler.cc sql_partition.cc \
tztime.cc my_time.c my_user.c my_decimal.cc
\
tztime.cc my_time.c my_user.c my_decimal.cc
\
sp_head.cc sp_pcontext.cc sp_rcontext.cc sp.cc
\
sp_head.cc sp_pcontext.cc sp_rcontext.cc sp.cc
\
sp_cache.cc parse_file.cc sql_trigger.cc
\
sp_cache.cc parse_file.cc sql_trigger.cc
\
event_scheduler.cc event.cc event_timed.cc
\
event_scheduler.cc event
s
.cc event_timed.cc
\
sql_plugin.cc sql_binlog.cc
\
sql_plugin.cc sql_binlog.cc
\
sql_builtin.cc sql_tablespace.cc partition_info.cc
sql_builtin.cc sql_tablespace.cc partition_info.cc
...
...
sql/event_scheduler.cc
View file @
45598df7
...
@@ -14,8 +14,10 @@
...
@@ -14,8 +14,10 @@
along with this program; if not, write to the Free Software
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#include "event_priv.h"
#include "mysql_priv.h"
#include "event.h"
#include "events_priv.h"
#include "events.h"
#include "event_timed.h"
#include "event_scheduler.h"
#include "event_scheduler.h"
#include "sp_head.h"
#include "sp_head.h"
...
@@ -46,8 +48,8 @@
...
@@ -46,8 +48,8 @@
The scheduler only manages execution of the events. Their creation,
The scheduler only manages execution of the events. Their creation,
alteration and deletion is delegated to other routines found in event.cc .
alteration and deletion is delegated to other routines found in event.cc .
These routines interact with the scheduler :
These routines interact with the scheduler :
- CREATE EVENT -> Event_scheduler::
add
_event()
- CREATE EVENT -> Event_scheduler::
create
_event()
- ALTER EVENT -> Event_scheduler::
replac
e_event()
- ALTER EVENT -> Event_scheduler::
updat
e_event()
- DROP EVENT -> Event_scheduler::drop_event()
- DROP EVENT -> Event_scheduler::drop_event()
There is one mutex in the single Event_scheduler object which controls
There is one mutex in the single Event_scheduler object which controls
...
@@ -298,6 +300,35 @@ public:
...
@@ -298,6 +300,35 @@ public:
};
};
/*
Compares the execute_at members of 2 Event_timed instances.
Used as callback for the prioritized queue when shifting
elements inside.
SYNOPSIS
event_timed_compare_q()
vptr - not used (set it to NULL)
a - first Event_timed object
b - second Event_timed object
RETURN VALUE
-1 - a->execute_at < b->execute_at
0 - a->execute_at == b->execute_at
1 - a->execute_at > b->execute_at
NOTES
execute_at.second_part is not considered during comparison
*/
static
int
event_timed_compare_q
(
void
*
vptr
,
byte
*
a
,
byte
*
b
)
{
return
my_time_compare
(
&
((
Event_timed
*
)
a
)
->
execute_at
,
&
((
Event_timed
*
)
b
)
->
execute_at
);
}
/*
/*
Prints the stack of infos, warnings, errors from thd to
Prints the stack of infos, warnings, errors from thd to
the console so it can be fetched by the logs-into-tables and
the console so it can be fetched by the logs-into-tables and
...
@@ -740,10 +771,10 @@ Event_scheduler::destroy()
...
@@ -740,10 +771,10 @@ Event_scheduler::destroy()
/*
/*
Adds an event to
the scheduler queue
Creates an event in
the scheduler queue
SYNOPSIS
SYNOPSIS
Event_scheduler::
add
_event()
Event_scheduler::
create
_event()
et The event to add
et The event to add
check_existence Whether to check if already loaded.
check_existence Whether to check if already loaded.
...
@@ -753,11 +784,11 @@ Event_scheduler::destroy()
...
@@ -753,11 +784,11 @@ Event_scheduler::destroy()
*/
*/
enum
Event_scheduler
::
enum_error_code
enum
Event_scheduler
::
enum_error_code
Event_scheduler
::
add
_event
(
THD
*
thd
,
Event_timed
*
et
,
bool
check_existence
)
Event_scheduler
::
create
_event
(
THD
*
thd
,
Event_timed
*
et
,
bool
check_existence
)
{
{
enum
enum_error_code
res
;
enum
enum_error_code
res
;
Event_timed
*
et_new
;
Event_timed
*
et_new
;
DBUG_ENTER
(
"Event_scheduler::
add
_event"
);
DBUG_ENTER
(
"Event_scheduler::
create
_event"
);
DBUG_PRINT
(
"enter"
,
(
"thd=%p et=%p lock=%p"
,
thd
,
et
,
&
LOCK_scheduler_data
));
DBUG_PRINT
(
"enter"
,
(
"thd=%p et=%p lock=%p"
,
thd
,
et
,
&
LOCK_scheduler_data
));
LOCK_SCHEDULER_DATA
();
LOCK_SCHEDULER_DATA
();
...
@@ -859,7 +890,7 @@ Event_scheduler::drop_event(THD *thd, Event_timed *et)
...
@@ -859,7 +890,7 @@ Event_scheduler::drop_event(THD *thd, Event_timed *et)
/*
/*
Replaces an event in
the scheduler queue
Updates an event from
the scheduler queue
SYNOPSIS
SYNOPSIS
Event_scheduler::replace_event()
Event_scheduler::replace_event()
...
@@ -873,7 +904,7 @@ Event_scheduler::drop_event(THD *thd, Event_timed *et)
...
@@ -873,7 +904,7 @@ Event_scheduler::drop_event(THD *thd, Event_timed *et)
*/
*/
enum
Event_scheduler
::
enum_error_code
enum
Event_scheduler
::
enum_error_code
Event_scheduler
::
replac
e_event
(
THD
*
thd
,
Event_timed
*
et
,
Event_scheduler
::
updat
e_event
(
THD
*
thd
,
Event_timed
*
et
,
LEX_STRING
*
new_schema
,
LEX_STRING
*
new_schema
,
LEX_STRING
*
new_name
)
LEX_STRING
*
new_name
)
{
{
...
@@ -886,7 +917,7 @@ Event_scheduler::replace_event(THD *thd, Event_timed *et,
...
@@ -886,7 +917,7 @@ Event_scheduler::replace_event(THD *thd, Event_timed *et,
LINT_INIT
(
old_name
.
str
);
LINT_INIT
(
old_name
.
str
);
LINT_INIT
(
old_name
.
length
);
LINT_INIT
(
old_name
.
length
);
DBUG_ENTER
(
"Event_scheduler::
replac
e_event"
);
DBUG_ENTER
(
"Event_scheduler::
updat
e_event"
);
DBUG_PRINT
(
"enter"
,
(
"thd=%p et=%p et=[%s.%s] lock=%p"
,
DBUG_PRINT
(
"enter"
,
(
"thd=%p et=%p et=[%s.%s] lock=%p"
,
thd
,
et
,
et
->
dbname
.
str
,
et
->
name
.
str
,
&
LOCK_scheduler_data
));
thd
,
et
,
et
->
dbname
.
str
,
et
->
name
.
str
,
&
LOCK_scheduler_data
));
...
...
sql/event_scheduler.h
View file @
45598df7
...
@@ -16,6 +16,7 @@
...
@@ -16,6 +16,7 @@
along with this program; if not, write to the Free Software
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
class
Event_timed
;
class
THD
;
class
THD
;
typedef
bool
*
(
*
event_timed_identifier_comparator
)(
Event_timed
*
,
Event_timed
*
);
typedef
bool
*
(
*
event_timed_identifier_comparator
)(
Event_timed
*
,
Event_timed
*
);
...
@@ -26,7 +27,6 @@ events_init();
...
@@ -26,7 +27,6 @@ events_init();
void
void
events_shutdown
();
events_shutdown
();
class
Event_scheduler
class
Event_scheduler
{
{
public:
public:
...
@@ -66,14 +66,15 @@ public:
...
@@ -66,14 +66,15 @@ public:
/* Methods for queue management follow */
/* Methods for queue management follow */
enum
enum_error_code
enum
enum_error_code
add_event
(
THD
*
thd
,
Event_timed
*
et
,
bool
check_existence
);
create_event
(
THD
*
thd
,
Event_timed
*
et
,
bool
check_existence
);
enum
enum_error_code
update_event
(
THD
*
thd
,
Event_timed
*
et
,
LEX_STRING
*
new_schema
,
LEX_STRING
*
new_name
);
bool
bool
drop_event
(
THD
*
thd
,
Event_timed
*
et
);
drop_event
(
THD
*
thd
,
Event_timed
*
et
);
enum
enum_error_code
replace_event
(
THD
*
thd
,
Event_timed
*
et
,
LEX_STRING
*
new_schema
,
LEX_STRING
*
new_name
);
int
int
drop_schema_events
(
THD
*
thd
,
LEX_STRING
*
schema
);
drop_schema_events
(
THD
*
thd
,
LEX_STRING
*
schema
);
...
...
sql/event_timed.cc
View file @
45598df7
...
@@ -15,8 +15,10 @@
...
@@ -15,8 +15,10 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#define MYSQL_LEX 1
#define MYSQL_LEX 1
#include "event_priv.h"
#include "mysql_priv.h"
#include "event.h"
#include "events_priv.h"
#include "events.h"
#include "event_timed.h"
#include "sp_head.h"
#include "sp_head.h"
...
@@ -395,6 +397,8 @@ Event_timed::init_interval(THD *thd, Item *expr, interval_type new_interval)
...
@@ -395,6 +397,8 @@ Event_timed::init_interval(THD *thd, Item *expr, interval_type new_interval)
break
;
break
;
case
INTERVAL_MICROSECOND
:
case
INTERVAL_MICROSECOND
:
DBUG_RETURN
(
EVEX_MICROSECOND_UNSUP
);
DBUG_RETURN
(
EVEX_MICROSECOND_UNSUP
);
case
INTERVAL_LAST
:
DBUG_ASSERT
(
0
);
}
}
if
(
interval_tmp
.
neg
||
expression
>
EVEX_MAX_INTERVAL_VALUE
)
if
(
interval_tmp
.
neg
||
expression
>
EVEX_MAX_INTERVAL_VALUE
)
DBUG_RETURN
(
EVEX_BAD_PARAMS
);
DBUG_RETURN
(
EVEX_BAD_PARAMS
);
...
@@ -834,6 +838,8 @@ bool get_next_time(TIME *next, TIME *start, TIME *time_now, TIME *last_exec,
...
@@ -834,6 +838,8 @@ bool get_next_time(TIME *next, TIME *start, TIME *time_now, TIME *last_exec,
*/
*/
DBUG_RETURN
(
1
);
DBUG_RETURN
(
1
);
break
;
break
;
case
INTERVAL_LAST
:
DBUG_ASSERT
(
0
);
}
}
DBUG_PRINT
(
"info"
,
(
"seconds=%ld months=%ld"
,
seconds
,
months
));
DBUG_PRINT
(
"info"
,
(
"seconds=%ld months=%ld"
,
seconds
,
months
));
if
(
seconds
)
if
(
seconds
)
...
@@ -1279,7 +1285,6 @@ done:
...
@@ -1279,7 +1285,6 @@ done:
DBUG_RETURN
(
ret
);
DBUG_RETURN
(
ret
);
}
}
extern
LEX_STRING
interval_type_to_name
[];
/*
/*
Get SHOW CREATE EVENT as string
Get SHOW CREATE EVENT as string
...
...
sql/event.h
→
sql/event
_timed
.h
View file @
45598df7
#ifndef _EVENT_H_
#ifndef _EVENT_
TIMED_
H_
#define _EVENT_H_
#define _EVENT_
TIMED_
H_
/* Copyright (C) 2004-2006 MySQL AB
/* Copyright (C) 2004-2006 MySQL AB
This program is free software; you can redistribute it and/or modify
This program is free software; you can redistribute it and/or modify
...
@@ -17,7 +17,6 @@
...
@@ -17,7 +17,6 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#define EVEX_OK 0
#define EVEX_OK 0
#define EVEX_KEY_NOT_FOUND -1
#define EVEX_KEY_NOT_FOUND -1
#define EVEX_OPEN_TABLE_FAILED -2
#define EVEX_OPEN_TABLE_FAILED -2
...
@@ -40,83 +39,6 @@
...
@@ -40,83 +39,6 @@
#define EVENT_NOT_USED (1L << 1)
#define EVENT_NOT_USED (1L << 1)
#define EVENT_FREE_WHEN_FINISHED (1L << 2)
#define EVENT_FREE_WHEN_FINISHED (1L << 2)
class
Event_timed
;
class
Events
{
public:
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 :) */
};
static
int
create_event
(
THD
*
thd
,
Event_timed
*
et
,
uint
create_options
,
uint
*
rows_affected
);
static
int
update_event
(
THD
*
thd
,
Event_timed
*
et
,
sp_name
*
new_name
,
uint
*
rows_affected
);
static
int
drop_event
(
THD
*
thd
,
Event_timed
*
et
,
bool
drop_if_exists
,
uint
*
rows_affected
);
static
int
open_event_table
(
THD
*
thd
,
enum
thr_lock_type
lock_type
,
TABLE
**
table
);
static
int
show_create_event
(
THD
*
thd
,
sp_name
*
spn
);
static
int
reconstruct_interval_expression
(
String
*
buf
,
interval_type
interval
,
longlong
expression
);
static
int
drop_schema_events
(
THD
*
thd
,
char
*
db
);
static
int
dump_internal_status
(
THD
*
thd
);
static
int
init
();
static
void
shutdown
();
static
void
init_mutexes
();
static
void
destroy_mutexes
();
private:
/* Prevent use of these */
Events
(
const
Events
&
);
void
operator
=
(
Events
&
);
};
class
sp_head
;
class
sp_head
;
...
@@ -292,5 +214,4 @@ public:
...
@@ -292,5 +214,4 @@ public:
set_thread_id
(
ulong
tid
)
{
thread_id
=
tid
;
}
set_thread_id
(
ulong
tid
)
{
thread_id
=
tid
;
}
};
};
#endif
/* _EVENT_H_ */
#endif
/* _EVENT_H_ */
sql/event.cc
→
sql/event
s
.cc
View file @
45598df7
...
@@ -14,8 +14,10 @@
...
@@ -14,8 +14,10 @@
along with this program; if not, write to the Free Software
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#include "event_priv.h"
#include "mysql_priv.h"
#include "event.h"
#include "events_priv.h"
#include "events.h"
#include "event_timed.h"
#include "event_scheduler.h"
#include "event_scheduler.h"
#include "sp.h"
#include "sp.h"
#include "sp_head.h"
#include "sp_head.h"
...
@@ -160,35 +162,11 @@ TABLE_FIELD_W_TYPE event_table_fields[Events::FIELD_COUNT] = {
...
@@ -160,35 +162,11 @@ TABLE_FIELD_W_TYPE event_table_fields[Events::FIELD_COUNT] = {
};
};
LEX_STRING
interval_type_to_name
[]
=
{
{(
char
*
)
STRING_WITH_LEN
(
"YEAR"
)},
{(
char
*
)
STRING_WITH_LEN
(
"QUARTER"
)},
{(
char
*
)
STRING_WITH_LEN
(
"MONTH"
)},
{(
char
*
)
STRING_WITH_LEN
(
"DAY"
)},
{(
char
*
)
STRING_WITH_LEN
(
"HOUR"
)},
{(
char
*
)
STRING_WITH_LEN
(
"MINUTE"
)},
{(
char
*
)
STRING_WITH_LEN
(
"WEEK"
)},
{(
char
*
)
STRING_WITH_LEN
(
"SECOND"
)},
{(
char
*
)
STRING_WITH_LEN
(
"MICROSECOND"
)},
{(
char
*
)
STRING_WITH_LEN
(
"YEAR_MONTH"
)},
{(
char
*
)
STRING_WITH_LEN
(
"DAY_HOUR"
)},
{(
char
*
)
STRING_WITH_LEN
(
"DAY_MINUTE"
)},
{(
char
*
)
STRING_WITH_LEN
(
"DAY_SECOND"
)},
{(
char
*
)
STRING_WITH_LEN
(
"HOUR_MINUTE"
)},
{(
char
*
)
STRING_WITH_LEN
(
"HOUR_SECOND"
)},
{(
char
*
)
STRING_WITH_LEN
(
"MINUTE_SECOND"
)},
{(
char
*
)
STRING_WITH_LEN
(
"DAY_MICROSECOND"
)},
{(
char
*
)
STRING_WITH_LEN
(
"HOUR_MICROSECOND"
)},
{(
char
*
)
STRING_WITH_LEN
(
"MINUTE_MICROSECOND"
)},
{(
char
*
)
STRING_WITH_LEN
(
"SECOND_MICROSECOND"
)}
};
/*
/*
Compares 2 LEX strings regarding case.
Compares 2 LEX strings regarding case.
SYNOPSIS
SYNOPSIS
my_time_compare
()
sortcmp_lex_string
()
s - first LEX_STRING
s - first LEX_STRING
t - second LEX_STRING
t - second LEX_STRING
...
@@ -210,68 +188,6 @@ int sortcmp_lex_string(LEX_STRING s, LEX_STRING t, CHARSET_INFO *cs)
...
@@ -210,68 +188,6 @@ int sortcmp_lex_string(LEX_STRING s, LEX_STRING t, CHARSET_INFO *cs)
}
}
/*
Compares 2 TIME structures
SYNOPSIS
my_time_compare()
a - first TIME
b - second time
RETURN VALUE
-1 - a < b
0 - a == b
1 - a > b
NOTES
TIME.second_part is not considered during comparison
*/
int
my_time_compare
(
TIME
*
a
,
TIME
*
b
)
{
my_ulonglong
a_t
=
TIME_to_ulonglong_datetime
(
a
);
my_ulonglong
b_t
=
TIME_to_ulonglong_datetime
(
b
);
if
(
a_t
>
b_t
)
return
1
;
else
if
(
a_t
<
b_t
)
return
-
1
;
return
0
;
}
/*
Compares the execute_at members of 2 Event_timed instances.
Used as callback for the prioritized queue when shifting
elements inside.
SYNOPSIS
event_timed_compare()
vptr - not used (set it to NULL)
a - first Event_timed object
b - second Event_timed object
RETURNS:
-1 - a->execute_at < b->execute_at
0 - a->execute_at == b->execute_at
1 - a->execute_at > b->execute_at
Notes
execute_at.second_part is not considered during comparison
*/
int
event_timed_compare_q
(
void
*
vptr
,
byte
*
a
,
byte
*
b
)
{
return
my_time_compare
(
&
((
Event_timed
*
)
a
)
->
execute_at
,
&
((
Event_timed
*
)
b
)
->
execute_at
);
}
/*
/*
Reconstructs interval expression from interval type and expression
Reconstructs interval expression from interval type and expression
value that is in form of a value of the smalles entity:
value that is in form of a value of the smalles entity:
...
@@ -1002,7 +918,8 @@ Events::create_event(THD *thd, Event_timed *et, uint create_options,
...
@@ -1002,7 +918,8 @@ Events::create_event(THD *thd, Event_timed *et, uint create_options,
rows_affected
)))
rows_affected
)))
{
{
Event_scheduler
*
scheduler
=
Event_scheduler
::
get_instance
();
Event_scheduler
*
scheduler
=
Event_scheduler
::
get_instance
();
if
(
scheduler
->
initialized
()
&&
(
ret
=
scheduler
->
add_event
(
thd
,
et
,
true
)))
if
(
scheduler
->
initialized
()
&&
(
ret
=
scheduler
->
create_event
(
thd
,
et
,
true
)))
my_error
(
ER_EVENT_MODIFY_QUEUE_ERROR
,
MYF
(
0
),
ret
);
my_error
(
ER_EVENT_MODIFY_QUEUE_ERROR
,
MYF
(
0
),
ret
);
}
}
/* 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 */
...
@@ -1047,7 +964,7 @@ Events::update_event(THD *thd, Event_timed *et, sp_name *new_name,
...
@@ -1047,7 +964,7 @@ Events::update_event(THD *thd, Event_timed *et, sp_name *new_name,
{
{
Event_scheduler
*
scheduler
=
Event_scheduler
::
get_instance
();
Event_scheduler
*
scheduler
=
Event_scheduler
::
get_instance
();
if
(
scheduler
->
initialized
()
&&
if
(
scheduler
->
initialized
()
&&
(
ret
=
scheduler
->
replac
e_event
(
thd
,
et
,
(
ret
=
scheduler
->
updat
e_event
(
thd
,
et
,
new_name
?
&
new_name
->
m_db
:
NULL
,
new_name
?
&
new_name
->
m_db
:
NULL
,
new_name
?
&
new_name
->
m_name
:
NULL
)))
new_name
?
&
new_name
->
m_name
:
NULL
)))
my_error
(
ER_EVENT_MODIFY_QUEUE_ERROR
,
MYF
(
0
),
ret
);
my_error
(
ER_EVENT_MODIFY_QUEUE_ERROR
,
MYF
(
0
),
ret
);
...
...
sql/event
_executor.cc
→
sql/event
s.h
View file @
45598df7
/* Copyright (C) 2004-2005 MySQL AB
#ifndef _EVENT_H_
#define _EVENT_H_
/* Copyright (C) 2004-2006 MySQL AB
This program is free software; you can redistribute it and/or modify
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
it under the terms of the GNU General Public License as published by
...
@@ -13,3 +15,83 @@
...
@@ -13,3 +15,83 @@
You should have received a copy of the GNU General Public License
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
class
Event_timed
;
class
Events
{
public:
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 :) */
};
static
int
create_event
(
THD
*
thd
,
Event_timed
*
et
,
uint
create_options
,
uint
*
rows_affected
);
static
int
update_event
(
THD
*
thd
,
Event_timed
*
et
,
sp_name
*
new_name
,
uint
*
rows_affected
);
static
int
drop_event
(
THD
*
thd
,
Event_timed
*
et
,
bool
drop_if_exists
,
uint
*
rows_affected
);
static
int
open_event_table
(
THD
*
thd
,
enum
thr_lock_type
lock_type
,
TABLE
**
table
);
static
int
show_create_event
(
THD
*
thd
,
sp_name
*
spn
);
static
int
reconstruct_interval_expression
(
String
*
buf
,
interval_type
interval
,
longlong
expression
);
static
int
drop_schema_events
(
THD
*
thd
,
char
*
db
);
static
int
dump_internal_status
(
THD
*
thd
);
static
int
init
();
static
void
shutdown
();
static
void
init_mutexes
();
static
void
destroy_mutexes
();
private:
/* Prevent use of these */
Events
(
const
Events
&
);
void
operator
=
(
Events
&
);
};
#endif
/* _EVENT_H_ */
sql/event_priv.h
→
sql/event
s
_priv.h
View file @
45598df7
...
@@ -16,9 +16,6 @@
...
@@ -16,9 +16,6 @@
along with this program; if not, write to the Free Software
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#include "mysql_priv.h"
#define EVENT_EXEC_STARTED 0
#define EVENT_EXEC_STARTED 0
#define EVENT_EXEC_ALREADY_EXEC 1
#define EVENT_EXEC_ALREADY_EXEC 1
#define EVENT_EXEC_CANT_FORK 2
#define EVENT_EXEC_CANT_FORK 2
...
@@ -27,17 +24,13 @@
...
@@ -27,17 +24,13 @@
#define EVEX_NAME_FIELD_LEN 64
#define EVEX_NAME_FIELD_LEN 64
#define EVEX_MAX_INTERVAL_VALUE 2147483647L
#define EVEX_MAX_INTERVAL_VALUE 2147483647L
int
class
Event_timed
;
my_time_compare
(
TIME
*
a
,
TIME
*
b
);
int
int
evex_db_find_event_by_name
(
THD
*
thd
,
const
LEX_STRING
dbname
,
evex_db_find_event_by_name
(
THD
*
thd
,
const
LEX_STRING
dbname
,
const
LEX_STRING
ev_name
,
const
LEX_STRING
ev_name
,
TABLE
*
table
);
TABLE
*
table
);
int
event_timed_compare_q
(
void
*
vptr
,
byte
*
a
,
byte
*
b
);
int
int
db_drop_event
(
THD
*
thd
,
Event_timed
*
et
,
bool
drop_if_exists
,
db_drop_event
(
THD
*
thd
,
Event_timed
*
et
,
bool
drop_if_exists
,
uint
*
rows_affected
);
uint
*
rows_affected
);
...
...
sql/mysql_priv.h
View file @
45598df7
...
@@ -1751,6 +1751,8 @@ bool date_add_interval(TIME *ltime, interval_type int_type, INTERVAL interval);
...
@@ -1751,6 +1751,8 @@ bool date_add_interval(TIME *ltime, interval_type int_type, INTERVAL interval);
bool
calc_time_diff
(
TIME
*
l_time1
,
TIME
*
l_time2
,
int
l_sign
,
bool
calc_time_diff
(
TIME
*
l_time1
,
TIME
*
l_time2
,
int
l_sign
,
longlong
*
seconds_out
,
long
*
microseconds_out
);
longlong
*
seconds_out
,
long
*
microseconds_out
);
extern
LEX_STRING
interval_type_to_name
[];
extern
DATE_TIME_FORMAT
*
date_time_format_make
(
timestamp_type
format_type
,
extern
DATE_TIME_FORMAT
*
date_time_format_make
(
timestamp_type
format_type
,
const
char
*
format_str
,
const
char
*
format_str
,
uint
format_length
);
uint
format_length
);
...
@@ -1766,6 +1768,7 @@ void make_date(const DATE_TIME_FORMAT *format, const TIME *l_time,
...
@@ -1766,6 +1768,7 @@ void make_date(const DATE_TIME_FORMAT *format, const TIME *l_time,
String
*
str
);
String
*
str
);
void
make_time
(
const
DATE_TIME_FORMAT
*
format
,
const
TIME
*
l_time
,
void
make_time
(
const
DATE_TIME_FORMAT
*
format
,
const
TIME
*
l_time
,
String
*
str
);
String
*
str
);
int
my_time_compare
(
TIME
*
a
,
TIME
*
b
);
int
test_if_number
(
char
*
str
,
int
*
res
,
bool
allow_wildcards
);
int
test_if_number
(
char
*
str
,
int
*
res
,
bool
allow_wildcards
);
void
change_byte
(
byte
*
,
uint
,
char
,
char
);
void
change_byte
(
byte
*
,
uint
,
char
,
char
);
...
@@ -1783,6 +1786,7 @@ void filesort_free_buffers(TABLE *table);
...
@@ -1783,6 +1786,7 @@ void filesort_free_buffers(TABLE *table);
void
change_double_for_sort
(
double
nr
,
byte
*
to
);
void
change_double_for_sort
(
double
nr
,
byte
*
to
);
double
my_double_round
(
double
value
,
int
dec
,
bool
truncate
);
double
my_double_round
(
double
value
,
int
dec
,
bool
truncate
);
int
get_quick_record
(
SQL_SELECT
*
select
);
int
get_quick_record
(
SQL_SELECT
*
select
);
int
calc_weekday
(
long
daynr
,
bool
sunday_first_day_of_week
);
int
calc_weekday
(
long
daynr
,
bool
sunday_first_day_of_week
);
uint
calc_week
(
TIME
*
l_time
,
uint
week_behaviour
,
uint
*
year
);
uint
calc_week
(
TIME
*
l_time
,
uint
week_behaviour
,
uint
*
year
);
void
find_date
(
char
*
pos
,
uint
*
vek
,
uint
flag
);
void
find_date
(
char
*
pos
,
uint
*
vek
,
uint
flag
);
...
...
sql/mysqld.cc
View file @
45598df7
...
@@ -24,7 +24,7 @@
...
@@ -24,7 +24,7 @@
#include "stacktrace.h"
#include "stacktrace.h"
#include "mysqld_suffix.h"
#include "mysqld_suffix.h"
#include "mysys_err.h"
#include "mysys_err.h"
#include "event.h"
#include "event
s
.h"
#include "ha_myisam.h"
#include "ha_myisam.h"
...
...
sql/sql_db.cc
View file @
45598df7
...
@@ -20,7 +20,7 @@
...
@@ -20,7 +20,7 @@
#include "mysql_priv.h"
#include "mysql_priv.h"
#include <mysys_err.h>
#include <mysys_err.h>
#include "sp.h"
#include "sp.h"
#include "event.h"
#include "event
s
.h"
#include <my_dir.h>
#include <my_dir.h>
#include <m_ctype.h>
#include <m_ctype.h>
#ifdef __WIN__
#ifdef __WIN__
...
...
sql/sql_parse.cc
View file @
45598df7
...
@@ -26,7 +26,8 @@
...
@@ -26,7 +26,8 @@
#include "sp_head.h"
#include "sp_head.h"
#include "sp.h"
#include "sp.h"
#include "sp_cache.h"
#include "sp_cache.h"
#include "event.h"
#include "events.h"
#include "event_timed.h"
#ifdef HAVE_OPENSSL
#ifdef HAVE_OPENSSL
/*
/*
...
...
sql/sql_show.cc
View file @
45598df7
...
@@ -26,7 +26,8 @@
...
@@ -26,7 +26,8 @@
#include "sql_trigger.h"
#include "sql_trigger.h"
#include "authors.h"
#include "authors.h"
#include "contributors.h"
#include "contributors.h"
#include "event.h"
#include "events.h"
#include "event_timed.h"
#include <my_dir.h>
#include <my_dir.h>
#ifdef WITH_PARTITION_STORAGE_ENGINE
#ifdef WITH_PARTITION_STORAGE_ENGINE
...
...
sql/sql_yacc.yy
View file @
45598df7
...
@@ -38,7 +38,7 @@
...
@@ -38,7 +38,7 @@
#include "sp_pcontext.h"
#include "sp_pcontext.h"
#include "sp_rcontext.h"
#include "sp_rcontext.h"
#include "sp.h"
#include "sp.h"
#include "event.h"
#include "event
_timed
.h"
#include <myisam.h>
#include <myisam.h>
#include <myisammrg.h>
#include <myisammrg.h>
...
...
sql/time.cc
View file @
45598df7
...
@@ -24,6 +24,30 @@
...
@@ -24,6 +24,30 @@
/* Some functions to calculate dates */
/* Some functions to calculate dates */
#ifndef TESTTIME
#ifndef TESTTIME
LEX_STRING
interval_type_to_name
[
INTERVAL_LAST
]
=
{
{
C_STRING_WITH_LEN
(
"YEAR"
)},
{
C_STRING_WITH_LEN
(
"QUARTER"
)},
{
C_STRING_WITH_LEN
(
"MONTH"
)},
{
C_STRING_WITH_LEN
(
"DAY"
)},
{
C_STRING_WITH_LEN
(
"HOUR"
)},
{
C_STRING_WITH_LEN
(
"MINUTE"
)},
{
C_STRING_WITH_LEN
(
"WEEK"
)},
{
C_STRING_WITH_LEN
(
"SECOND"
)},
{
C_STRING_WITH_LEN
(
"MICROSECOND"
)},
{
C_STRING_WITH_LEN
(
"YEAR_MONTH"
)},
{
C_STRING_WITH_LEN
(
"DAY_HOUR"
)},
{
C_STRING_WITH_LEN
(
"DAY_MINUTE"
)},
{
C_STRING_WITH_LEN
(
"DAY_SECOND"
)},
{
C_STRING_WITH_LEN
(
"HOUR_MINUTE"
)},
{
C_STRING_WITH_LEN
(
"HOUR_SECOND"
)},
{
C_STRING_WITH_LEN
(
"MINUTE_SECOND"
)},
{
C_STRING_WITH_LEN
(
"DAY_MICROSECOND"
)},
{
C_STRING_WITH_LEN
(
"HOUR_MICROSECOND"
)},
{
C_STRING_WITH_LEN
(
"MINUTE_MICROSECOND"
)},
{
C_STRING_WITH_LEN
(
"SECOND_MICROSECOND"
)}
};
/* Calc weekday from daynr */
/* Calc weekday from daynr */
/* Returns 0 for monday, 1 for tuesday .... */
/* Returns 0 for monday, 1 for tuesday .... */
...
@@ -910,4 +934,36 @@ calc_time_diff(TIME *l_time1, TIME *l_time2, int l_sign, longlong *seconds_out,
...
@@ -910,4 +934,36 @@ calc_time_diff(TIME *l_time1, TIME *l_time2, int l_sign, longlong *seconds_out,
}
}
/*
Compares 2 TIME structures
SYNOPSIS
my_time_compare()
a - first time
b - second time
RETURN VALUE
-1 - a < b
0 - a == b
1 - a > b
NOTES
TIME.second_part is not considered during comparison
*/
int
my_time_compare
(
TIME
*
a
,
TIME
*
b
)
{
my_ulonglong
a_t
=
TIME_to_ulonglong_datetime
(
a
);
my_ulonglong
b_t
=
TIME_to_ulonglong_datetime
(
b
);
if
(
a_t
>
b_t
)
return
1
;
else
if
(
a_t
<
b_t
)
return
-
1
;
return
0
;
}
#endif
#endif
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