mirror of
https://github.com/MariaDB/server.git
synced 2025-01-22 14:54:20 +01:00
08892be32d
WL#1034 (Internal CRON)
195 lines
6.4 KiB
Text
195 lines
6.4 KiB
Text
create database if not exists events_test;
|
||
use events_test;
|
||
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;
|
||
|
||
create event e_43 on schedule every 1 second do set @a = 5;
|
||
set global event_scheduler = 1;
|
||
select sleep(2);
|
||
alter event e_43 do alter event e_43 do set @a = 4;
|
||
select sleep(3);
|
||
select db, name, body, status, interval_field, interval_value from mysql.event;
|
||
drop event e_43;
|
||
select sleep(1);
|
||
set global event_scheduler = 0;
|
||
|
||
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());
|
||
set max_allowed_packet=128000000;
|
||
select count(*) from t_event3;
|
||
drop event event3;
|
||
drop table t_event3;
|
||
|
||
#
|
||
#INFORMATION_SCHEMA.EVENTS test begin
|
||
#
|
||
create event one_event on schedule every 10 second do select 123;
|
||
--replace_column 8 # 9 #
|
||
SHOW EVENTS;
|
||
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT from information_schema.events;
|
||
CREATE DATABASE events_test2;
|
||
CREATE USER ev_test@localhost;
|
||
GRANT ALL ON events_test.* to ev_test@localhost;
|
||
GRANT ALL on events_test2.* to ev_test@localhost;
|
||
REVOKE EVENT ON events_test2.* FROM ev_test@localhost;
|
||
REVOKE PROCESS on *.* from ev_test@localhost;
|
||
#now we are on con1
|
||
connect (ev_con1,localhost,ev_test,,events_test2);
|
||
select "NEW CONNECTION";
|
||
SELECT USER(), DATABASE();
|
||
SHOW GRANTS;
|
||
|
||
--echo "Here comes an error:";
|
||
#NO EVENT_ACL on events_test2
|
||
--error 1044
|
||
SHOW EVENTS;
|
||
USE events_test;
|
||
|
||
--echo "Now the list should be empty:";
|
||
--replace_column 8 # 9 #
|
||
SHOW EVENTS;
|
||
#now create an event with the same name but we are different user
|
||
select concat("Let's create some new events from the name of ",user());
|
||
create event one_event on schedule every 20 second do select 123;
|
||
create event two_event on schedule every 20 second on completion not preserve comment "two event" do select 123;
|
||
create event three_event on schedule every 20 second on completion preserve comment "three event" do select 123;
|
||
|
||
--echo "Now we should see 3 events:";
|
||
--replace_column 8 # 9 #
|
||
SHOW EVENTS;
|
||
|
||
--echo "This should show us only 3 events:";
|
||
--replace_column 8 # 9 #
|
||
SHOW FULL EVENTS;
|
||
|
||
--echo "This should show us only 2 events:";
|
||
--replace_column 8 # 9 #
|
||
SHOW FULL EVENTS LIKE 't%event';
|
||
|
||
--echo "This should show us no events:";
|
||
--replace_column 8 # 9 #
|
||
SHOW FULL EVENTS FROM test LIKE '%';
|
||
#ok, we are back
|
||
connection default;
|
||
DROP DATABASE events_test2;
|
||
|
||
--echo "should see 1 event:";
|
||
--replace_column 8 # 9 #
|
||
SHOW EVENTS;
|
||
|
||
--echo "we should see 4 events now:";
|
||
--replace_column 8 # 9 #
|
||
SHOW FULL EVENTS;
|
||
SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT from information_schema.events;
|
||
|
||
connection ev_con1;
|
||
drop event one_event;
|
||
drop event two_event;
|
||
drop event three_event;
|
||
disconnect ev_con1;
|
||
connection default;
|
||
drop user ev_test@localhost;
|
||
drop event one_event;
|
||
#
|
||
##INFORMATION_SCHEMA.EVENTS test 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 1503
|
||
create event e_26 on schedule at NULL disabled do set @a = 5;
|
||
--error 1503
|
||
create event e_26 on schedule at 'definitely not a datetime' disabled 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 1229
|
||
set event_scheduler=0;
|
||
# event_scheduler could be only either 0 or 1
|
||
--error 1231
|
||
set global event_scheduler=2;
|
||
|
||
#set global event_scheduler=0;
|
||
#select count(*) from mysql.event;
|
||
#select get_lock("test_lock1", 20);
|
||
#create event закачка on schedule every 10 hour do select get_lock("test_lock1", 20);
|
||
#select count(*) from mysql.event;
|
||
##show processlist;
|
||
#select release_lock("test_lock1");
|
||
#drop event закачка;
|
||
#select count(*) from mysql.event;
|
||
#
|
||
#set global event_scheduler=1;
|
||
#select get_lock("test_lock2", 20);
|
||
#create event закачка on schedule every 10 hour do select get_lock("test_lock2", 20);
|
||
#select sleep(2);
|
||
#show processlist;
|
||
#select release_lock("test_lock2");
|
||
#drop event закачка;
|
||
|
||
##
|
||
## 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);
|
||
#select sleep(2);
|
||
##show processlist;
|
||
#set global event_scheduler=0;
|
||
#select sleep(2);
|
||
##show processlist;
|
||
#select release_lock("test_lock2_1");
|
||
#select sleep(2);
|
||
##show processlist;
|
||
#drop event закачка21;
|
||
|
||
#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);
|
||
#show processlist;
|
||
#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);
|
||
##show processlist;
|
||
##drop event закачка4;
|
||
##select release_lock("test_lock4");
|
||
|
||
#set global event_scheduler=0;
|
||
#select sleep(2);
|
||
##show processlist;
|
||
##the following locks for some reason and is a bug, commented for now
|
||
##select count(*) from mysql.event;
|
||
|
||
drop database events_test;
|