summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
authorunknown <hhunger@hh-nb.hungers>2008-02-20 14:40:46 +0100
committerunknown <hhunger@hh-nb.hungers>2008-02-20 14:40:46 +0100
commitf8ff8c01e4fcc440efa7c9b0f2c7bed1b07c6582 (patch)
tree64a24ab507cae611b4091172e5d8745ea7b06ff6 /mysql-test
parent41b01b7f2142159c17c0180194f1adda8857d5c6 (diff)
downloadmariadb-git-f8ff8c01e4fcc440efa7c9b0f2c7bed1b07c6582.tar.gz
Patch for bug#32664: event.test has timeout randomly. File is split into event_1.test and event_2.test.
BitKeeper/deleted/.del-events.test: Delete: mysql-test/t/events.test BitKeeper/deleted/.del-events.result: Delete: mysql-test/r/events.result BitKeeper/etc/ignore: Added mysql-test/reg.log to the ignore list
Diffstat (limited to 'mysql-test')
-rw-r--r--mysql-test/r/events_1.result (renamed from mysql-test/r/events.result)319
-rw-r--r--mysql-test/r/events_2.result321
-rw-r--r--mysql-test/t/disabled.def1
-rw-r--r--mysql-test/t/events_1.test (renamed from mysql-test/t/events.test)393
-rw-r--r--mysql-test/t/events_2.test409
5 files changed, 733 insertions, 710 deletions
diff --git a/mysql-test/r/events.result b/mysql-test/r/events_1.result
index 7b68914e219..e7b645f5556 100644
--- a/mysql-test/r/events.result
+++ b/mysql-test/r/events_1.result
@@ -309,7 +309,7 @@ ERROR HY000: Unknown event 'intact_check'
DROP EVENT no_such_event;
ERROR HY000: Unknown event 'no_such_event'
CREATE EVENT intact_check_1 ON SCHEDULE EVERY 5 HOUR DO SELECT 5;
-ERROR HY000: Cannot load from mysql.event. The table is probably corrupted
+ERROR HY000: Failed to store event name. Error code 2 from storage engine.
ALTER EVENT intact_check_1 ON SCHEDULE EVERY 8 HOUR DO SELECT 8;
ERROR HY000: Unknown event 'intact_check_1'
ALTER EVENT intact_check_1 RENAME TO intact_check_2;
@@ -425,321 +425,4 @@ CREATE TABLE mysql.event like event_like;
DROP TABLE event_like;
SHOW EVENTS;
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
-create event e_26 on schedule at '2017-01-01 00:00:00' disable do set @a = 5;
-select db, name, body, definer, convert_tz(execute_at, 'UTC', 'SYSTEM'), on_completion from mysql.event;
-db name body definer convert_tz(execute_at, 'UTC', 'SYSTEM') on_completion
-events_test e_26 set @a = 5 root@localhost 2017-01-01 00:00:00 DROP
-drop event e_26;
-create event e_26 on schedule at NULL disable do set @a = 5;
-ERROR HY000: Incorrect AT value: 'NULL'
-create event e_26 on schedule at 'definitely not a datetime' disable do set @a = 5;
-ERROR HY000: Incorrect AT value: 'definitely not a datetime'
-set names utf8;
-create event задачка on schedule every 123 minute starts now() ends now() + interval 1 month do select 1;
-drop event задачка;
-set event_scheduler=off;
-ERROR HY000: Variable 'event_scheduler' is a GLOBAL variable and should be set with SET GLOBAL
-set global event_scheduler=3;
-ERROR 42000: Variable 'event_scheduler' can't be set to the value of '3'
-set global event_scheduler=disabled;
-ERROR 42000: Variable 'event_scheduler' can't be set to the value of 'disabled'
-"DISABLE the scheduler. Testing that it does not work when the variable is 0"
-set global event_scheduler=off;
-select definer, name, db from mysql.event;
-definer name db
-select get_lock("test_lock1", 20);
-get_lock("test_lock1", 20)
-1
-create event закачка on schedule every 10 hour do select get_lock("test_lock1", 20);
-"Should return 1 row"
-select definer, name, db from mysql.event;
-definer name db
-root@localhost закачка events_test
-"Should be only 0 process"
-select /*1*/ user, host, db, command, state, info
-from information_schema.processlist
-where (user='event_scheduler')
-order by info;
-user host db command state info
-select release_lock("test_lock1");
-release_lock("test_lock1")
-1
-drop event закачка;
-"Should have 0 events"
-select count(*) from mysql.event;
-count(*)
-0
-"ENABLE the scheduler and get a lock"
-set global event_scheduler=on;
-select get_lock("test_lock2", 20);
-get_lock("test_lock2", 20)
-1
-"Create an event which tries to acquire a mutex. The event locks on the mutex"
-create event закачка on schedule every 10 hour do select get_lock("test_lock2", 20);
-"Should have only 2 processes: the scheduler and the locked event"
-select /*2*/ user, host, db, command, state, info
-from information_schema.processlist
-where (info like "select get_lock%" OR user='event_scheduler')
-order by info;
-user host db command state info
-event_scheduler localhost NULL Daemon Waiting for next activation NULL
-root localhost events_test Connect User lock select get_lock("test_lock2", 20)
-"Release the mutex, the event worker should finish."
-select release_lock("test_lock2");
-release_lock("test_lock2")
-1
-drop event закачка;
-set global event_scheduler=1;
-select get_lock("test_lock2_1", 20);
-get_lock("test_lock2_1", 20)
-1
-create event закачка21 on schedule every 10 hour do select get_lock("test_lock2_1", 20);
-"Should have only 2 processes: the scheduler and the locked event"
-select /*3*/ user, host, db, command, state, info
-from information_schema.processlist
-where (info like "select get_lock%" OR user='event_scheduler')
-order by info;
-user host db command state info
-event_scheduler localhost NULL Daemon Waiting for next activation NULL
-root localhost events_test Connect User lock select get_lock("test_lock2_1", 20)
-set global event_scheduler=off;
-"Should have only our process now:"
-select /*4*/ user, host, db, command, state, info
-from information_schema.processlist
-where (info like "select get_lock%" OR user='event_scheduler')
-order by info;
-user host db command state info
-root localhost events_test Connect User lock select get_lock("test_lock2_1", 20)
-select release_lock("test_lock2_1");
-release_lock("test_lock2_1")
-1
-drop event закачка21;
-create table t_16 (s1 int);
-create trigger t_16_bi before insert on t_16 for each row create event e_16 on schedule every 1 second do set @a=5;
-ERROR HY000: Recursion of EVENT DDL statements is forbidden when body is present
-drop table t_16;
-create event white_space
-on schedule every 10 hour
-disable
-do
-select 1;
-select event_schema, event_name, definer, event_definition from information_schema.events where event_name='white_space';
-event_schema event_name definer event_definition
-events_test white_space root@localhost select 1
-drop event white_space;
-create event white_space on schedule every 10 hour disable do
-select 2;
-select event_schema, event_name, definer, event_definition from information_schema.events where event_name='white_space';
-event_schema event_name definer event_definition
-events_test white_space root@localhost select 2
-drop event white_space;
-create event white_space on schedule every 10 hour disable do select 3;
-select event_schema, event_name, definer, event_definition from information_schema.events where event_name='white_space';
-event_schema event_name definer event_definition
-events_test white_space root@localhost select 3
-drop event white_space;
-create event e1 on schedule every 1 year do set @a = 5;
-create table t1 (s1 int);
-create trigger t1_ai after insert on t1 for each row show create event e1;
-ERROR 0A000: Not allowed to return a result set from a trigger
-drop table t1;
-drop event e1;
-SHOW EVENTS FROM aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
-ERROR 42000: Incorrect database name 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-SHOW EVENTS FROM ``;
-ERROR 42000: Incorrect database name ''
-SHOW EVENTS FROM `events\\test`;
-Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
-
-LOCK TABLES mode.
-
-create table t1 (a int);
-create event e1 on schedule every 10 hour do select 1;
-lock table t1 read;
-show create event e1;
-Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-e1 SYSTEM CREATE EVENT `e1` ON SCHEDULE EVERY 10 HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
-select event_name from information_schema.events;
-event_name
-e1
-create event e2 on schedule every 10 hour do select 1;
-ERROR HY000: Table 'event' was not locked with LOCK TABLES
-alter event e2 disable;
-ERROR HY000: Table 'event' was not locked with LOCK TABLES
-alter event e2 rename to e3;
-ERROR HY000: Table 'event' was not locked with LOCK TABLES
-drop event e2;
-ERROR HY000: Table 'event' was not locked with LOCK TABLES
-drop event e1;
-ERROR HY000: Table 'event' was not locked with LOCK TABLES
-unlock tables;
-lock table t1 write;
-show create event e1;
-Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-e1 SYSTEM CREATE EVENT `e1` ON SCHEDULE EVERY 10 HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
-select event_name from information_schema.events;
-event_name
-e1
-create event e2 on schedule every 10 hour do select 1;
-ERROR HY000: Table 'event' was not locked with LOCK TABLES
-alter event e2 disable;
-ERROR HY000: Table 'event' was not locked with LOCK TABLES
-alter event e2 rename to e3;
-ERROR HY000: Table 'event' was not locked with LOCK TABLES
-drop event e2;
-ERROR HY000: Table 'event' was not locked with LOCK TABLES
-drop event e1;
-ERROR HY000: Table 'event' was not locked with LOCK TABLES
-unlock tables;
-lock table t1 read, mysql.event read;
-show create event e1;
-Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-e1 SYSTEM CREATE EVENT `e1` ON SCHEDULE EVERY 10 HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
-select event_name from information_schema.events;
-event_name
-e1
-create event e2 on schedule every 10 hour do select 1;
-ERROR HY000: Table 'event' was locked with a READ lock and can't be updated
-alter event e2 disable;
-ERROR HY000: Table 'event' was locked with a READ lock and can't be updated
-alter event e2 rename to e3;
-ERROR HY000: Table 'event' was locked with a READ lock and can't be updated
-drop event e2;
-ERROR HY000: Table 'event' was locked with a READ lock and can't be updated
-drop event e1;
-ERROR HY000: Table 'event' was locked with a READ lock and can't be updated
-unlock tables;
-lock table t1 write, mysql.event read;
-show create event e1;
-Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-e1 SYSTEM CREATE EVENT `e1` ON SCHEDULE EVERY 10 HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
-select event_name from information_schema.events;
-event_name
-e1
-create event e2 on schedule every 10 hour do select 1;
-ERROR HY000: Table 'event' was locked with a READ lock and can't be updated
-alter event e2 disable;
-ERROR HY000: Table 'event' was locked with a READ lock and can't be updated
-alter event e2 rename to e3;
-ERROR HY000: Table 'event' was locked with a READ lock and can't be updated
-drop event e2;
-ERROR HY000: Table 'event' was locked with a READ lock and can't be updated
-drop event e1;
-ERROR HY000: Table 'event' was locked with a READ lock and can't be updated
-unlock tables;
-lock table t1 read, mysql.event write;
-ERROR HY000: You can't combine write-locking of system tables with other tables or lock types
-lock table t1 write, mysql.event write;
-ERROR HY000: You can't combine write-locking of system tables with other tables or lock types
-lock table mysql.event write;
-show create event e1;
-Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
-e1 SYSTEM CREATE EVENT `e1` ON SCHEDULE EVERY 10 HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
-select event_name from information_schema.events;
-event_name
-e1
-create event e2 on schedule every 10 hour do select 1;
-alter event e2 disable;
-alter event e2 rename to e3;
-drop event e3;
-drop event e1;
-unlock tables;
-Make sure we have left no events
-select event_name from information_schema.events;
-event_name
-
-Events in sub-statements, events and prelocking
-
-
-create event e1 on schedule every 10 hour do select 1;
-create function f1() returns int
-begin
-show create event e1;
-return 1;
-end|
-ERROR 0A000: Not allowed to return a result set from a function
-create trigger trg before insert on t1 for each row
-begin
-show create event e1;
-end|
-ERROR 0A000: Not allowed to return a result set from a trigger
-create function f1() returns int
-begin
-select event_name from information_schema.events;
-return 1;
-end|
-ERROR 0A000: Not allowed to return a result set from a function
-create trigger trg before insert on t1 for each row
-begin
-select event_name from information_schema.events;
-end|
-ERROR 0A000: Not allowed to return a result set from a trigger
-create function f1() returns int
-begin
-create event e2 on schedule every 10 hour do select 1;
-return 1;
-end|
-ERROR HY000: Recursion of EVENT DDL statements is forbidden when body is present
-create function f1() returns int
-begin
-alter event e1 rename to e2;
-return 1;
-end|
-ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
-create function f1() returns int
-begin
-drop event e2;
-return 1;
-end|
-ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
-----------------------------------------------------------------------
-create trigger trg before insert on t1 for each row
-begin
-set new.a= f1();
-end|
-create function f1() returns int
-begin
-call p1();
-return 0;
-end|
-create procedure p1()
-begin
-select event_name from information_schema.events;
-end|
-insert into t1 (a) values (1)|
-ERROR 0A000: Not allowed to return a result set from a trigger
-drop procedure p1|
-create procedure p1()
-begin
-show create event e1;
-end|
-insert into t1 (a) values (1)|
-ERROR 0A000: Not allowed to return a result set from a trigger
-drop procedure p1|
-create procedure p1()
-begin
-create temporary table tmp select event_name from information_schema.events;
-end|
-expected to work, since we redirect the output into a tmp table
-insert into t1 (a) values (1)|
-select * from tmp|
-event_name
-e1
-drop temporary table tmp|
-drop procedure p1|
-create procedure p1()
-begin
-alter event e1 rename to e2;
-end|
-insert into t1 (a) values (1)|
-ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
-drop procedure p1|
-create procedure p1()
-begin
-drop event e1;
-end|
-insert into t1 (a) values (1)|
-ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
-drop table t1|
-drop event e1|
drop database events_test;
diff --git a/mysql-test/r/events_2.result b/mysql-test/r/events_2.result
new file mode 100644
index 00000000000..9da8c37edae
--- /dev/null
+++ b/mysql-test/r/events_2.result
@@ -0,0 +1,321 @@
+drop database if exists events_test;
+create database events_test;
+use events_test;
+create event e_26 on schedule at '2017-01-01 00:00:00' disable do set @a = 5;
+select db, name, body, definer, convert_tz(execute_at, 'UTC', 'SYSTEM'), on_completion from mysql.event;
+db name body definer convert_tz(execute_at, 'UTC', 'SYSTEM') on_completion
+events_test e_26 set @a = 5 root@localhost 2017-01-01 00:00:00 DROP
+drop event e_26;
+create event e_26 on schedule at NULL disable do set @a = 5;
+ERROR HY000: Incorrect AT value: 'NULL'
+create event e_26 on schedule at 'definitely not a datetime' disable do set @a = 5;
+ERROR HY000: Incorrect AT value: 'definitely not a datetime'
+set names utf8;
+create event задачка on schedule every 123 minute starts now() ends now() + interval 1 month do select 1;
+drop event задачка;
+set event_scheduler=off;
+ERROR HY000: Variable 'event_scheduler' is a GLOBAL variable and should be set with SET GLOBAL
+set global event_scheduler=3;
+ERROR 42000: Variable 'event_scheduler' can't be set to the value of '3'
+set global event_scheduler=disabled;
+ERROR 42000: Variable 'event_scheduler' can't be set to the value of 'disabled'
+"DISABLE the scheduler. Testing that it does not work when the variable is 0"
+set global event_scheduler=off;
+select definer, name, db from mysql.event;
+definer name db
+select get_lock("test_lock1", 20);
+get_lock("test_lock1", 20)
+1
+create event закачка on schedule every 10 hour do select get_lock("test_lock1", 20);
+"Should return 1 row"
+select definer, name, db from mysql.event;
+definer name db
+root@localhost закачка events_test
+"Should be only 0 process"
+select /*1*/ user, host, db, command, state, info
+from information_schema.processlist
+where (user='event_scheduler')
+order by info;
+user host db command state info
+select release_lock("test_lock1");
+release_lock("test_lock1")
+1
+drop event закачка;
+"Should have 0 events"
+select count(*) from mysql.event;
+count(*)
+0
+"ENABLE the scheduler and get a lock"
+set global event_scheduler=on;
+select get_lock("test_lock2", 20);
+get_lock("test_lock2", 20)
+1
+"Create an event which tries to acquire a mutex. The event locks on the mutex"
+create event закачка on schedule every 10 hour do select get_lock("test_lock2", 20);
+"Should have only 2 processes: the scheduler and the locked event"
+select /*2*/ user, host, db, command, state, info
+from information_schema.processlist
+where (info like "select get_lock%" OR user='event_scheduler')
+order by info;
+user host db command state info
+event_scheduler localhost NULL Daemon Waiting for next activation NULL
+root localhost events_test Connect User lock select get_lock("test_lock2", 20)
+"Release the mutex, the event worker should finish."
+select release_lock("test_lock2");
+release_lock("test_lock2")
+1
+drop event закачка;
+set global event_scheduler=1;
+select get_lock("test_lock2_1", 20);
+get_lock("test_lock2_1", 20)
+1
+create event закачка21 on schedule every 10 hour do select get_lock("test_lock2_1", 20);
+"Should have only 2 processes: the scheduler and the locked event"
+select /*3*/ user, host, db, command, state, info
+from information_schema.processlist
+where (info like "select get_lock%" OR user='event_scheduler')
+order by info;
+user host db command state info
+event_scheduler localhost NULL Daemon Waiting for next activation NULL
+root localhost events_test Connect User lock select get_lock("test_lock2_1", 20)
+set global event_scheduler=off;
+"Should have only our process now:"
+select /*4*/ user, host, db, command, state, info
+from information_schema.processlist
+where (info like "select get_lock%" OR user='event_scheduler')
+order by info;
+user host db command state info
+root localhost events_test Connect User lock select get_lock("test_lock2_1", 20)
+select release_lock("test_lock2_1");
+release_lock("test_lock2_1")
+1
+drop event закачка21;
+create table t_16 (s1 int);
+create trigger t_16_bi before insert on t_16 for each row create event e_16 on schedule every 1 second do set @a=5;
+ERROR HY000: Recursion of EVENT DDL statements is forbidden when body is present
+drop table t_16;
+create event white_space
+on schedule every 10 hour
+disable
+do
+select 1;
+select event_schema, event_name, definer, event_definition from information_schema.events where event_name='white_space';
+event_schema event_name definer event_definition
+events_test white_space root@localhost select 1
+drop event white_space;
+create event white_space on schedule every 10 hour disable do
+select 2;
+select event_schema, event_name, definer, event_definition from information_schema.events where event_name='white_space';
+event_schema event_name definer event_definition
+events_test white_space root@localhost select 2
+drop event white_space;
+create event white_space on schedule every 10 hour disable do select 3;
+select event_schema, event_name, definer, event_definition from information_schema.events where event_name='white_space';
+event_schema event_name definer event_definition
+events_test white_space root@localhost select 3
+drop event white_space;
+create event e1 on schedule every 1 year do set @a = 5;
+create table t1 (s1 int);
+create trigger t1_ai after insert on t1 for each row show create event e1;
+ERROR 0A000: Not allowed to return a result set from a trigger
+drop table t1;
+drop event e1;
+SHOW EVENTS FROM aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
+ERROR 42000: Incorrect database name 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
+SHOW EVENTS FROM ``;
+ERROR 42000: Incorrect database name ''
+SHOW EVENTS FROM `events\\test`;
+Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
+
+LOCK TABLES mode.
+
+create table t1 (a int);
+create event e1 on schedule every 10 hour do select 1;
+lock table t1 read;
+show create event e1;
+Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
+e1 SYSTEM CREATE EVENT `e1` ON SCHEDULE EVERY 10 HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
+select event_name from information_schema.events;
+event_name
+e1
+create event e2 on schedule every 10 hour do select 1;
+ERROR HY000: Table 'event' was not locked with LOCK TABLES
+alter event e2 disable;
+ERROR HY000: Table 'event' was not locked with LOCK TABLES
+alter event e2 rename to e3;
+ERROR HY000: Table 'event' was not locked with LOCK TABLES
+drop event e2;
+ERROR HY000: Table 'event' was not locked with LOCK TABLES
+drop event e1;
+ERROR HY000: Table 'event' was not locked with LOCK TABLES
+unlock tables;
+lock table t1 write;
+show create event e1;
+Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
+e1 SYSTEM CREATE EVENT `e1` ON SCHEDULE EVERY 10 HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
+select event_name from information_schema.events;
+event_name
+e1
+create event e2 on schedule every 10 hour do select 1;
+ERROR HY000: Table 'event' was not locked with LOCK TABLES
+alter event e2 disable;
+ERROR HY000: Table 'event' was not locked with LOCK TABLES
+alter event e2 rename to e3;
+ERROR HY000: Table 'event' was not locked with LOCK TABLES
+drop event e2;
+ERROR HY000: Table 'event' was not locked with LOCK TABLES
+drop event e1;
+ERROR HY000: Table 'event' was not locked with LOCK TABLES
+unlock tables;
+lock table t1 read, mysql.event read;
+show create event e1;
+Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
+e1 SYSTEM CREATE EVENT `e1` ON SCHEDULE EVERY 10 HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
+select event_name from information_schema.events;
+event_name
+e1
+create event e2 on schedule every 10 hour do select 1;
+ERROR HY000: Table 'event' was locked with a READ lock and can't be updated
+alter event e2 disable;
+ERROR HY000: Table 'event' was locked with a READ lock and can't be updated
+alter event e2 rename to e3;
+ERROR HY000: Table 'event' was locked with a READ lock and can't be updated
+drop event e2;
+ERROR HY000: Table 'event' was locked with a READ lock and can't be updated
+drop event e1;
+ERROR HY000: Table 'event' was locked with a READ lock and can't be updated
+unlock tables;
+lock table t1 write, mysql.event read;
+show create event e1;
+Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
+e1 SYSTEM CREATE EVENT `e1` ON SCHEDULE EVERY 10 HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
+select event_name from information_schema.events;
+event_name
+e1
+create event e2 on schedule every 10 hour do select 1;
+ERROR HY000: Table 'event' was locked with a READ lock and can't be updated
+alter event e2 disable;
+ERROR HY000: Table 'event' was locked with a READ lock and can't be updated
+alter event e2 rename to e3;
+ERROR HY000: Table 'event' was locked with a READ lock and can't be updated
+drop event e2;
+ERROR HY000: Table 'event' was locked with a READ lock and can't be updated
+drop event e1;
+ERROR HY000: Table 'event' was locked with a READ lock and can't be updated
+unlock tables;
+lock table t1 read, mysql.event write;
+ERROR HY000: You can't combine write-locking of system tables with other tables or lock types
+lock table t1 write, mysql.event write;
+ERROR HY000: You can't combine write-locking of system tables with other tables or lock types
+lock table mysql.event write;
+show create event e1;
+Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
+e1 SYSTEM CREATE EVENT `e1` ON SCHEDULE EVERY 10 HOUR STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO select 1 utf8 utf8_general_ci latin1_swedish_ci
+select event_name from information_schema.events;
+event_name
+e1
+create event e2 on schedule every 10 hour do select 1;
+alter event e2 disable;
+alter event e2 rename to e3;
+drop event e3;
+drop event e1;
+unlock tables;
+Make sure we have left no events
+select event_name from information_schema.events;
+event_name
+
+Events in sub-statements, events and prelocking
+
+
+create event e1 on schedule every 10 hour do select 1;
+create function f1() returns int
+begin
+show create event e1;
+return 1;
+end|
+ERROR 0A000: Not allowed to return a result set from a function
+create trigger trg before insert on t1 for each row
+begin
+show create event e1;
+end|
+ERROR 0A000: Not allowed to return a result set from a trigger
+create function f1() returns int
+begin
+select event_name from information_schema.events;
+return 1;
+end|
+ERROR 0A000: Not allowed to return a result set from a function
+create trigger trg before insert on t1 for each row
+begin
+select event_name from information_schema.events;
+end|
+ERROR 0A000: Not allowed to return a result set from a trigger
+create function f1() returns int
+begin
+create event e2 on schedule every 10 hour do select 1;
+return 1;
+end|
+ERROR HY000: Recursion of EVENT DDL statements is forbidden when body is present
+create function f1() returns int
+begin
+alter event e1 rename to e2;
+return 1;
+end|
+ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
+create function f1() returns int
+begin
+drop event e2;
+return 1;
+end|
+ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
+----------------------------------------------------------------------
+create trigger trg before insert on t1 for each row
+begin
+set new.a= f1();
+end|
+create function f1() returns int
+begin
+call p1();
+return 0;
+end|
+create procedure p1()
+begin
+select event_name from information_schema.events;
+end|
+insert into t1 (a) values (1)|
+ERROR 0A000: Not allowed to return a result set from a trigger
+drop procedure p1|
+create procedure p1()
+begin
+show create event e1;
+end|
+insert into t1 (a) values (1)|
+ERROR 0A000: Not allowed to return a result set from a trigger
+drop procedure p1|
+create procedure p1()
+begin
+create temporary table tmp select event_name from information_schema.events;
+end|
+expected to work, since we redirect the output into a tmp table
+insert into t1 (a) values (1)|
+select * from tmp|
+event_name
+e1
+drop temporary table tmp|
+drop procedure p1|
+create procedure p1()
+begin
+alter event e1 rename to e2;
+end|
+insert into t1 (a) values (1)|
+ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
+drop procedure p1|
+create procedure p1()
+begin
+drop event e1;
+end|
+insert into t1 (a) values (1)|
+ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
+drop table t1|
+drop event e1|
+drop database events_test;
diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def
index 4dbb6a00555..ac8fc5041de 100644
--- a/mysql-test/t/disabled.def
+++ b/mysql-test/t/disabled.def
@@ -15,7 +15,6 @@ concurrent_innodb : BUG#21579 2006-08-11 mleich innodb_concurrent random
ctype_big5 : BUG#26711 2007-06-21 Lars Test has never worked on Double Whopper
federated_transactions : Bug#29523 Transactions do not work
-events : Bug#32664 events.test fails randomly
lowercase_table3 : Bug#32667 lowercase_table3.test reports to error log
kill : Bug#29149: Test "kill" fails on Windows
innodb_mysql : Bug#32724: innodb_mysql.test fails randomly
diff --git a/mysql-test/t/events.test b/mysql-test/t/events_1.test
index a4c7eaebc30..2e0680909d6 100644
--- a/mysql-test/t/events.test
+++ b/mysql-test/t/events_1.test
@@ -302,7 +302,8 @@ SELECT event_name FROM INFORMATION_SCHEMA.events;
SHOW CREATE EVENT intact_check;
--error ER_EVENT_DOES_NOT_EXIST
DROP EVENT no_such_event;
---error ER_CANNOT_LOAD_FROM_TABLE
+#--error ER_CANNOT_LOAD_FROM_TABLE peplaced by:
+--error ER_EVENT_STORE_FAILED
CREATE EVENT intact_check_1 ON SCHEDULE EVERY 5 HOUR DO SELECT 5;
--error ER_EVENT_DOES_NOT_EXIST
ALTER EVENT intact_check_1 ON SCHEDULE EVERY 8 HOUR DO SELECT 8;
@@ -399,396 +400,6 @@ CREATE TABLE mysql.event like event_like;
DROP TABLE event_like;
--replace_column 8 # 9 #
SHOW EVENTS;
-#
-# mysql.event intact checking end
-#
-
-create event e_26 on schedule at '2017-01-01 00:00:00' disable do set @a = 5;
-select db, name, body, definer, convert_tz(execute_at, 'UTC', 'SYSTEM'), on_completion from mysql.event;
-drop event e_26;
---error ER_WRONG_VALUE
-create event e_26 on schedule at NULL disable do set @a = 5;
---error ER_WRONG_VALUE
-create event e_26 on schedule at 'definitely not a datetime' disable do set @a = 5;
-
-set names utf8;
-create event задачка on schedule every 123 minute starts now() ends now() + interval 1 month do select 1;
-drop event задачка;
-
-# event_scheduler is a global var
---error ER_GLOBAL_VARIABLE
-set event_scheduler=off;
-# event_scheduler could be only either 1 or 2
---error ER_WRONG_VALUE_FOR_VAR
-set global event_scheduler=3;
---error ER_WRONG_VALUE_FOR_VAR
-set global event_scheduler=disabled;
-
---echo "DISABLE the scheduler. Testing that it does not work when the variable is 0"
-set global event_scheduler=off;
-select definer, name, db from mysql.event;
-select get_lock("test_lock1", 20);
-create event закачка on schedule every 10 hour do select get_lock("test_lock1", 20);
---echo "Should return 1 row"
-select definer, name, db from mysql.event;
-
---echo "Should be only 0 process"
-select /*1*/ user, host, db, command, state, info
- from information_schema.processlist
- where (user='event_scheduler')
- order by info;
-select release_lock("test_lock1");
-drop event закачка;
---echo "Should have 0 events"
-select count(*) from mysql.event;
-
-#
-#
-#
---echo "ENABLE the scheduler and get a lock"
-set global event_scheduler=on;
-select get_lock("test_lock2", 20);
---echo "Create an event which tries to acquire a mutex. The event locks on the mutex"
-create event закачка on schedule every 10 hour do select get_lock("test_lock2", 20);
-
---echo "Should have only 2 processes: the scheduler and the locked event"
-let $wait_condition= select count(*) = 2 from information_schema.processlist
- where ( (state like 'User lock%' AND info like 'select get_lock%')
- OR (command='Daemon' AND user='event_scheduler' AND
- state = 'Waiting for next activation'));
---source include/wait_condition.inc
-
-select /*2*/ user, host, db, command, state, info
- from information_schema.processlist
- where (info like "select get_lock%" OR user='event_scheduler')
- order by info;
---echo "Release the mutex, the event worker should finish."
-select release_lock("test_lock2");
-drop event закачка;
-
-# Wait for release_lock("test_lock2") to complete,
-# to avoid polluting the next test information_schema.processlist
-let $wait_condition= select count(*) = 0 from information_schema.processlist
- where (state like 'User lock%' AND info like 'select get_lock%');
---source include/wait_condition.inc
-
-
-##
-## 1. get a lock
-## 2. create an event
-## 3. sleep so it has time to start
-## 4. should appear in processlist
-## 5. kill the scheduler, it will wait for the child to stop
-## 6. both processes should be there on show processlist
-## 7. release the lock and sleep, both scheduler and child should end
-set global event_scheduler=1;
-select get_lock("test_lock2_1", 20);
-create event закачка21 on schedule every 10 hour do select get_lock("test_lock2_1", 20);
-
---echo "Should have only 2 processes: the scheduler and the locked event"
-let $wait_condition= select count(*) = 2 from information_schema.processlist
- where ( (state like 'User lock%' AND info like 'select get_lock%')
- OR (command='Daemon' AND user='event_scheduler' AND
- state = 'Waiting for next activation'));
---source include/wait_condition.inc
-
-select /*3*/ user, host, db, command, state, info
- from information_schema.processlist
- where (info like "select get_lock%" OR user='event_scheduler')
- order by info;
-
-set global event_scheduler=off;
-
-let $wait_condition= select count(*) =1 from information_schema.processlist
- where (info like "select get_lock%" OR user='event_scheduler');
---source include/wait_condition.inc
-
---echo "Should have only our process now:"
-select /*4*/ user, host, db, command, state, info
- from information_schema.processlist
- where (info like "select get_lock%" OR user='event_scheduler')
- order by info;
-select release_lock("test_lock2_1");
-drop event закачка21;
-let $wait_condition=
- select count(*) = 0 from information_schema.processlist
- where db='events_test' and command = 'Connect' and user=current_user();
---source include/wait_condition.inc
-
-####
-# Bug #16410 Events: CREATE EVENT is legal in a CREATE TRIGGER statement
-#
-create table t_16 (s1 int);
---error ER_EVENT_RECURSION_FORBIDDEN
-create trigger t_16_bi before insert on t_16 for each row create event e_16 on schedule every 1 second do set @a=5;
-drop table t_16;
-#
-# end of test case
-####
-
-#
-# START: BUG #17453: Creating Event crash the server
-#
-create event white_space
-on schedule every 10 hour
-disable
-do
-select 1;
-select event_schema, event_name, definer, event_definition from information_schema.events where event_name='white_space';
-drop event white_space;
-create event white_space on schedule every 10 hour disable do
-
-select 2;
-select event_schema, event_name, definer, event_definition from information_schema.events where event_name='white_space';
-drop event white_space;
-create event white_space on schedule every 10 hour disable do select 3;
-select event_schema, event_name, definer, event_definition from information_schema.events where event_name='white_space';
-drop event white_space;
-#
-# END: BUG #17453: Creating Event crash the server
-#
-
-#
-# Bug#17403 "Events: packets out of order with show create event"
-#
-create event e1 on schedule every 1 year do set @a = 5;
-create table t1 (s1 int);
---error ER_SP_NO_RETSET
-create trigger t1_ai after insert on t1 for each row show create event e1;
-drop table t1;
-drop event e1;
-
-##set global event_scheduler=1;
-##select get_lock("test_lock3", 20);
-##create event закачка on schedule every 10 hour do select get_lock("test_lock3", 20);
-##select sleep(2);
-##select /*5*/ user, host, db, command, state, info from information_schema.processlist where info is null or info not like '%processlist%' order by info;
-##drop event закачка;
-##select release_lock("test_lock3");
-
-#
-# test with very often occuring event
-# (disabled for now, locks)
-##select get_lock("test_lock4", 20);
-##create event закачка4 on schedule every 1 second do select get_lock("test_lock4", 20);
-##select sleep(3);
-##select /*6*/ user, host, db, command, state, info from information_schema.processlist where info is null or info not like '%processlist%' order by info;
-##drop event закачка4;
-##select release_lock("test_lock4");
-
-##set global event_scheduler=off;
-##select sleep(2);
-##--replace_column 1 # 6 #
-##show processlist;
-##select count(*) from mysql.event;
-
-#
-# Test wrong syntax
-#
-
---error 1102
-SHOW EVENTS FROM aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
---error 1102
-SHOW EVENTS FROM ``;
-
-SHOW EVENTS FROM `events\\test`;
-#
-# A check for events SQL under LOCK TABLES and in pre-locked mode.
-#
---echo
---echo LOCK TABLES mode.
---echo
-#
-# SHOW CREATE EVENT and INFORMATION_SCHEMA.events are available and
-# cause an implicit lock/unlock of mysql.event table, regardless of the
-# currently locked tables.
-#
-create table t1 (a int);
-create event e1 on schedule every 10 hour do select 1;
-#
-lock table t1 read;
-#
---replace_regex /STARTS '[^']+'/STARTS '#'/
-show create event e1;
-select event_name from information_schema.events;
---error ER_TABLE_NOT_LOCKED
-create event e2 on schedule every 10 hour do select 1;
---error ER_TABLE_NOT_LOCKED
-alter event e2 disable;
---error ER_TABLE_NOT_LOCKED
-alter event e2 rename to e3;
---error ER_TABLE_NOT_LOCKED
-drop event e2;
---error ER_TABLE_NOT_LOCKED
-drop event e1;
-unlock tables;
-#
-lock table t1 write;
-#
---replace_regex /STARTS '[^']+'/STARTS '#'/
-show create event e1;
-select event_name from information_schema.events;
---error ER_TABLE_NOT_LOCKED
-create event e2 on schedule every 10 hour do select 1;
---error ER_TABLE_NOT_LOCKED
-alter event e2 disable;
---error ER_TABLE_NOT_LOCKED
-alter event e2 rename to e3;
---error ER_TABLE_NOT_LOCKED
-drop event e2;
---error ER_TABLE_NOT_LOCKED
-drop event e1;
-unlock tables;
-#
-lock table t1 read, mysql.event read;
-#
---replace_regex /STARTS '[^']+'/STARTS '#'/
-show create event e1;
-select event_name from information_schema.events;
---error ER_TABLE_NOT_LOCKED_FOR_WRITE
-create event e2 on schedule every 10 hour do select 1;
---error ER_TABLE_NOT_LOCKED_FOR_WRITE
-alter event e2 disable;
---error ER_TABLE_NOT_LOCKED_FOR_WRITE
-alter event e2 rename to e3;
---error ER_TABLE_NOT_LOCKED_FOR_WRITE
-drop event e2;
---error ER_TABLE_NOT_LOCKED_FOR_WRITE
-drop event e1;
-unlock tables;
-#
-lock table t1 write, mysql.event read;
-#
---replace_regex /STARTS '[^']+'/STARTS '#'/
-show create event e1;
-select event_name from information_schema.events;
---error ER_TABLE_NOT_LOCKED_FOR_WRITE
-create event e2 on schedule every 10 hour do select 1;
---error ER_TABLE_NOT_LOCKED_FOR_WRITE
-alter event e2 disable;
---error ER_TABLE_NOT_LOCKED_FOR_WRITE
-alter event e2 rename to e3;
---error ER_TABLE_NOT_LOCKED_FOR_WRITE
-drop event e2;
---error ER_TABLE_NOT_LOCKED_FOR_WRITE
-drop event e1;
-unlock tables;
-#
---error ER_WRONG_LOCK_OF_SYSTEM_TABLE
-lock table t1 read, mysql.event write;
-#
---error ER_WRONG_LOCK_OF_SYSTEM_TABLE
-lock table t1 write, mysql.event write;
-#
-lock table mysql.event write;
---replace_regex /STARTS '[^']+'/STARTS '#'/
-show create event e1;
-select event_name from information_schema.events;
-create event e2 on schedule every 10 hour do select 1;
-alter event e2 disable;
-alter event e2 rename to e3;
-drop event e3;
-drop event e1;
-unlock tables;
---echo Make sure we have left no events
-select event_name from information_schema.events;
---echo
---echo Events in sub-statements, events and prelocking
---echo
---echo
-create event e1 on schedule every 10 hour do select 1;
-delimiter |;
---error ER_SP_NO_RETSET
-create function f1() returns int
-begin
- show create event e1;
- return 1;
-end|
---error ER_SP_NO_RETSET
-create trigger trg before insert on t1 for each row
-begin
- show create event e1;
-end|
---error ER_SP_NO_RETSET
-create function f1() returns int
-begin
- select event_name from information_schema.events;
- return 1;
-end|
---error ER_SP_NO_RETSET
-create trigger trg before insert on t1 for each row
-begin
- select event_name from information_schema.events;
-end|
---error ER_EVENT_RECURSION_FORBIDDEN
-create function f1() returns int
-begin
- create event e2 on schedule every 10 hour do select 1;
- return 1;
-end|
---error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
-create function f1() returns int
-begin
- alter event e1 rename to e2;
- return 1;
-end|
---error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
-create function f1() returns int
-begin
- drop event e2;
- return 1;
-end|
---echo ----------------------------------------------------------------------
-create trigger trg before insert on t1 for each row
-begin
- set new.a= f1();
-end|
-create function f1() returns int
-begin
- call p1();
- return 0;
-end|
-create procedure p1()
-begin
- select event_name from information_schema.events;
-end|
---error ER_SP_NO_RETSET
-insert into t1 (a) values (1)|
-drop procedure p1|
-create procedure p1()
-begin
- show create event e1;
-end|
---error ER_SP_NO_RETSET
-insert into t1 (a) values (1)|
-drop procedure p1|
-create procedure p1()
-begin
- create temporary table tmp select event_name from information_schema.events;
-end|
---echo expected to work, since we redirect the output into a tmp table
-insert into t1 (a) values (1)|
-select * from tmp|
-drop temporary table tmp|
-drop procedure p1|
-create procedure p1()
-begin
- alter event e1 rename to e2;
-end|
---error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
-insert into t1 (a) values (1)|
-drop procedure p1|
-create procedure p1()
-begin
- drop event e1;
-end|
---error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
-insert into t1 (a) values (1)|
-drop table t1|
-drop event e1|
-delimiter ;|
-
-
#
# End of tests
#
diff --git a/mysql-test/t/events_2.test b/mysql-test/t/events_2.test
new file mode 100644
index 00000000000..cb84a6a4ac4
--- /dev/null
+++ b/mysql-test/t/events_2.test
@@ -0,0 +1,409 @@
+# Can't test with embedded server that doesn't support grants
+-- source include/not_embedded.inc
+
+--disable_warnings
+drop database if exists events_test;
+--enable_warnings
+create database events_test;
+use events_test;
+
+#
+# mysql.event intact checking end
+#
+
+create event e_26 on schedule at '2017-01-01 00:00:00' disable do set @a = 5;
+select db, name, body, definer, convert_tz(execute_at, 'UTC', 'SYSTEM'), on_completion from mysql.event;
+drop event e_26;
+--error ER_WRONG_VALUE
+create event e_26 on schedule at NULL disable do set @a = 5;
+--error ER_WRONG_VALUE
+create event e_26 on schedule at 'definitely not a datetime' disable do set @a = 5;
+
+set names utf8;
+create event задачка on schedule every 123 minute starts now() ends now() + interval 1 month do select 1;
+drop event задачка;
+
+# event_scheduler is a global var
+--error ER_GLOBAL_VARIABLE
+set event_scheduler=off;
+# event_scheduler could be only either 1 or 2
+--error ER_WRONG_VALUE_FOR_VAR
+set global event_scheduler=3;
+--error ER_WRONG_VALUE_FOR_VAR
+set global event_scheduler=disabled;
+
+--echo "DISABLE the scheduler. Testing that it does not work when the variable is 0"
+set global event_scheduler=off;
+select definer, name, db from mysql.event;
+select get_lock("test_lock1", 20);
+create event закачка on schedule every 10 hour do select get_lock("test_lock1", 20);
+--echo "Should return 1 row"
+select definer, name, db from mysql.event;
+
+--echo "Should be only 0 process"
+select /*1*/ user, host, db, command, state, info
+ from information_schema.processlist
+ where (user='event_scheduler')
+ order by info;
+select release_lock("test_lock1");
+drop event закачка;
+--echo "Should have 0 events"
+select count(*) from mysql.event;
+
+#
+#
+#
+--echo "ENABLE the scheduler and get a lock"
+set global event_scheduler=on;
+select get_lock("test_lock2", 20);
+--echo "Create an event which tries to acquire a mutex. The event locks on the mutex"
+create event закачка on schedule every 10 hour do select get_lock("test_lock2", 20);
+
+--echo "Should have only 2 processes: the scheduler and the locked event"
+let $wait_condition= select count(*) = 2 from information_schema.processlist
+ where ( (state like 'User lock%' AND info like 'select get_lock%')
+ OR (command='Daemon' AND user='event_scheduler' AND
+ state = 'Waiting for next activation'));
+--source include/wait_condition.inc
+
+select /*2*/ user, host, db, command, state, info
+ from information_schema.processlist
+ where (info like "select get_lock%" OR user='event_scheduler')
+ order by info;
+--echo "Release the mutex, the event worker should finish."
+select release_lock("test_lock2");
+drop event закачка;
+
+# Wait for release_lock("test_lock2") to complete,
+# to avoid polluting the next test information_schema.processlist
+let $wait_condition= select count(*) = 0 from information_schema.processlist
+ where (state like 'User lock%' AND info like 'select get_lock%');
+--source include/wait_condition.inc
+
+
+##
+## 1. get a lock
+## 2. create an event
+## 3. sleep so it has time to start
+## 4. should appear in processlist
+## 5. kill the scheduler, it will wait for the child to stop
+## 6. both processes should be there on show processlist
+## 7. release the lock and sleep, both scheduler and child should end
+set global event_scheduler=1;
+select get_lock("test_lock2_1", 20);
+create event закачка21 on schedule every 10 hour do select get_lock("test_lock2_1", 20);
+
+--echo "Should have only 2 processes: the scheduler and the locked event"
+let $wait_condition= select count(*) = 2 from information_schema.processlist
+ where ( (state like 'User lock%' AND info like 'select get_lock%')
+ OR (command='Daemon' AND user='event_scheduler' AND
+ state = 'Waiting for next activation'));
+--source include/wait_condition.inc
+
+select /*3*/ user, host, db, command, state, info
+ from information_schema.processlist
+ where (info like "select get_lock%" OR user='event_scheduler')
+ order by info;
+
+set global event_scheduler=off;
+
+let $wait_condition= select count(*) =1 from information_schema.processlist
+ where (info like "select get_lock%" OR user='event_scheduler');
+--source include/wait_condition.inc
+
+--echo "Should have only our process now:"
+select /*4*/ user, host, db, command, state, info
+ from information_schema.processlist
+ where (info like "select get_lock%" OR user='event_scheduler')
+ order by info;
+select release_lock("test_lock2_1");
+drop event закачка21;
+let $wait_condition=
+ select count(*) = 0 from information_schema.processlist
+ where db='events_test' and command = 'Connect' and user=current_user();
+--source include/wait_condition.inc
+
+####
+# Bug #16410 Events: CREATE EVENT is legal in a CREATE TRIGGER statement
+#
+create table t_16 (s1 int);
+--error ER_EVENT_RECURSION_FORBIDDEN
+create trigger t_16_bi before insert on t_16 for each row create event e_16 on schedule every 1 second do set @a=5;
+drop table t_16;
+#
+# end of test case
+####
+
+#
+# START: BUG #17453: Creating Event crash the server
+#
+create event white_space
+on schedule every 10 hour
+disable
+do
+select 1;
+select event_schema, event_name, definer, event_definition from information_schema.events where event_name='white_space';
+drop event white_space;
+create event white_space on schedule every 10 hour disable do
+
+select 2;
+select event_schema, event_name, definer, event_definition from information_schema.events where event_name='white_space';
+drop event white_space;
+create event white_space on schedule every 10 hour disable do select 3;
+select event_schema, event_name, definer, event_definition from information_schema.events where event_name='white_space';
+drop event white_space;
+#
+# END: BUG #17453: Creating Event crash the server
+#
+
+#
+# Bug#17403 "Events: packets out of order with show create event"
+#
+create event e1 on schedule every 1 year do set @a = 5;
+create table t1 (s1 int);
+--error ER_SP_NO_RETSET
+create trigger t1_ai after insert on t1 for each row show create event e1;
+drop table t1;
+drop event e1;
+
+##set global event_scheduler=1;
+##select get_lock("test_lock3", 20);
+##create event закачка on schedule every 10 hour do select get_lock("test_lock3", 20);
+##select sleep(2);
+##select /*5*/ user, host, db, command, state, info from information_schema.processlist where info is null or info not like '%processlist%' order by info;
+##drop event закачка;
+##select release_lock("test_lock3");
+
+#
+# test with very often occuring event
+# (disabled for now, locks)
+##select get_lock("test_lock4", 20);
+##create event закачка4 on schedule every 1 second do select get_lock("test_lock4", 20);
+##select sleep(3);
+##select /*6*/ user, host, db, command, state, info from information_schema.processlist where info is null or info not like '%processlist%' order by info;
+##drop event закачка4;
+##select release_lock("test_lock4");
+
+##set global event_scheduler=off;
+##select sleep(2);
+##--replace_column 1 # 6 #
+##show processlist;
+##select count(*) from mysql.event;
+
+#
+# Test wrong syntax
+#
+
+--error 1102
+SHOW EVENTS FROM aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
+--error 1102
+SHOW EVENTS FROM ``;
+
+SHOW EVENTS FROM `events\\test`;
+#
+# A check for events SQL under LOCK TABLES and in pre-locked mode.
+#
+--echo
+--echo LOCK TABLES mode.
+--echo
+#
+# SHOW CREATE EVENT and INFORMATION_SCHEMA.events are available and
+# cause an implicit lock/unlock of mysql.event table, regardless of the
+# currently locked tables.
+#
+create table t1 (a int);
+create event e1 on schedule every 10 hour do select 1;
+#
+lock table t1 read;
+#
+--replace_regex /STARTS '[^']+'/STARTS '#'/
+show create event e1;
+select event_name from information_schema.events;
+--error ER_TABLE_NOT_LOCKED
+create event e2 on schedule every 10 hour do select 1;
+--error ER_TABLE_NOT_LOCKED
+alter event e2 disable;
+--error ER_TABLE_NOT_LOCKED
+alter event e2 rename to e3;
+--error ER_TABLE_NOT_LOCKED
+drop event e2;
+--error ER_TABLE_NOT_LOCKED
+drop event e1;
+unlock tables;
+#
+lock table t1 write;
+#
+--replace_regex /STARTS '[^']+'/STARTS '#'/
+show create event e1;
+select event_name from information_schema.events;
+--error ER_TABLE_NOT_LOCKED
+create event e2 on schedule every 10 hour do select 1;
+--error ER_TABLE_NOT_LOCKED
+alter event e2 disable;
+--error ER_TABLE_NOT_LOCKED
+alter event e2 rename to e3;
+--error ER_TABLE_NOT_LOCKED
+drop event e2;
+--error ER_TABLE_NOT_LOCKED
+drop event e1;
+unlock tables;
+#
+lock table t1 read, mysql.event read;
+#
+--replace_regex /STARTS '[^']+'/STARTS '#'/
+show create event e1;
+select event_name from information_schema.events;
+--error ER_TABLE_NOT_LOCKED_FOR_WRITE
+create event e2 on schedule every 10 hour do select 1;
+--error ER_TABLE_NOT_LOCKED_FOR_WRITE
+alter event e2 disable;
+--error ER_TABLE_NOT_LOCKED_FOR_WRITE
+alter event e2 rename to e3;
+--error ER_TABLE_NOT_LOCKED_FOR_WRITE
+drop event e2;
+--error ER_TABLE_NOT_LOCKED_FOR_WRITE
+drop event e1;
+unlock tables;
+#
+lock table t1 write, mysql.event read;
+#
+--replace_regex /STARTS '[^']+'/STARTS '#'/
+show create event e1;
+select event_name from information_schema.events;
+--error ER_TABLE_NOT_LOCKED_FOR_WRITE
+create event e2 on schedule every 10 hour do select 1;
+--error ER_TABLE_NOT_LOCKED_FOR_WRITE
+alter event e2 disable;
+--error ER_TABLE_NOT_LOCKED_FOR_WRITE
+alter event e2 rename to e3;
+--error ER_TABLE_NOT_LOCKED_FOR_WRITE
+drop event e2;
+--error ER_TABLE_NOT_LOCKED_FOR_WRITE
+drop event e1;
+unlock tables;
+#
+--error ER_WRONG_LOCK_OF_SYSTEM_TABLE
+lock table t1 read, mysql.event write;
+#
+--error ER_WRONG_LOCK_OF_SYSTEM_TABLE
+lock table t1 write, mysql.event write;
+#
+lock table mysql.event write;
+--replace_regex /STARTS '[^']+'/STARTS '#'/
+show create event e1;
+select event_name from information_schema.events;
+create event e2 on schedule every 10 hour do select 1;
+alter event e2 disable;
+alter event e2 rename to e3;
+drop event e3;
+drop event e1;
+unlock tables;
+--echo Make sure we have left no events
+select event_name from information_schema.events;
+--echo
+--echo Events in sub-statements, events and prelocking
+--echo
+--echo
+create event e1 on schedule every 10 hour do select 1;
+delimiter |;
+--error ER_SP_NO_RETSET
+create function f1() returns int
+begin
+ show create event e1;
+ return 1;
+end|
+--error ER_SP_NO_RETSET
+create trigger trg before insert on t1 for each row
+begin
+ show create event e1;
+end|
+--error ER_SP_NO_RETSET
+create function f1() returns int
+begin
+ select event_name from information_schema.events;
+ return 1;
+end|
+--error ER_SP_NO_RETSET
+create trigger trg before insert on t1 for each row
+begin
+ select event_name from information_schema.events;
+end|
+--error ER_EVENT_RECURSION_FORBIDDEN
+create function f1() returns int
+begin
+ create event e2 on schedule every 10 hour do select 1;
+ return 1;
+end|
+--error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
+create function f1() returns int
+begin
+ alter event e1 rename to e2;
+ return 1;
+end|
+--error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
+create function f1() returns int
+begin
+ drop event e2;
+ return 1;
+end|
+--echo ----------------------------------------------------------------------
+create trigger trg before insert on t1 for each row
+begin
+ set new.a= f1();
+end|
+create function f1() returns int
+begin
+ call p1();
+ return 0;
+end|
+create procedure p1()
+begin
+ select event_name from information_schema.events;
+end|
+--error ER_SP_NO_RETSET
+insert into t1 (a) values (1)|
+drop procedure p1|
+create procedure p1()
+begin
+ show create event e1;
+end|
+--error ER_SP_NO_RETSET
+insert into t1 (a) values (1)|
+drop procedure p1|
+create procedure p1()
+begin
+ create temporary table tmp select event_name from information_schema.events;
+end|
+--echo expected to work, since we redirect the output into a tmp table
+insert into t1 (a) values (1)|
+select * from tmp|
+drop temporary table tmp|
+drop procedure p1|
+create procedure p1()
+begin
+ alter event e1 rename to e2;
+end|
+--error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
+insert into t1 (a) values (1)|
+drop procedure p1|
+create procedure p1()
+begin
+ drop event e1;
+end|
+--error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
+insert into t1 (a) values (1)|
+drop table t1|
+drop event e1|
+delimiter ;|
+
+
+#
+# End of tests
+#
+
+let $wait_condition=
+ select count(*) = 0 from information_schema.processlist
+ where db='events_test' and command = 'Connect' and user=current_user();
+--source include/wait_condition.inc
+
+drop database events_test;