aboutsummaryrefslogtreecommitdiff
path: root/sql/mywatch_kill.sql
diff options
context:
space:
mode:
Diffstat (limited to 'sql/mywatch_kill.sql')
-rw-r--r--sql/mywatch_kill.sql26
1 files changed, 26 insertions, 0 deletions
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 ;
+