MDEV-11552 Queries executed by event scheduler are written to slow log incorrectly or not written at all
because thd->update_server_status() is used to measure the query time for the slow log (not only to set protocol level flags), it needs to be called also when the server isn't going to send anything to the client.
This commit is contained in:
parent
211cf9321a
commit
e86580c3dd
12
mysql-test/r/events_slowlog.result
Normal file
12
mysql-test/r/events_slowlog.result
Normal file
@ -0,0 +1,12 @@
|
||||
set @event_scheduler_save= @@global.event_scheduler;
|
||||
set @slow_query_log_save= @@global.slow_query_log;
|
||||
set global event_scheduler= on;
|
||||
set global slow_query_log= on;
|
||||
set global long_query_time=0.2;
|
||||
create table t1 (i int);
|
||||
insert into t1 values (0);
|
||||
create event ev on schedule at CURRENT_TIMESTAMP + INTERVAL 1 second do update t1 set i=1+sleep(0.5);
|
||||
drop table t1;
|
||||
set global event_scheduler= @event_scheduler_save;
|
||||
set global slow_query_log= @slow_query_log_save;
|
||||
set global long_query_time= @@session.long_query_time;
|
28
mysql-test/t/events_slowlog.test
Normal file
28
mysql-test/t/events_slowlog.test
Normal file
@ -0,0 +1,28 @@
|
||||
--source include/not_embedded.inc
|
||||
#
|
||||
# MDEV-11552 Queries executed by event scheduler are written to slow log incorrectly or not written at all
|
||||
#
|
||||
set @event_scheduler_save= @@global.event_scheduler;
|
||||
set @slow_query_log_save= @@global.slow_query_log;
|
||||
|
||||
set global event_scheduler= on;
|
||||
set global slow_query_log= on;
|
||||
set global long_query_time=0.2;
|
||||
|
||||
create table t1 (i int);
|
||||
insert into t1 values (0);
|
||||
create event ev on schedule at CURRENT_TIMESTAMP + INTERVAL 1 second do update t1 set i=1+sleep(0.5);
|
||||
|
||||
--let wait_condition= select i from t1 where i > 0
|
||||
--source include/wait_condition.inc
|
||||
|
||||
--let SEARCH_FILE = `SELECT @@slow_query_log_file`
|
||||
--let SEARCH_PATTERN= update t1 set i=1
|
||||
--let SEARCH_RANGE= -1000
|
||||
--source include/search_pattern_in_file.inc
|
||||
|
||||
drop table t1;
|
||||
|
||||
set global event_scheduler= @event_scheduler_save;
|
||||
set global slow_query_log= @slow_query_log_save;
|
||||
set global long_query_time= @@session.long_query_time;
|
@ -3146,18 +3146,18 @@ sp_instr_stmt::execute(THD *thd, uint *nextp)
|
||||
thd->query_length()) <= 0)
|
||||
{
|
||||
res= m_lex_keeper.reset_lex_and_exec_core(thd, nextp, FALSE, this);
|
||||
bool log_slow= !res && thd->enable_slow_log;
|
||||
|
||||
if (thd->stmt_da->is_eof())
|
||||
{
|
||||
/* Finalize server status flags after executing a statement. */
|
||||
/* Finalize server status flags after executing a statement. */
|
||||
if (log_slow || thd->stmt_da->is_eof())
|
||||
thd->update_server_status();
|
||||
|
||||
if (thd->stmt_da->is_eof())
|
||||
thd->protocol->end_statement();
|
||||
}
|
||||
|
||||
query_cache_end_of_result(thd);
|
||||
|
||||
if (!res && unlikely(thd->enable_slow_log))
|
||||
if (log_slow)
|
||||
log_slow_statement(thd);
|
||||
}
|
||||
else
|
||||
|
Loading…
x
Reference in New Issue
Block a user