From a1617ebaeb256b3d359cc9fe389b8001235100c2 Mon Sep 17 00:00:00 2001
From: Igor Pashev <pashev.igor@gmail.com>
Date: Mon, 27 Jun 2016 03:51:58 +0800
Subject: Allow killing queries

---
 sql/mywatch_kill.sql | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)
 create mode 100644 sql/mywatch_kill.sql

(limited to 'sql/mywatch_kill.sql')

diff --git a/sql/mywatch_kill.sql b/sql/mywatch_kill.sql
new file mode 100644
index 0000000..0701467
--- /dev/null
+++ b/sql/mywatch_kill.sql
@@ -0,0 +1,26 @@
+DELIMITER $$
+
+DROP PROCEDURE IF EXISTS mysql.mywatch_kill $$
+CREATE PROCEDURE mysql.mywatch_kill (IN i BIGINT)
+  COMMENT 'Kill a query found in information_schema.processlist by ID'
+-- It seems reasonable that this procedure kills the connection, not just
+-- the query, because of the `DELETE` HTTP method on the process id. If the
+-- connection is not killed, the process id remains.
+BEGIN
+
+  DECLARE n BIGINT;
+
+  SELECT id INTO n
+    FROM information_schema.processlist
+    WHERE info IS NOT NULL
+    AND host <> '' -- means non-system user
+    AND id = i;
+
+  IF (n IS NOT NULL) THEN
+    KILL n; -- Use `CALL mysql.rds_kill(n);` on RDS
+  END IF;
+
+END $$
+
+DELIMITER ;
+
-- 
cgit v1.2.3

