mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 04:53:01 +01:00
da4734c3bc
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.
85 lines
3 KiB
Text
85 lines
3 KiB
Text
CREATE DATABASE IF NOT EXISTS events_test;
|
|
USE events_test;
|
|
SET GLOBAL event_scheduler=OFF;
|
|
SHOW VARIABLES LIKE 'event_scheduler';
|
|
Variable_name Value
|
|
event_scheduler OFF
|
|
SET GLOBAL event_scheduler=1;
|
|
SHOW VARIABLES LIKE 'event_scheduler';
|
|
Variable_name Value
|
|
event_scheduler ON
|
|
SET GLOBAL event_scheduler=0;
|
|
SHOW VARIABLES LIKE 'event_scheduler';
|
|
Variable_name Value
|
|
event_scheduler OFF
|
|
SET GLOBAL event_scheduler=ON;
|
|
SHOW VARIABLES LIKE 'event_scheduler';
|
|
Variable_name Value
|
|
event_scheduler ON
|
|
SET GLOBAL event_scheduler=DISABLED;
|
|
ERROR 42000: Variable 'event_scheduler' can't be set to the value of 'DISABLED'
|
|
SHOW VARIABLES LIKE 'event_scheduler';
|
|
Variable_name Value
|
|
event_scheduler ON
|
|
SET GLOBAL event_scheduler=-1;
|
|
ERROR 42000: Variable 'event_scheduler' can't be set to the value of '-1'
|
|
SHOW VARIABLES LIKE 'event_scheduler';
|
|
Variable_name Value
|
|
event_scheduler ON
|
|
SET GLOBAL event_scheduler=2;
|
|
ERROR 42000: Variable 'event_scheduler' can't be set to the value of '2'
|
|
SHOW VARIABLES LIKE 'event_scheduler';
|
|
Variable_name Value
|
|
event_scheduler ON
|
|
SET GLOBAL event_scheduler=5;
|
|
ERROR 42000: Variable 'event_scheduler' can't be set to the value of '5'
|
|
SHOW VARIABLES LIKE 'event_scheduler';
|
|
Variable_name Value
|
|
event_scheduler ON
|
|
CREATE TABLE table_1(a int);
|
|
CREATE TABLE table_2(a int);
|
|
CREATE TABLE table_3(a int);
|
|
CREATE TABLE table_4(a int);
|
|
CREATE TABLE T19170(s1 TIMESTAMP);
|
|
SET GLOBAL event_scheduler=ON;
|
|
CREATE EVENT two_sec ON SCHEDULE EVERY 2 SECOND DO INSERT INTO table_1 VALUES(1);
|
|
CREATE EVENT start_n_end
|
|
ON SCHEDULE EVERY 1 SECOND
|
|
ENDS NOW() + INTERVAL 6 SECOND
|
|
ON COMPLETION PRESERVE
|
|
DO INSERT INTO table_2 VALUES(1);
|
|
CREATE EVENT only_one_time ON SCHEDULE EVERY 2 SECOND ENDS NOW() + INTERVAL 1 SECOND DO INSERT INTO table_3 VALUES(1);
|
|
CREATE EVENT two_time ON SCHEDULE EVERY 1 SECOND ENDS NOW() + INTERVAL 1 SECOND ON COMPLETION PRESERVE DO INSERT INTO table_4 VALUES(1);
|
|
SELECT IF(SUM(a) >= 4, 'OK', 'ERROR') FROM table_1;
|
|
IF(SUM(a) >= 4, 'OK', 'ERROR')
|
|
OK
|
|
SELECT IF(SUM(a) >= 5, 'OK', 'ERROR') FROM table_2;
|
|
IF(SUM(a) >= 5, 'OK', 'ERROR')
|
|
OK
|
|
SELECT IF(SUM(a) > 0, 'OK', 'ERROR') FROM table_3;
|
|
IF(SUM(a) > 0, 'OK', 'ERROR')
|
|
OK
|
|
SELECT IF(SUM(a) > 0, 'OK', 'ERROR') FROM table_4;
|
|
IF(SUM(a) > 0, 'OK', 'ERROR')
|
|
OK
|
|
DROP EVENT two_sec;
|
|
SELECT IF(TIME_TO_SEC(TIMEDIFF(ENDS,STARTS))=6, 'OK', 'ERROR') FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_SCHEMA=DATABASE() AND EVENT_NAME='start_n_end' AND ENDS IS NOT NULL;
|
|
IF(TIME_TO_SEC(TIMEDIFF(ENDS,STARTS))=6, 'OK', 'ERROR')
|
|
OK
|
|
SELECT IF(LAST_EXECUTED-ENDS < 3, 'OK', 'ERROR') FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_SCHEMA=DATABASE() AND EVENT_NAME='start_n_end' AND ENDS IS NOT NULL;
|
|
IF(LAST_EXECUTED-ENDS < 3, 'OK', 'ERROR')
|
|
OK
|
|
DROP EVENT start_n_end;
|
|
"Already dropped because ended. Therefore an error."
|
|
DROP EVENT only_one_time;
|
|
ERROR HY000: Unknown event 'only_one_time'
|
|
"Should be preserved"
|
|
SELECT EVENT_NAME, STATUS FROM INFORMATION_SCHEMA.EVENTS ORDER BY EVENT_NAME;
|
|
EVENT_NAME STATUS
|
|
two_time DISABLED
|
|
DROP EVENT two_time;
|
|
DROP TABLE table_1;
|
|
DROP TABLE table_2;
|
|
DROP TABLE table_3;
|
|
DROP TABLE table_4;
|
|
DROP DATABASE events_test;
|