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;