mirror of
https://github.com/MariaDB/server.git
synced 2025-10-27 05:56:07 +03:00
This is a post-review patch.
Fixes the typelib implementation, available only in 5.1.11.
--event-scheduler cmdline : DISABLED | ON | OFF | 0 | 1
DISABLED - makes the scheduler unavailable during the server run
(ON|1)- When the server is started the scheduler will be started. It can
be stopped and restarted by setting appropriate values to
GLOBAL event_scheduler
(OFF|0)- When the server is started, the scheduler won't be started. It
can be started and again stopped by setting appropriate values to
GLOBAL event_scheduler. _DEFAULT_ value
The GLOBAL variable event_scheduler can have the following values:
OFF | ON | 0 | 1
DISABLED is not possible and every attempt will end with an error that
it's not a valid value for the variable.
OFF | 0 - This is the pre-5.1.11 behavior - The scheduler stops, if not
already stopped, and can be started again by setting
the value of the variable to ON|1.
ON | 1 - This is the pre-5.1.11 behavior - The scheduler starts, if not
already started, and can be stopped again by setting the value
of the variable to OFF|0.
mysql-test/r/events.result:
update result
mysql-test/r/events_bugs.result:
update result
mysql-test/r/events_logs_tests.result:
update result
mysql-test/r/events_restart_phase1.result:
update result
mysql-test/r/events_restart_phase3.result:
update result
mysql-test/r/events_scheduling.result:
update result
mysql-test/r/events_stress.result:
update result
mysql-test/t/events.test:
update test:
2 -> off
1 -> on
mysql-test/t/events_bugs.test:
update test:
2 -> off
1 -> on
mysql-test/t/events_logs_tests.test:
update test:
2 -> off
1 -> on
mysql-test/t/events_restart_phase1.test:
update test:
2 -> off
1 -> on
mysql-test/t/events_restart_phase2-master.opt:
update master file : 1 => on
mysql-test/t/events_scheduling.test:
update test:
2 -> off
1 -> on
add tests for event_scheduler global variable representation from
SHOW VARIABLES.
mysql-test/t/events_stress.test:
update test:
2 -> off
1 -> on
sql/events.cc:
Implement two different TYPELIBs for --event-scheduler cmd line
option and for GLOBAL variable event_scheduler
--event-scheduler cmdline : DISABLED | ON | OFF | 0 | 1
DISABLED - makes the scheduler unavailable during the server run
(ON|1)- When the server is started the scheduler will be started. It can
be stopped and restarted by setting appropriate values to
GLOBAL event_scheduler
(OFF|0)- When the server is started, the scheduler won't be started. It
can be started and again stopped by setting appropriate values to
GLOBAL event_scheduler. _DEFAULT_ value
The GLOBAL variable event_scheduler can have the following values:
OFF | ON | 0 | 1
DISABLED is not possible and every attempt will end with an error that
it's not a valid value for the variable.
OFF | 0 - This is the pre-5.1.11 behavior - The scheduler stops, if not
already stopped, and can be started again by setting
the value of the variable to ON|1.
ON | 1 - This is the pre-5.1.11 behavior - The scheduler starts, if not
already started, and can be stopped again by setting the value
of the variable to OFF|0.
sql/events.h:
additional TYPELIB for GLOBAL event_scheduler
sql/mysqld.cc:
--event-scheduler should be checked against a TYPELIB and
therefore should be GET_STR, as well as we make the parameter optional.
When not provided OFF|0 is used.
sql/set_var.cc:
Implement typelib for event_scheduler variable.
If allows both INT_RESULT -> 0 | 1
and STRING_RESULT -> OFF | ON
The variable is shown as DISABLED | ON | OFF
sql/set_var.h:
Implement typelib, which expects both STRING and INT,
for event_scheduler.
137 lines
4.3 KiB
Plaintext
137 lines
4.3 KiB
Plaintext
# Can't test with embedded server that doesn't support grants
|
|
--source include/not_embedded.inc
|
|
--source include/big_test.inc
|
|
|
|
CREATE DATABASE IF NOT EXISTS events_test;
|
|
#
|
|
# DROP DATABASE test start (bug #16406)
|
|
#
|
|
CREATE DATABASE events_conn1_test2;
|
|
# BUG#20676: MySQL in debug mode has a limit of 100 waiters
|
|
# (in mysys/thr_lock.c), so use three different tables to insert into.
|
|
CREATE TABLE events_test.fill_it1(test_name varchar(20), occur datetime);
|
|
CREATE TABLE events_test.fill_it2(test_name varchar(20), occur datetime);
|
|
CREATE TABLE events_test.fill_it3(test_name varchar(20), occur datetime);
|
|
CREATE USER event_user2@localhost;
|
|
CREATE DATABASE events_conn2_db;
|
|
GRANT ALL ON *.* TO event_user2@localhost;
|
|
CREATE USER event_user3@localhost;
|
|
CREATE DATABASE events_conn3_db;
|
|
GRANT ALL ON *.* TO event_user3@localhost;
|
|
connect (conn2,localhost,event_user2,,events_conn2_db);
|
|
--echo "In the second connection we create some events which won't be dropped till the end"
|
|
--disable_query_log
|
|
let $1= 50;
|
|
while ($1)
|
|
{
|
|
eval CREATE EVENT conn2_ev$1 ON SCHEDULE EVERY 1 SECOND DO INSERT INTO events_test.fill_it1 VALUES("conn2_ev$1", NOW());
|
|
dec $1;
|
|
}
|
|
--enable_query_log
|
|
connect (conn3,localhost,event_user3,,events_conn3_db);
|
|
--echo "In the second connection we create some events which won't be dropped till the end"
|
|
--disable_query_log
|
|
let $1= 50;
|
|
while ($1)
|
|
{
|
|
eval CREATE EVENT conn3_ev$1 ON SCHEDULE EVERY 1 SECOND DO INSERT INTO events_test.fill_it1 VALUES("conn3_ev$1", NOW());
|
|
dec $1;
|
|
}
|
|
--enable_query_log
|
|
connection default;
|
|
USE events_conn1_test2;
|
|
CREATE EVENT ev_drop1 ON SCHEDULE EVERY 10 MINUTE DISABLE DO SELECT 1;
|
|
CREATE EVENT ev_drop2 ON SCHEDULE EVERY 10 MINUTE DISABLE DO SELECT 1;
|
|
CREATE EVENT ev_drop3 ON SCHEDULE EVERY 10 MINUTE DISABLE DO SELECT 1;
|
|
USE events_test;
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.EVENTS;
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_SCHEMA='events_conn1_test2';
|
|
DROP DATABASE events_conn1_test2;
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_SCHEMA='events_conn1_test2';
|
|
|
|
--echo "Now testing stability - dropping db -> events while they are running"
|
|
CREATE DATABASE events_conn1_test2;
|
|
USE events_conn1_test2;
|
|
--disable_query_log
|
|
let $1= 50;
|
|
while ($1)
|
|
{
|
|
eval CREATE EVENT conn1_round1_ev$1 ON SCHEDULE EVERY 1 SECOND DO INSERT INTO events_test.fill_it2 VALUES("conn1_round1_ev$1", NOW());
|
|
dec $1;
|
|
}
|
|
--enable_query_log
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_SCHEMA='events_conn1_test2';
|
|
SET GLOBAL event_scheduler=on;
|
|
--sleep 2.5
|
|
DROP DATABASE events_conn1_test2;
|
|
|
|
SET GLOBAL event_scheduler=off;
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_SCHEMA='events_conn1_test2';
|
|
CREATE DATABASE events_conn1_test3;
|
|
USE events_conn1_test3;
|
|
--disable_query_log
|
|
let $1= 50;
|
|
while ($1)
|
|
{
|
|
eval CREATE EVENT conn1_round2_ev$1 ON SCHEDULE EVERY 1 SECOND DO INSERT INTO events_test.fill_it2 VALUES("conn1_round2_ev$1", NOW());
|
|
dec $1;
|
|
}
|
|
--enable_query_log
|
|
SET GLOBAL event_scheduler=on;
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_SCHEMA='events_conn1_test3';
|
|
CREATE DATABASE events_conn1_test4;
|
|
USE events_conn1_test4;
|
|
--disable_query_log
|
|
let $1= 50;
|
|
while ($1)
|
|
{
|
|
eval CREATE EVENT conn1_round3_ev$1 ON SCHEDULE EVERY 1 SECOND DO INSERT INTO events_test.fill_it3 VALUES("conn1_round3_ev$1", NOW());
|
|
dec $1;
|
|
}
|
|
--enable_query_log
|
|
|
|
CREATE DATABASE events_conn1_test2;
|
|
USE events_conn1_test2;
|
|
--disable_query_log
|
|
let $1= 50;
|
|
while ($1)
|
|
{
|
|
eval CREATE EVENT ev_round4_drop$1 ON SCHEDULE EVERY 1 SECOND DO INSERT INTO events_test.fill_it3 VALUES("conn1_round4_ev$1", NOW());
|
|
dec $1;
|
|
}
|
|
--enable_query_log
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_SCHEMA='events_conn1_test2';
|
|
--sleep 2.5
|
|
connection conn2;
|
|
--send
|
|
DROP DATABASE events_conn2_db;
|
|
connection conn3;
|
|
--send
|
|
DROP DATABASE events_conn3_db;
|
|
connection default;
|
|
--send
|
|
DROP DATABASE events_conn1_test2;
|
|
DROP DATABASE events_conn1_test3;
|
|
SET GLOBAL event_scheduler=off;
|
|
DROP DATABASE events_conn1_test4;
|
|
SET GLOBAL event_scheduler=on;
|
|
connection conn2;
|
|
reap;
|
|
disconnect conn2;
|
|
connection conn3;
|
|
reap;
|
|
disconnect conn3;
|
|
connection default;
|
|
USE events_test;
|
|
DROP TABLE fill_it1;
|
|
DROP TABLE fill_it2;
|
|
DROP TABLE fill_it3;
|
|
--disable_query_log
|
|
DROP USER event_user2@localhost;
|
|
DROP USER event_user3@localhost;
|
|
--enable_query_log
|
|
#
|
|
# DROP DATABASE test end (bug #16406)
|
|
#
|
|
DROP DATABASE events_test;
|