When terminating, or cancelling, a backend it’s currently not possible to let the signalled session know *why* it was dropped. This has nagged me in the past and now it happened to come up again, so I took a stab at this. The attached patch implements the ability to pass an optional text message to the signalled session which is included in the error message:
SELECT pg_terminate_backend(<pid> [, message]); SELECT pg_cancel_backend(<pid> [, message]); Right now the message is simply appended on the error message, not sure if errdetail or errhint would be better? Calling: select pg_terminate_backend(<pid>, 'server rebooting'); ..leads to: FATAL: terminating connection due to administrator command: "server rebooting" Omitting the message invokes the command just like today. The message is stored in a new shmem area which is checked when the session is aborted. To keep things simple a small buffer is kept per backend for the message. If deemed too costly, keeping a central buffer from which slabs are allocated can be done (but seemed rather complicated for little gain compared to the quite moderate memory spend.) cheers ./daniel
terminate_msg_v2.patch
Description: Binary data
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers