Skip to content

Commit f671001

Browse files
committed
added kill-idle for 9.3 and later.
1 parent 3c5aa34 commit f671001

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
create or replace function kill_idle_transactions (
2+
timelimit INTERVAL DEFAULT '10 minutes',
3+
safe_users TEXT[] DEFAULT '{}')
4+
returns SETOF json
5+
language plpgsql
6+
as
7+
$f$
8+
declare
9+
cancelled JSON;
10+
11+
begin
12+
13+
FOR cancelled IN
14+
WITH terminated AS (
15+
SELECT pg_stat_activity.*, pg_terminate_backend(pid)
16+
FROM pg_stat_activity
17+
WHERE state = 'idle in transaction'
18+
AND (now() - state_change) > timelimit
19+
AND ( usename != ANY(safe_users)
20+
OR safe_users = '{}' )),
21+
termformat AS (
22+
SELECT now() as killtime,
23+
datname, pid, usename, application_name,
24+
client_addr, backend_start, xact_start,
25+
state_change, waiting, "query"
26+
FROM terminated )
27+
SELECT row_to_json(termformat.*)
28+
FROM termformat
29+
LOOP
30+
31+
RETURN NEXT cancelled;
32+
33+
END LOOP;
34+
35+
RETURN;
36+
37+
end; $f$;
38+

0 commit comments

Comments
 (0)