mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 05:22:25 +01:00
ca39997c0e
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.
96 lines
3.7 KiB
Text
96 lines
3.7 KiB
Text
CREATE DATABASE IF NOT EXISTS events_test;
|
|
USE events_test;
|
|
"We use procedure here because its statements won't be logged into the general log"
|
|
"If we had used normal select that are logged in different ways depending on whether"
|
|
"the test suite is run in normal mode or with --ps-protocol"
|
|
CREATE procedure select_general_log()
|
|
BEGIN
|
|
SELECT user_host, argument FROM mysql.general_log WHERE argument LIKE '%alabala%';
|
|
END|
|
|
"Check General Query Log"
|
|
CALL select_general_log();
|
|
user_host argument
|
|
USER_HOST CREATE procedure select_general_log()
|
|
BEGIN
|
|
SELECT user_host, argument FROM mysql.general_log WHERE argument LIKE '%alabala%';
|
|
END
|
|
SET GLOBAL event_scheduler=on;
|
|
TRUNCATE mysql.general_log;
|
|
CREATE EVENT log_general ON SCHEDULE EVERY 1 MINUTE DO SELECT 'alabala', SLEEP(1) FROM DUAL;
|
|
"Wait the scheduler to start"
|
|
"Should see 2 rows - the 'SELECT' is in the middle. The other two are selects from general_log"
|
|
CALL select_general_log();
|
|
user_host argument
|
|
USER_HOST CREATE EVENT log_general ON SCHEDULE EVERY 1 MINUTE DO SELECT 'alabala', SLEEP(1) FROM DUAL
|
|
USER_HOST SELECT 'alabala', SLEEP(1) FROM DUAL
|
|
DROP PROCEDURE select_general_log;
|
|
DROP EVENT log_general;
|
|
SET GLOBAL event_scheduler=off;
|
|
"Check slow query log"
|
|
"Save the values"
|
|
SET @old_global_long_query_time:=(select get_value());
|
|
SET @old_session_long_query_time:=@@long_query_time;
|
|
SHOW VARIABLES LIKE 'log_slow_queries';
|
|
Variable_name Value
|
|
log_slow_queries ON
|
|
DROP FUNCTION get_value;
|
|
"Make it quite long"
|
|
SET SESSION long_query_time=300;
|
|
TRUNCATE mysql.slow_log;
|
|
SELECT user_host, query_time, db, sql_text FROM mysql.slow_log;
|
|
user_host query_time db sql_text
|
|
"Set new values"
|
|
SET GLOBAL long_query_time=4;
|
|
SET SESSION long_query_time=1;
|
|
"Check that logging is working"
|
|
SELECT SLEEP(2);
|
|
SLEEP(2)
|
|
0
|
|
SELECT user_host, query_time, db, sql_text FROM mysql.slow_log;
|
|
user_host query_time db sql_text
|
|
USER_HOST SLEEPVAL events_test SELECT SLEEP(2)
|
|
SET SESSION long_query_time=300;
|
|
"Make it quite long"
|
|
TRUNCATE mysql.slow_log;
|
|
CREATE TABLE slow_event_test (slo_val tinyint, val tinyint);
|
|
SET SESSION long_query_time=1;
|
|
"This won't go to the slow log"
|
|
SELECT * FROM slow_event_test;
|
|
slo_val val
|
|
SET SESSION long_query_time=1;
|
|
SET GLOBAL event_scheduler=on;
|
|
CREATE EVENT long_event ON SCHEDULE EVERY 1 MINUTE DO INSERT INTO slow_event_test SELECT @@long_query_time, SLEEP(1.5);
|
|
"Sleep some more time than the actual event run will take"
|
|
SHOW VARIABLES LIKE 'event_scheduler';
|
|
Variable_name Value
|
|
event_scheduler ON
|
|
"Check our table. Should see 1 row"
|
|
SELECT * FROM slow_event_test;
|
|
slo_val val
|
|
4 0
|
|
"Check slow log. Should not see anything because 1.5 is under the threshold of 300 for GLOBAL, though over SESSION which is 2"
|
|
SELECT user_host, query_time, db, sql_text FROM mysql.slow_log;
|
|
user_host query_time db sql_text
|
|
"This should go to the slow log"
|
|
DROP EVENT long_event;
|
|
SET SESSION long_query_time=10;
|
|
SET GLOBAL long_query_time=1;
|
|
CREATE EVENT long_event2 ON SCHEDULE EVERY 1 MINUTE DO INSERT INTO slow_event_test SELECT @@long_query_time, SLEEP(2);
|
|
"Sleep some more time than the actual event run will take"
|
|
"Check our table. Should see 2 rows"
|
|
SELECT * FROM slow_event_test;
|
|
slo_val val
|
|
4 0
|
|
1 0
|
|
"Check slow log. Should see 1 row because 4 is over the threshold of 3 for GLOBAL, though under SESSION which is 10"
|
|
SELECT user_host, query_time, db, sql_text FROM mysql.slow_log;
|
|
user_host query_time db sql_text
|
|
USER_HOST SLEEPVAL events_test INSERT INTO slow_event_test SELECT @@long_query_time, SLEEP(2)
|
|
DROP EVENT long_event2;
|
|
"Make it quite long"
|
|
SET SESSION long_query_time=300;
|
|
TRUNCATE mysql.slow_log;
|
|
DROP TABLE slow_event_test;
|
|
SET GLOBAL long_query_time =@old_global_long_query_time;
|
|
SET SESSION long_query_time =@old_session_long_query_time;
|
|
DROP DATABASE events_test;
|