A postgres client is running a possibly long-running query. The client receives a SIGTERM. Ideally, I’d like the client to trap the SIGTERM, clean up its query by sending a pg_cancel_backend(pid) and then quit.
This would seem to be a common concern with a client-server database architecture, but I can’t find any solutions. Instead, the query will continue until completion, consuming unnecessary resources.
How can the client determine with certainty the PID of its backend query? (I don’t mean interactively view the backend queries and choosing the one that appears to match the query that was issued.) For example, are PIDs associated with persistent database connections?
How does this work when using psql when ctrl-C is pressed?
You can use
pg_backend_pid()to getPIDfor current connection.Details here.