1# Can't test with embedded server that doesn't support grants
2-- source include/not_embedded.inc
3
4--disable_warnings
5drop database if exists events_test;
6--enable_warnings
7create database if not exists events_test;
8use events_test;
9--echo
10--echo We use procedure here because its statements won't be
11--echo logged into the general log. If we had used normal select
12--echo that are logged in different ways depending on whether the
13--echo test suite is run in normal mode or with --ps-protocol
14--echo
15delimiter |;
16create procedure select_general_log()
17begin
18  select user_host, argument from mysql.general_log
19  where argument like '%events_logs_test%';
20end|
21delimiter ;|
22--echo
23--echo Check that general query log works, but sub-statements
24--echo of the stored procedure do not leave traces in it.
25--echo
26truncate mysql.general_log;
27# Logging format in ps protocol is slightly different
28--disable_ps_protocol
29select 'events_logs_tests' as outside_event;
30--enable_ps_protocol
31--replace_column 1 USER_HOST
32call select_general_log();
33--echo
34--echo Check that unlike sub-statements of stored procedures,
35--echo sub-statements of events are present in the general log.
36--echo
37set global event_scheduler=on;
38truncate mysql.general_log;
39create event ev_log_general on schedule at now() on completion not preserve do select 'events_logs_test' as inside_event;
40--let $wait_condition=select count(*)=0 from information_schema.events where event_name='ev_log_general'
41--source include/wait_condition.inc
42--replace_column 1 USER_HOST
43call select_general_log();
44
45--echo
46--echo Check slow query log
47--echo
48--echo Ensure that slow logging is on
49show variables like 'slow_query_log';
50--echo
51--echo Demonstrate that session value has no effect
52--echo
53set @@session.long_query_time=1;
54set @@global.long_query_time=300;
55truncate mysql.slow_log;
56create event ev_log_general on schedule at now() on completion not preserve
57  do select 'events_logs_test' as inside_event, sleep(1.5);
58--let $wait_condition=select count(*)=0 from information_schema.events where event_name='ev_log_general'
59--source include/wait_condition.inc
60--echo
61--echo Nothing should be logged
62--echo
63--replace_column 1 USER_HOST
64select user_host, db, sql_text from mysql.slow_log
65  where sql_text like 'select \'events_logs_test\'%';
66set @@global.long_query_time=1;
67truncate mysql.slow_log;
68create event ev_log_general on schedule at now() on completion not preserve
69  do select 'events_logs_test' as inside_event, sleep(1.5);
70--let $wait_condition=select count(*)=0 from information_schema.events where event_name='ev_log_general'
71--source include/wait_condition.inc
72--echo
73--echo Event sub-statement should be logged.
74--echo
75--replace_column 1 USER_HOST
76select user_host, db, sql_text from mysql.slow_log
77  where sql_text like 'select \'events_logs_test\'%';
78
79drop database events_test;
80set global event_scheduler=off;
81set @@global.long_query_time=default;
82set @@session.long_query_time=default;
83
84#
85# Safety
86#
87let $wait_condition=
88  select count(*) = 0 from information_schema.processlist
89  where db='events_test' and command = 'Connect' and user=current_user();
90--source include/wait_condition.inc
91