91 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			91 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								# Can't test with embedded server that doesn't support grants
							 | 
						||
| 
								 | 
							
								-- source include/not_embedded.inc
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--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%';
							 | 
						||
| 
								 | 
							
								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 'log_slow_queries';
							 | 
						||
| 
								 | 
							
								--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=default;
							 | 
						||
| 
								 | 
							
								set @@session.long_query_time=default;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# 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
							 |