Fix for bug#22397 Events: crash with procedure which alters events
ALTER EVENT in stored procedure body led to a crash during the procedure call. Affected was only ALTER EVENT which changed the interval of the event. No problems with AT, STARTS, ENDS and so on. mysql-test/r/events_bugs.result: fix result mysql-test/t/events_bugs.test: add test case for bug 22397 : Events, crash with procedure which alters body sql/event_data_objects.cc: fix copy&paste error in code, which resulted in bug#22397 Events: crash with procedure which alters body
This commit is contained in:
parent
038fbc273a
commit
6c9400b930
@ -213,4 +213,17 @@ create event e_53 on schedule every 5 second starts (select s1 from ttx) do drop
|
|||||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select s1 from ttx) do drop table t' at line 1
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select s1 from ttx) do drop table t' at line 1
|
||||||
create event e_53 on schedule every 5 second ends (select s1 from ttx) do drop table t;
|
create event e_53 on schedule every 5 second ends (select s1 from ttx) do drop table t;
|
||||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select s1 from ttx) do drop table t' at line 1
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select s1 from ttx) do drop table t' at line 1
|
||||||
|
drop event if exists e_16;
|
||||||
|
drop procedure if exists p_16;
|
||||||
|
create event e_16 on schedule every 1 second do set @a=5;
|
||||||
|
create procedure p_16 () alter event e_16 on schedule every @a second;
|
||||||
|
set @a = null;
|
||||||
|
call p_16();
|
||||||
|
ERROR HY000: Incorrect INTERVAL value: 'NULL'
|
||||||
|
call p_16();
|
||||||
|
ERROR HY000: Incorrect INTERVAL value: 'NULL'
|
||||||
|
set @a= 6;
|
||||||
|
call p_16();
|
||||||
|
drop procedure p_16;
|
||||||
|
drop event e_16;
|
||||||
drop database events_test;
|
drop database events_test;
|
||||||
|
@ -234,4 +234,23 @@ create event e_53 on schedule every 5 second ends (select s1 from ttx) do drop t
|
|||||||
# END - BUG#16394: Events: Crash if schedule contains SELECT
|
# END - BUG#16394: Events: Crash if schedule contains SELECT
|
||||||
#
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# START - BUG#22397: Events: crash with procedure which alters events
|
||||||
|
#
|
||||||
|
--disable_warnings
|
||||||
|
drop event if exists e_16;
|
||||||
|
drop procedure if exists p_16;
|
||||||
|
--enable_warnings
|
||||||
|
create event e_16 on schedule every 1 second do set @a=5;
|
||||||
|
create procedure p_16 () alter event e_16 on schedule every @a second;
|
||||||
|
set @a = null;
|
||||||
|
--error ER_WRONG_VALUE
|
||||||
|
call p_16();
|
||||||
|
--error ER_WRONG_VALUE
|
||||||
|
call p_16();
|
||||||
|
set @a= 6;
|
||||||
|
call p_16();
|
||||||
|
|
||||||
|
drop procedure p_16;
|
||||||
|
drop event e_16;
|
||||||
drop database events_test;
|
drop database events_test;
|
||||||
|
@ -353,7 +353,7 @@ Event_parse_data::init_interval(THD *thd)
|
|||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
|
|
||||||
wrong_value:
|
wrong_value:
|
||||||
report_bad_value("INTERVAL", item_execute_at);
|
report_bad_value("INTERVAL", item_expression);
|
||||||
DBUG_RETURN(ER_WRONG_VALUE);
|
DBUG_RETURN(ER_WRONG_VALUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user