blob: 37964e3b04c3ebb6039b67b02d2859eef671334a [file] [log] [blame]
-- start_ignore
CREATE LANGUAGE plpython3u;
CREATE
-- end_ignore
CREATE OR REPLACE FUNCTION pybusyloop() RETURNS double precision AS $$ import math while True: a = 1 return 1 $$ LANGUAGE plpython3u;
CREATE
CREATE OR REPLACE FUNCTION pysleep() RETURNS double precision AS $$ import time time.sleep(100) return 1 $$ LANGUAGE plpython3u;
CREATE
CREATE OR REPLACE FUNCTION pyspisleep() RETURNS double precision AS $$ # container: plc_python_shared rv = plpy.execute("select pg_sleep(100)") return 1 $$ LANGUAGE plpython3u;
CREATE
CREATE OR REPLACE FUNCTION pynestsleep() RETURNS double precision AS $$ # container: plc_python_shared rv = plpy.execute("select pyspisleep()") return 1 $$ LANGUAGE plpython3u;
CREATE
CREATE OR REPLACE FUNCTION pynestsleep2() RETURNS double precision AS $$ # container: plc_python_shared rv = plpy.execute("select pysleep()") return 1 $$ LANGUAGE plpython3u;
CREATE
CREATE TABLE a(i int);
CREATE
insert into a values(1),(10),(20),(100);
INSERT 4
1&: select pybusyloop(); <waiting ...>
2&: select pybusyloop() from a; <waiting ...>
3&: select pysleep(); <waiting ...>
4&: select pysleep() from a; <waiting ...>
5&: select pyspisleep(); <waiting ...>
6&: select pynestsleep(); <waiting ...>
7&: select pynestsleep2(); <waiting ...>
SELECT pg_cancel_backend(pid, 'test pg_cancel_backend') FROM pg_stat_activity WHERE query LIKE 'select pybusyloop()%' ORDER BY pid LIMIT 2;
pg_cancel_backend
-------------------
t
t
(2 rows)
SELECT pg_cancel_backend(pid, 'test pg_cancel_backend') FROM pg_stat_activity WHERE query LIKE 'select pysleep()%' ORDER BY pid LIMIT 2;
pg_cancel_backend
-------------------
t
t
(2 rows)
SELECT pg_cancel_backend(pid, 'test pg_cancel_backend') FROM pg_stat_activity WHERE query LIKE 'select pyspisleep()%' ORDER BY pid LIMIT 1;
pg_cancel_backend
-------------------
t
(1 row)
SELECT pg_cancel_backend(pid, 'test pg_cancel_backend') FROM pg_stat_activity WHERE query LIKE 'select pynestsleep()%' ORDER BY pid LIMIT 1;
pg_cancel_backend
-------------------
t
(1 row)
SELECT pg_cancel_backend(pid, 'test pg_cancel_backend') FROM pg_stat_activity WHERE query LIKE 'select pynestsleep2()%' ORDER BY pid LIMIT 1;
pg_cancel_backend
-------------------
t
(1 row)
-- start_ignore
-- start_ignore
-- start_ignore
-- start_ignore
1<: <... completed>
ERROR: canceling statement due to user request: "test pg_cancel_backend"
CONTEXT: PL/Python function "pybusyloop"
1q: ... <quitting>
2<: <... completed>
ERROR: canceling statement due to user request: "test pg_cancel_backend"
2q: ... <quitting>
3<: <... completed>
ERROR: canceling statement due to user request: "test pg_cancel_backend"
CONTEXT: PL/Python function "pysleep"
3q: ... <quitting>
4<: <... completed>
ERROR: canceling statement due to user request: "test pg_cancel_backend"
4q: ... <quitting>
5<: <... completed>
ERROR: spiexceptions.QueryCanceled: canceling statement due to user request: "test pg_cancel_backend"
CONTEXT: Traceback (most recent call last):
PL/Python function "pyspisleep", line 3, in <module>
rv = plpy.execute("select pg_sleep(100)")
PL/Python function "pyspisleep"
5q: ... <quitting>
6<: <... completed>
ERROR: spiexceptions.QueryCanceled: spiexceptions.QueryCanceled: canceling statement due to user request: "test pg_cancel_backend"
CONTEXT: Traceback (most recent call last):
PL/Python function "pynestsleep", line 3, in <module>
rv = plpy.execute("select pyspisleep()")
PL/Python function "pynestsleep"
6q: ... <quitting>
7<: <... completed>
ERROR: spiexceptions.QueryCanceled: canceling statement due to user request: "test pg_cancel_backend"
CONTEXT: Traceback (most recent call last):
PL/Python function "pynestsleep2", line 3, in <module>
rv = plpy.execute("select pysleep()")
PL/Python function "pynestsleep2"
7q: ... <quitting>
-- end_ignore