FWIW, you might want to put some safeguards in there so that you don't try to inadvertently kill the backend that's running that function... unfortunately I don't think there's a built-in function to tell you the PID of the backend you're connected to; if you're connecting via TCP you could use inet_client_addr() and inet_client_port(), but that won't work if you're using the socket to connect.

On Apr 5, 2007, at 6:23 AM, Stuart Bishop wrote:

Mark Shuttleworth wrote:
Tom Lane wrote:
(1) something (still not sure what --- Martin and Mark, I'd really like
to know) was issuing random SIGTERMs to various postgres processes
including autovacuum.


This may be a misfeature in our test harness - I'll ask Stuart Bishop to
comment.

After a test is run, the test harness kills any outstanding connections so we can drop the test database. Without this, a failing test could leave open
connections dangling causing the drop database to block.

CREATE OR REPLACE FUNCTION _killall_backends(text)
RETURNS Boolean AS $$
    import os
    from signal import SIGTERM

    plan = plpy.prepare(
"SELECT procpid FROM pg_stat_activity WHERE datname=$1", ['text']
        )
    success = True
    for row in plpy.execute(plan, args):
        try:
            plpy.info("Killing %d" % row['procpid'])
            os.kill(row['procpid'], SIGTERM)
        except OSError:
            success = False

    return success
$$ LANGUAGE plpythonu;

--
Stuart Bishop <[EMAIL PROTECTED]> http:// www.canonical.com/
Canonical Ltd.                                http://www.ubuntu.com/


--
Jim Nasby                                            [EMAIL PROTECTED]
EnterpriseDB      http://enterprisedb.com      512.569.9461 (cell)



---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
      subscribe-nomail command to [EMAIL PROTECTED] so that your
      message can get through to the mailing list cleanly

Reply via email to