diff --git a/mysql-test/r/processlist.result b/mysql-test/r/processlist.result index c8fb4ed6bd5..fc03f920533 100644 --- a/mysql-test/r/processlist.result +++ b/mysql-test/r/processlist.result @@ -7,3 +7,9 @@ SELECT INFO,TIME,TIME_MS FROM INFORMATION_SCHEMA.PROCESSLIST WHERE INFO IS NULL; SET DEBUG_SYNC = 'now SIGNAL fill_schema_proceed'; INFO TIME TIME_MS NULL 0 0.000 +select sleep(5); +sleep(5) +0 +select command, time < 5 from information_schema.processlist where id != connection_id(); +command time < 5 +Sleep 1 diff --git a/mysql-test/t/processlist.test b/mysql-test/t/processlist.test index eff1daff3aa..c7b775cf992 100644 --- a/mysql-test/t/processlist.test +++ b/mysql-test/t/processlist.test @@ -18,5 +18,18 @@ SET DEBUG_SYNC = 'now SIGNAL fill_schema_proceed'; connection con1; reap; +connection default; + +# +# MDEV-4683 query start_time not reset when going to sleep +# + +connection con1; +select sleep(5); #run a query that will take some time +connection default; + +# verify that the time in COM_SLEEP doesn't include the query run time +select command, time < 5 from information_schema.processlist where id != connection_id(); + disconnect con1; diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 57969b60858..87556a8a0ad 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -1461,6 +1461,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd, thd_proc_info(thd, "cleaning up"); thd->reset_query(); thd->command=COM_SLEEP; + thd->set_time(); dec_thread_running(); thd_proc_info(thd, 0); thd->packet.shrink(thd->variables.net_buffer_length); // Reclaim some memory