mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 04:53:01 +01:00
a5dfeb02e9
Cut Nr. 8. All tests pass. Separated Event_scheduler into Event_queue and Event_scheduler. Added new Event_scheduler_ng which is the new scheduler and is used system-wide. Will be moved to the event_scheduler.cc in the future. Using Event_timed in Event_queue as well as cloned during execution. Next step is to have Event_worker_data which will be used during execution and will take ::compile()/::execute() out of Event_timed. mysql-test/r/events.result: update result mysql-test/r/events_bugs.result: update result mysql-test/r/ps_1general.result: update result mysql-test/r/skip_name_resolve.result: update result mysql-test/r/sp-threads.result: update result mysql-test/r/sp_notembedded.result: update result mysql-test/r/status.result: update result mysql-test/t/events_stress.test: Make event_stress a bit longer sql/Makefile.am: Add new event_scheduler_ng.h/cc . These are only to be in the experimental clone. Later their content will be moved to event_scheduler.h/cc sql/event_data_objects.cc: Allocate strings memory on own memory root, instead on the schedulers. Thus don't "leak" memory. This should fix bug#18683 memory leak in event scheduler sql/event_data_objects.h: add mem_root add THD - this is only temporal, will be moved to class Event_job_data once Event_job_data is responsible for the execution. sql/event_db_repository.cc: Remove unused code. Cosmetic changes sql/event_queue.cc: Now use the Event_scheduler_ng (NextGen) sql/event_queue.h: Now use the Event_scheduler_ng (NextGen) sql/event_scheduler.cc: This file is no more used, but will be soon. sql/event_scheduler.h: This file is no more used but will be soon sql/events.cc: Now use the Event_scheduler_ng (NextGen) sql/events.h: Now use the Event_scheduler_ng (NextGen) sql/mysqld.cc: Make it again possible to kill the scheduler thread sql/set_var.cc: Now use the Event_scheduler_ng (NextGen) sql/share/errmsg.txt: Shorten the message. sql/sql_show.cc: Loading is on a own root, then don't use thd->mem_root
135 lines
4.2 KiB
Text
135 lines
4.2 KiB
Text
# Can't test with embedded server that doesn't support grants
|
|
-- source include/not_embedded.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=1;
|
|
--sleep 12
|
|
DROP DATABASE events_conn1_test2;
|
|
|
|
SET GLOBAL event_scheduler=2;
|
|
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=1;
|
|
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 12
|
|
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=2;
|
|
DROP DATABASE events_conn1_test4;
|
|
SET GLOBAL event_scheduler=1;
|
|
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;
|