diff options
Diffstat (limited to 'mysql-test/main/events_logs_tests.test')
-rw-r--r-- | mysql-test/main/events_logs_tests.test | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/mysql-test/main/events_logs_tests.test b/mysql-test/main/events_logs_tests.test new file mode 100644 index 00000000..f7445352 --- /dev/null +++ b/mysql-test/main/events_logs_tests.test @@ -0,0 +1,93 @@ +# Can't test with embedded server that doesn't support grants +-- source include/not_embedded.inc +-- source include/no_view_protocol.inc + +set @save_long_query_time=@@long_query_time; +--disable_warnings +drop database if exists events_test; +--enable_warnings +create database if not exists events_test; +use events_test; +--echo +--echo We use procedure here because its statements won't be +--echo logged into the general log. If we had used normal select +--echo that are logged in different ways depending on whether the +--echo test suite is run in normal mode or with --ps-protocol +--echo +delimiter |; +create procedure select_general_log() +begin + select user_host, argument from mysql.general_log + where argument like '%events_logs_test%' AND + (command_type = 'Query' OR command_type = 'Execute'); +end| +delimiter ;| +--echo +--echo Check that general query log works, but sub-statements +--echo of the stored procedure do not leave traces in it. +--echo +truncate mysql.general_log; +# Logging format in ps protocol is slightly different +--disable_ps_protocol +select 'events_logs_tests' as outside_event; +--enable_ps_protocol +--replace_column 1 USER_HOST +call select_general_log(); +--echo +--echo Check that unlike sub-statements of stored procedures, +--echo sub-statements of events are present in the general log. +--echo +set global event_scheduler=on; +truncate mysql.general_log; +create event ev_log_general on schedule at now() on completion not preserve do select 'events_logs_test' as inside_event; +--let $wait_condition=select count(*)=0 from information_schema.events where event_name='ev_log_general' +--source include/wait_condition.inc +--replace_column 1 USER_HOST +call select_general_log(); + +--echo +--echo Check slow query log +--echo +--echo Ensure that slow logging is on +show variables like 'slow_query_log'; +--echo +--echo Demonstrate that session value has no effect +--echo +set @@session.long_query_time=1; +set @@global.long_query_time=300; +truncate mysql.slow_log; +create event ev_log_general on schedule at now() on completion not preserve + do select 'events_logs_test' as inside_event, sleep(1.5); +--let $wait_condition=select count(*)=0 from information_schema.events where event_name='ev_log_general' +--source include/wait_condition.inc +--echo +--echo Nothing should be logged +--echo +--replace_column 1 USER_HOST +select user_host, db, sql_text from mysql.slow_log + where sql_text like 'select \'events_logs_test\'%'; +set @@global.long_query_time=1; +truncate mysql.slow_log; +create event ev_log_general on schedule at now() on completion not preserve + do select 'events_logs_test' as inside_event, sleep(1.5); +--let $wait_condition=select count(*)=0 from information_schema.events where event_name='ev_log_general' +--source include/wait_condition.inc +--echo +--echo Event sub-statement should be logged. +--echo +--replace_column 1 USER_HOST +select user_host, db, sql_text from mysql.slow_log + where sql_text like 'select \'events_logs_test\'%'; + +drop database events_test; +set global event_scheduler=off; +set @@global.long_query_time=@save_long_query_time; +set @@session.long_query_time=@save_long_query_time; + +# +# Safety +# +let $wait_condition= + select count(*) = 0 from information_schema.processlist + where db='events_test' and command = 'Connect' and user=current_user(); +--source include/wait_condition.inc |