我想做这样的事情,但它不起作用......
CREATE FUNCTION kill(integer) RETURNS integer AS $$
DECLARE
pid ALIAS FOR $2;
BEGIN
-- Do some stuff here...
return kill TERM, pid;
END;
$$ LANGUAGE plpgsql;
PostgreSQL 8.3
升级不是一种选择,对不起...
我想做这样的事情,但它不起作用......
CREATE FUNCTION kill(integer) RETURNS integer AS $$
DECLARE
pid ALIAS FOR $2;
BEGIN
-- Do some stuff here...
return kill TERM, pid;
END;
$$ LANGUAGE plpgsql;
PostgreSQL 8.3
升级不是一种选择,对不起...
你想杀什么?查询还是后端?如果只是一个查询,那么 pg_cancel_backend()存在于 Postgresql 8.3 中。如果您确实需要执行 shell 命令,则需要使用“不受信任”的过程语言之一,例如 plperlu 或 plpythonu 等。请参阅http://www.postgresql.org/docs/8.3/static/plperl-trusted .html了解更多详情。
您不能在 PL/PgSQL 中执行此操作,但您可以在大多数其他 PL 中执行此操作:
CREATE LANGUAGE plperlu;
CREATE OR REPLACE FUNCTION signal(signum integer, pid integer) RETURNS integer AS $$
return kill $_[0], $_[1];
$$ LANGUAGE plperlu;
如果您愿意,也可以使用 PL/Python。甚至是PL/TCL。
或者,编写一个简单的 C 扩展以将kill
函数公开给 SQL。为此目的调整文档中的示例将非常简单。