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
a9e6af8d
Commit
a9e6af8d
authored
Mar 17, 2006
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
manual merge
sql/event_timed.cc: Auto merged
parents
be423af4
bcc6821b
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
54 additions
and
8 deletions
+54
-8
mysql-test/r/events_bugs.result
mysql-test/r/events_bugs.result
+8
-0
mysql-test/t/events_bugs.test
mysql-test/t/events_bugs.test
+13
-0
sql/event_timed.cc
sql/event_timed.cc
+33
-8
No files found.
mysql-test/r/events_bugs.result
View file @
a9e6af8d
create database if not exists events_test;
use events_test;
set @a=3;
CREATE PROCEDURE p_16 () CREATE EVENT e_16 ON SCHEDULE EVERY @a SECOND DO SET @a=5;
call p_16();
...
...
@@ -14,6 +15,13 @@ CALL p_16();
ERROR HY000: Event 'e_16' already exists
DROP PROCEDURE p_16;
DROP EVENT e_16;
create event e_55 on schedule at 99990101000000 do drop table t;
ERROR HY000: Incorrect AT value: '99990101000000'
create event e_55 on schedule every 10 hour starts 99990101000000 do drop table t;
ERROR HY000: Incorrect STARTS value: '99990101000000'
create event e_55 on schedule every 10 minute ends 99990101000000 do drop table t;
ERROR HY000: ENDS is either invalid or before STARTS
set global event_scheduler=0;
"Wait a bit to settle down"
delete from mysql.event;
...
...
mysql-test/t/events_bugs.test
View file @
a9e6af8d
...
...
@@ -21,6 +21,19 @@ DROP EVENT e_16;
# END - BUG#16408: Events: crash for an event in a procedure
#
#
# Start - 16396: Events: Distant-future dates become past dates
#
--
error
1503
create
event
e_55
on
schedule
at
99990101000000
do
drop
table
t
;
--
error
1503
create
event
e_55
on
schedule
every
10
hour
starts
99990101000000
do
drop
table
t
;
--
error
1521
create
event
e_55
on
schedule
every
10
minute
ends
99990101000000
do
drop
table
t
;
#
# End - 16396: Events: Distant-future dates become past dates
#
#
# Start - 16407: Events: Changes in sql_mode won't be taken into account
#
...
...
sql/event_timed.cc
View file @
a9e6af8d
...
...
@@ -151,6 +151,7 @@ Event_timed::init_execute_at(THD *thd, Item *expr)
{
my_bool
not_used
;
TIME
ltime
;
my_time_t
t
;
TIME
time_tmp
;
DBUG_ENTER
(
"Event_timed::init_execute_at"
);
...
...
@@ -174,12 +175,18 @@ Event_timed::init_execute_at(THD *thd, Item *expr)
TIME_to_ulonglong_datetime
(
&
time_tmp
))
DBUG_RETURN
(
EVEX_BAD_PARAMS
);
/*
This may result in a 1970-01-01 date if ltime is > 2037-xx-xx.
CONVERT_TZ has similar problem.
mysql_priv.h currently lists
#define TIMESTAMP_MAX_YEAR 2038 (see TIME_to_timestamp())
*/
my_tz_UTC
->
gmt_sec_to_TIME
(
&
ltime
,
TIME_to_timestamp
(
thd
,
&
ltime
,
&
not_used
));
my_tz_UTC
->
gmt_sec_to_TIME
(
&
ltime
,
t
=
TIME_to_timestamp
(
thd
,
&
ltime
,
&
not_used
));
if
(
!
t
)
{
DBUG_PRINT
(
"error"
,
(
"Execute AT after year 2037"
));
DBUG_RETURN
(
ER_WRONG_VALUE
);
}
execute_at_null
=
FALSE
;
execute_at
=
ltime
;
...
...
@@ -302,6 +309,7 @@ Event_timed::init_interval(THD *thd, Item *expr, interval_type new_interval)
RETURNS
0 OK
EVEX_PARSE_ERROR fix_fields failed
EVEX_BAD_PARAMS starts before now
*/
int
...
...
@@ -309,6 +317,7 @@ Event_timed::init_starts(THD *thd, Item *new_starts)
{
my_bool
not_used
;
TIME
ltime
,
time_tmp
;
my_time_t
t
;
DBUG_ENTER
(
"Event_timed::init_starts"
);
...
...
@@ -329,10 +338,17 @@ Event_timed::init_starts(THD *thd, Item *new_starts)
DBUG_RETURN
(
EVEX_BAD_PARAMS
);
/*
This may result in a 1970-01-01 date if ltime is > 2037-xx-xx
CONVERT_TZ has similar problem
This may result in a 1970-01-01 date if ltime is > 2037-xx-xx.
CONVERT_TZ has similar problem.
mysql_priv.h currently lists
#define TIMESTAMP_MAX_YEAR 2038 (see TIME_to_timestamp())
*/
my_tz_UTC
->
gmt_sec_to_TIME
(
&
ltime
,
TIME_to_timestamp
(
thd
,
&
ltime
,
&
not_used
));
my_tz_UTC
->
gmt_sec_to_TIME
(
&
ltime
,
t
=
TIME_to_timestamp
(
thd
,
&
ltime
,
&
not_used
));
if
(
!
t
)
{
DBUG_PRINT
(
"error"
,
(
"STARTS after year 2037"
));
DBUG_RETURN
(
EVEX_BAD_PARAMS
);
}
starts
=
ltime
;
starts_null
=
FALSE
;
...
...
@@ -359,6 +375,7 @@ Event_timed::init_starts(THD *thd, Item *new_starts)
RETURNS
0 OK
EVEX_PARSE_ERROR fix_fields failed
ER_WRONG_VALUE starts distant date (after year 2037)
EVEX_BAD_PARAMS ENDS before STARTS
*/
...
...
@@ -367,6 +384,7 @@ Event_timed::init_ends(THD *thd, Item *new_ends)
{
TIME
ltime
,
ltime_now
;
my_bool
not_used
;
my_time_t
t
;
DBUG_ENTER
(
"Event_timed::init_ends"
);
...
...
@@ -378,11 +396,18 @@ Event_timed::init_ends(THD *thd, Item *new_ends)
DBUG_RETURN
(
EVEX_BAD_PARAMS
);
/*
This may result in a 1970-01-01 date if ltime is > 2037-xx-xx ?
CONVERT_TZ has similar problem ?
This may result in a 1970-01-01 date if ltime is > 2037-xx-xx.
CONVERT_TZ has similar problem.
mysql_priv.h currently lists
#define TIMESTAMP_MAX_YEAR 2038 (see TIME_to_timestamp())
*/
DBUG_PRINT
(
"info"
,
(
"get the UTC time"
));
my_tz_UTC
->
gmt_sec_to_TIME
(
&
ltime
,
TIME_to_timestamp
(
thd
,
&
ltime
,
&
not_used
));
my_tz_UTC
->
gmt_sec_to_TIME
(
&
ltime
,
t
=
TIME_to_timestamp
(
thd
,
&
ltime
,
&
not_used
));
if
(
!
t
)
{
DBUG_PRINT
(
"error"
,
(
"ENDS after year 2037"
));
DBUG_RETURN
(
EVEX_BAD_PARAMS
);
}
/* Check whether ends is after starts */
DBUG_PRINT
(
"info"
,
(
"ENDS after STARTS?"
));
...
...
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