François Beausoleil <francois@teksol.info> wrote:
> What is the difference between both?
> I had some processes stuck in IDLE in transaction after a machine
> died (through pgbouncer), and cancel did not close the
> connections, while terminate did kill the transactions.
> The docs at
> http://www.postgresql.org/docs/9.1/static/functions-admin.html#FUNCTIONS-ADMIN-SIGNAL-TABLE
> [...]
According to the docs you cite:
pg_cancel_backend(): Cancel a backend's current query
pg_terminate_backend(): Terminate a backend
A connection which is idle or idle in transaction does not have a
current query to cancel, but it has a backend process which can be
terminated.
--
Kevin Grittner
EDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company