diff options
author | unknown <hhunger@hh-nb.hungers> | 2008-02-20 14:40:46 +0100 |
---|---|---|
committer | unknown <hhunger@hh-nb.hungers> | 2008-02-20 14:40:46 +0100 |
commit | f8ff8c01e4fcc440efa7c9b0f2c7bed1b07c6582 (patch) | |
tree | 64a24ab507cae611b4091172e5d8745ea7b06ff6 /mysql-test/t/events.test | |
parent | 41b01b7f2142159c17c0180194f1adda8857d5c6 (diff) | |
download | mariadb-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/t/events.test')
-rw-r--r-- | mysql-test/t/events.test | 801 |
1 files changed, 0 insertions, 801 deletions
diff --git a/mysql-test/t/events.test b/mysql-test/t/events.test deleted file mode 100644 index a4c7eaebc30..00000000000 --- a/mysql-test/t/events.test +++ /dev/null @@ -1,801 +0,0 @@ -# Can't test with embedded server that doesn't support grants --- source include/not_embedded.inc - ---disable_warnings -drop database if exists events_test; -drop database if exists db_x; -drop database if exists mysqltest_db2; -drop database if exists mysqltest_no_such_database; ---enable_warnings -create database events_test; -use events_test; - -# -# START: BUG #17289 Events: missing privilege check for drop database -# -CREATE USER pauline@localhost; -CREATE DATABASE db_x; -GRANT EVENT ON db_x.* TO pauline@localhost; -USE db_x; -CREATE TABLE x_table(a int); -connect (priv_conn,localhost,pauline,,db_x); -CREATE EVENT e_x1 ON SCHEDULE EVERY 1 SECOND DO DROP DATABASE db_x; -CREATE EVENT e_x2 ON SCHEDULE EVERY 1 SECOND DO DROP TABLE x_table; -connection default; -SHOW DATABASES LIKE 'db_x'; -SET GLOBAL event_scheduler=1; ---sleep 1.2 -SHOW DATABASES LIKE 'db_x'; -SHOW TABLES FROM db_x; -SET GLOBAL event_scheduler=off; -connection priv_conn; -DROP EVENT e_x1; -DROP EVENT e_x2; -disconnect priv_conn; -connection default; -DROP DATABASE db_x; -DROP USER pauline@localhost; -USE events_test; -# -# END: BUG #17289 Events: missing privilege check for drop database -# -SET GLOBAL event_scheduler=off; -drop event if exists event1; -create event event1 on schedule every 15 minute starts now() ends date_add(now(), interval 5 hour) DO begin end; -alter event event1 rename to event2 enable; -alter event event2 disable; -alter event event2 enable; -alter event event2 on completion not preserve; -delimiter __; -alter event event2 on schedule every 1 year on completion preserve rename to event3 comment "new comment" do begin select 1; end__ -delimiter ;__ -alter event event3 rename to event2; - -drop event event2; -create event event2 on schedule every 2 second starts now() ends date_add(now(), interval 5 hour) comment "some" DO begin end; -drop event event2; - -# -# BUG #16537 (Events: mysql.event.starts is null) -# -CREATE EVENT event_starts_test ON SCHEDULE EVERY 10 SECOND COMMENT "" DO SELECT 1; -SELECT interval_field, interval_value, body FROM mysql.event WHERE db='events_test' AND name='event_starts_test'; -SELECT execute_at IS NULL, starts IS NULL, ends IS NULL, comment FROM mysql.event WHERE db='events_test' AND name='event_starts_test'; -ALTER EVENT event_starts_test ON SCHEDULE AT '2020-02-02 20:00:02'; -SELECT execute_at IS NULL, starts IS NULL, ends IS NULL, comment FROM mysql.event WHERE db='events_test' AND name='event_starts_test'; -ALTER EVENT event_starts_test COMMENT "non-empty comment"; -SELECT execute_at IS NULL, starts IS NULL, ends IS NULL, comment FROM mysql.event WHERE db='events_test' AND name='event_starts_test'; -ALTER EVENT event_starts_test COMMENT ""; -SELECT execute_at IS NULL, starts IS NULL, ends IS NULL, comment FROM mysql.event WHERE db='events_test' AND name='event_starts_test'; -DROP EVENT event_starts_test; - -CREATE EVENT event_starts_test ON SCHEDULE EVERY 20 SECOND STARTS '2020-02-02 20:00:02' ENDS '2022-02-02 20:00:02' DO SELECT 2; -SELECT execute_at IS NULL, starts IS NULL, ends IS NULL, comment FROM mysql.event WHERE db='events_test' AND name='event_starts_test'; -ALTER EVENT event_starts_test COMMENT "non-empty comment"; -SELECT execute_at IS NULL, starts IS NULL, ends IS NULL, comment FROM mysql.event WHERE db='events_test' AND name='event_starts_test'; -ALTER EVENT event_starts_test COMMENT ""; -SELECT execute_at IS NULL, starts IS NULL, ends IS NULL, comment FROM mysql.event WHERE db='events_test' AND name='event_starts_test'; -DROP EVENT event_starts_test; -# -# -create table test_nested(a int); -create event e_43 on schedule every 1 second do set @a = 5; ---error ER_EVENT_RECURSION_FORBIDDEN -alter event e_43 do alter event e_43 do set @a = 4; -delimiter |; -alter event e_43 do -begin - alter event e_43 on schedule every 5 minute; - insert into test_nested values(1); -end| -delimiter ;| -set global event_scheduler = on; ---sleep 3 -select db, name, body, status, interval_field, interval_value from mysql.event; -drop event e_43; -drop table test_nested; - ---echo "Let's check whether we can use non-qualified names" -create table non_qualif(a int); -create event non_qualif_ev on schedule every 10 minute do insert into non_qualif values (800219); ---sleep 1.1 -select * from non_qualif; -drop event non_qualif_ev; -drop table non_qualif; - ---error ER_EVENT_DOES_NOT_EXIST -alter event non_existant rename to non_existant_too; - -set global event_scheduler = off; -create event existant on schedule at now() + interval 1 year do select 12; ---error ER_EVENT_ALREADY_EXISTS -alter event non_existant rename to existant; ---error ER_EVENT_SAME_NAME -alter event existant rename to events_test.existant; -drop event existant; - - -create table t_event3 (a int, b float); -drop event if exists event3; -create event event3 on schedule every 50 + 10 minute starts date_add("20100101", interval 5 minute) ends date_add("20151010", interval 5 day) comment "portokala_comment" DO insert into t_event3 values (unix_timestamp(), rand()); -select count(*) from t_event3; -drop event event3; -drop table t_event3; - - -set names utf8; -# -# SHOW CREATE EVENT test begin -# -CREATE EVENT root6 ON SCHEDULE EVERY '10:20' MINUTE_SECOND ON COMPLETION PRESERVE ENABLE COMMENT 'some comment' DO select 1; ---replace_regex /STARTS '[^']+'/STARTS '#'/ -SHOW CREATE EVENT root6; -create event root7 on schedule every 2 year do select 1; ---replace_regex /STARTS '[^']+'/STARTS '#'/ -SHOW CREATE EVENT root7; -create event root8 on schedule every '2:5' year_month do select 1; ---replace_regex /STARTS '[^']+'/STARTS '#'/ -SHOW CREATE EVENT root8; -create event root8_1 on schedule every '2:15' year_month do select 1; ---replace_regex /STARTS '[^']+'/STARTS '#'/ -SHOW CREATE EVENT root8_1; -create event root9 on schedule every 2 week ON COMPLETION PRESERVE DISABLE COMMENT 'коментар на кирилица' do select 1; ---replace_regex /STARTS '[^']+'/STARTS '#'/ -SHOW CREATE EVENT root9; -create event root10 on schedule every '20:5' day_hour do select 1; ---replace_regex /STARTS '[^']+'/STARTS '#'/ -SHOW CREATE EVENT root10; -create event root11 on schedule every '20:25' day_hour do select 1; ---replace_regex /STARTS '[^']+'/STARTS '#'/ -SHOW CREATE EVENT root11; -create event root12 on schedule every '20:25' hour_minute do select 1; ---replace_regex /STARTS '[^']+'/STARTS '#'/ -SHOW CREATE EVENT root12; -create event root13 on schedule every '25:25' hour_minute do select 1; ---replace_regex /STARTS '[^']+'/STARTS '#'/ -SHOW CREATE EVENT root13; -create event root13_1 on schedule every '11:65' hour_minute do select 1; ---replace_regex /STARTS '[^']+'/STARTS '#'/ -SHOW CREATE EVENT root13_1; -create event root14 on schedule every '35:35' minute_second do select 1; ---replace_regex /STARTS '[^']+'/STARTS '#'/ -SHOW CREATE EVENT root14; -create event root15 on schedule every '35:66' minute_second do select 1; ---replace_regex /STARTS '[^']+'/STARTS '#'/ -SHOW CREATE EVENT root15; -create event root16 on schedule every '35:56' day_minute do select 1; ---replace_regex /STARTS '[^']+'/STARTS '#'/ -SHOW CREATE EVENT root16; -create event root17 on schedule every '35:12:45' day_minute do select 1; ---replace_regex /STARTS '[^']+'/STARTS '#'/ -SHOW CREATE EVENT root17; -create event root17_1 on schedule every '35:25:65' day_minute do select 1; ---replace_regex /STARTS '[^']+'/STARTS '#'/ -SHOW CREATE EVENT root17_1; -create event root18 on schedule every '35:12:45' hour_second do select 1; ---replace_regex /STARTS '[^']+'/STARTS '#'/ -SHOW CREATE EVENT root18; -create event root19 on schedule every '15:59:85' hour_second do select 1; ---replace_regex /STARTS '[^']+'/STARTS '#'/ -SHOW CREATE EVENT root19; -create event root20 on schedule every '50:20:12:45' day_second do select 1; ---replace_regex /STARTS '[^']+'/STARTS '#'/ -SHOW CREATE EVENT root20; -set names cp1251; -create event ðóóò21 on schedule every '50:23:59:95' day_second COMMENT 'òîâà å 1251 êîìåíòàð' do select 1; ---replace_regex /STARTS '[^']+'/STARTS '#'/ -SHOW CREATE EVENT ðóóò21; -insert into mysql.event ( - db, - name, - body, - definer, - interval_value, - interval_field, - originator, - character_set_client, - collation_connection, - db_collation, - body_utf8) -values ( - database(), - "root22", - "select 1", - user(), - 100, - "SECOND_MICROSECOND", - 1, - 'utf8', - 'utf8_general_ci', - 'utf8_general_ci', - 'select 1'); ---error ER_NOT_SUPPORTED_YET -show create event root22; ---error ER_NOT_SUPPORTED_YET -SHOW EVENTS; -drop event root22; ---error ER_EVENT_INTERVAL_NOT_POSITIVE_OR_TOO_BIG -create event root23 on schedule every -100 year do select 1; ---error ER_EVENT_INTERVAL_NOT_POSITIVE_OR_TOO_BIG -create event root23 on schedule every 222222222222222222222 year do select 1; -drop event root6; -drop event root7; -drop event root8; -drop event root8_1; -drop event root9; -drop event root10; -drop event root11; -drop event root12; -drop event root13; -drop event root13_1; -drop event root14; -drop event root15; -drop event root16; -drop event root17; -drop event root17_1; -drop event root18; -drop event root19; -drop event root20; -drop event ðóóò21; - -set names latin1; -# -# SHOW CREATE EVENT test end -# - -# -# mysql.event intact checking -# Check that the server does not crash if -# one has destroyed or tampered with the event table. -# Please see see for events_restart_phase* tests to -# see the server behavior at start up with bad mysql.event -# table. -# -# ---echo Create a test event. Only event metadata is relevant, ---echo the actual schedule and body are not. -# -CREATE EVENT intact_check ON SCHEDULE EVERY 10 HOUR DO SELECT "nothing"; ---replace_column 8 # 9 # -SHOW EVENTS; -# ---echo Try to alter mysql.event: the server should fail to load ---echo event information after mysql.event was tampered with. ---echo ---echo First, let's add a column to the end and make sure everything ---echo works as before ---echo -ALTER TABLE mysql.event ADD dummy INT; ---replace_column 8 # 9 # -SHOW EVENTS; -SELECT event_name FROM INFORMATION_SCHEMA.events; ---replace_regex /STARTS '[^']+'/STARTS '#'/ -SHOW CREATE EVENT intact_check; ---error ER_EVENT_DOES_NOT_EXIST -DROP EVENT no_such_event; -CREATE EVENT intact_check_1 ON SCHEDULE EVERY 5 HOUR DO SELECT 5; -ALTER EVENT intact_check_1 ON SCHEDULE EVERY 8 HOUR DO SELECT 8; -ALTER EVENT intact_check_1 RENAME TO intact_check_2; ---error ER_EVENT_DOES_NOT_EXIST -DROP EVENT intact_check_1; -DROP EVENT intact_check_2; -DROP EVENT intact_check; -DROP DATABASE IF EXISTS mysqltest_no_such_database; -CREATE DATABASE mysqltest_db2; -DROP DATABASE mysqltest_db2; -SELECT @@event_scheduler; -SHOW VARIABLES LIKE 'event_scheduler'; -SET GLOBAL event_scheduler=OFF; -# Clean up -ALTER TABLE mysql.event DROP dummy; -CREATE EVENT intact_check ON SCHEDULE EVERY 10 HOUR DO SELECT "nothing"; ---echo ---echo Now let's add a column to the first position: the server ---echo expects to see event schema name there ---echo -ALTER TABLE mysql.event ADD dummy INT FIRST; ---error ER_CANNOT_LOAD_FROM_TABLE -SHOW EVENTS; ---error ER_CANNOT_LOAD_FROM_TABLE -SELECT event_name FROM INFORMATION_SCHEMA.events; ---error ER_EVENT_DOES_NOT_EXIST -SHOW CREATE EVENT intact_check; ---error ER_EVENT_DOES_NOT_EXIST -DROP EVENT no_such_event; ---error ER_CANNOT_LOAD_FROM_TABLE -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; ---error ER_EVENT_DOES_NOT_EXIST -ALTER EVENT intact_check_1 RENAME TO intact_check_2; ---error ER_EVENT_DOES_NOT_EXIST -DROP EVENT intact_check_1; ---error ER_EVENT_DOES_NOT_EXIST -DROP EVENT intact_check_2; ---error ER_EVENT_DOES_NOT_EXIST -DROP EVENT intact_check; -# Should work OK -DROP DATABASE IF EXISTS mysqltest_no_such_database; -CREATE DATABASE mysqltest_db2; -DROP DATABASE mysqltest_db2; -SELECT @@event_scheduler; -SHOW VARIABLES LIKE 'event_scheduler'; -SET GLOBAL event_scheduler=OFF; ---echo Clean up -ALTER TABLE mysql.event DROP dummy; -DELETE FROM mysql.event; -CREATE EVENT intact_check ON SCHEDULE EVERY 10 HOUR DO SELECT "nothing"; ---echo Back up the table, further changes are not reversible -CREATE TABLE event_like LIKE mysql.event; -INSERT INTO event_like SELECT * FROM mysql.event; ---echo ---echo Drop some columns and try more checks. ---echo ---echo -ALTER TABLE mysql.event DROP comment, DROP starts; ---error ER_CANNOT_LOAD_FROM_TABLE -SHOW EVENTS; ---error ER_CANNOT_LOAD_FROM_TABLE -SELECT event_name FROM INFORMATION_SCHEMA.EVENTS; ---error ER_CANNOT_LOAD_FROM_TABLE -SHOW CREATE EVENT intact_check; ---error ER_EVENT_DOES_NOT_EXIST -DROP EVENT no_such_event; ---error ER_COL_COUNT_DOESNT_MATCH_CORRUPTED -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; ---error ER_EVENT_DOES_NOT_EXIST -ALTER EVENT intact_check_1 RENAME TO intact_check_2; ---error ER_EVENT_DOES_NOT_EXIST -DROP EVENT intact_check_1; ---error ER_EVENT_DOES_NOT_EXIST -DROP EVENT intact_check_2; -# Should succeed -DROP EVENT intact_check; -DROP DATABASE IF EXISTS mysqltest_no_such_database; -CREATE DATABASE mysqltest_db2; -DROP DATABASE mysqltest_db2; -SELECT @@event_scheduler; -SHOW VARIABLES LIKE 'event_scheduler'; -SET GLOBAL event_scheduler=OFF; ---echo ---echo Now drop the table, and test again ---echo ---echo -DROP TABLE mysql.event; ---error ER_NO_SUCH_TABLE -SHOW EVENTS; ---error ER_NO_SUCH_TABLE -SELECT event_name FROM INFORMATION_SCHEMA.events; ---error ER_NO_SUCH_TABLE -SHOW CREATE EVENT intact_check; ---error ER_NO_SUCH_TABLE -DROP EVENT no_such_event; ---error ER_NO_SUCH_TABLE -CREATE EVENT intact_check_1 ON SCHEDULE EVERY 5 HOUR DO SELECT 5; ---error ER_NO_SUCH_TABLE -ALTER EVENT intact_check_1 ON SCHEDULE EVERY 8 HOUR DO SELECT 8; ---error ER_NO_SUCH_TABLE -ALTER EVENT intact_check_1 RENAME TO intact_check_2; ---error ER_NO_SUCH_TABLE -DROP EVENT intact_check_1; ---error ER_NO_SUCH_TABLE -DROP EVENT intact_check_2; ---error ER_NO_SUCH_TABLE -DROP EVENT intact_check; -DROP DATABASE IF EXISTS mysqltest_no_such_database; -CREATE DATABASE mysqltest_db2; -DROP DATABASE mysqltest_db2; ---echo OK, there is an unnecessary warning about the non-existent table ---echo but it's not easy to fix and no one complained about it. ---echo A similar warning is printed if mysql.proc is missing. -SHOW WARNINGS; -SELECT @@event_scheduler; -SHOW VARIABLES LIKE 'event_scheduler'; -SET GLOBAL event_scheduler=OFF; ---echo Restore the original table. -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 -# - -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; |