| -- 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 |
| |