[MDEV-6619] SHOW PROCESSLIST returns empty result set after KILL QUERY Created: 2014-08-21  Updated: 2024-01-22  Resolved: 2014-09-13

Status: Closed
Project: MariaDB Server
Component/s: Admin statements
Affects Version/s: 5.1.67, 5.2.14, 5.3.12, 5.5.39, 10.0.13
Fix Version/s: 5.5.40, 10.0.14

Type: Bug Priority: Minor
Reporter: Elena Stepanova Assignee: Sergei Golubchik
Resolution: Fixed Votes: 1
Labels: upstream

Issue Links:
Problem/Incident
causes MDEV-33292 main.kill_processlist-6619 occasional... Open

 Description   

--enable_connect_log
 
--connect (con1,localhost,root,,)
--let $con_id = `SELECT CONNECTION_ID()`
 
--echo #
--echo # This one returns the expected result
--echo #
SHOW PROCESSLIST;
 
--connection default
eval KILL QUERY $con_id;
 
--connection con1
--echo #
--echo # The one after KILL QUERY returns an empty result set (WRONG)
--echo #
SHOW PROCESSLIST;
--echo #
--echo # ... and the next one returns the expected result again
--echo #
SHOW PROCESSLIST;

While it is also reproducible on MySQL 5.1-5.6, I'm not filing it upstream, because it's apparently fixed in 5.7 (and hence it has little to no chance to be also fixed in 5.6).



 Comments   
Comment by Sergei Golubchik [ 2014-09-10 ]

The reason for this — KILL QUERY that comes when a connection is idle (is not running any query) will kill the next query. What you see is how a killed SHOW PROCESSLIST looks like. If you'd try a SELECT instead, you'd get

select * from mysql.user;
ERROR 70100: Query execution was interrupted

I'll fix SHOW PROCESSLIST to do the same.

Comment by Sergei Golubchik [ 2014-09-10 ]

Arguably, KILL QUERY should not affect the next query, only the current one. But should be a subject of a separate bug.

Comment by Elena Stepanova [ 2014-09-10 ]

Yes, that's why I filed it as 'Minor' – because the query was not likely to return a meaningful result anyway. The difference is that the error in this situation is annoying, while the empty set is confusing. Confusing is worse.

But for a side note, the behavior with interrupting the next query is not universal. E.g. if we have SHOW MASTER STATUS or SELECT 1, it works. If a table is involved, e.g. SELECT * FROM mysql.user, it doesn't. I don't know the complete criteria for the difference.

Generated at Thu Feb 08 07:13:16 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.