I am really confused by this, right now I am thinking of doing a "dirty" trick, inspired by this:
http://forge.mysql.com/tools/tool.php?id=106
DELIMITER $$
CREATE PROCEDURE `kill_run_aways` ( IN runtime TINYINT UNSIGNED )
LANGUAGE SQL
NOT DETERMINISTIC
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE ConnectionId INT UNSIGNED;
DECLARE ConnectionCursor CURSOR FOR SELECT ID FROM information_schema.PROCESSLIST
WHERE USER LIKE 'SPECIFIC_USER'
AND (COMMAND IN ('Query','Copying to tmp table'))
AND TIME >= runtime;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN ConnectionCursor;
REPEAT
FETCH ConnectionCursor INTO ConnectionId;
IF NOT done THEN
KILL ConnectionId;
END IF;
UNTIL done END REPEAT;
CLOSE ConnectionCursor;
END$$
DELIMITER ;
SET GLOBAL event_scheduler = ON;
CREATE EVENT IF NOT EXISTS `kill_run_aways`
ON SCHEDULE EVERY 2 SECOND
ON COMPLETION PRESERVE ENABLE
DO CALL kill_run_aways(60)
/* Change schedule and runtime for your needs */;
That is not a nice way to do it, but it might solve the problem right now.