Converting pqsignal to void return
Paul Ramsey <pramsey@cleverelephant.ca>
From: Paul Ramsey <pramsey@cleverelephant.ca>
To: PostgreSQL Hackers <pgsql-hackers@postgresql.org>
Cc: Nathan Bossart <nathandbossart@gmail.com>
Date: 2025-01-22T15:57:52Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Convert libpgport's pqsignal() to a void function.
- d4a43b283751 18.0 cited
-
Check that MyProcPid == getpid() in backend signal handlers.
- 3b00fdba9f20 17.0 cited
Nathan, I just ran across this change when a bunch of CI’s I run barfed. https://github.com/postgres/postgres/commit/d4a43b283751b23d32bbfa1ecc2cad2d16e3dde9 The problem we are having in extension land is that we often run functions in external libraries that take a long time to return, and we would like to ensure that PgSQL users can cancel their queries, even when control has passed into those functions. The way we have done it, historically, has been to take the return value of pqsignal(SIGINT, extension_signint_handler) and remember it, and then, inside extension_signint_handler, call the pgsql handler once we have done our own business. https://github.com/pramsey/pgsql-http/blob/master/http.c#L345 It is possible we have been Doing It Wrong all this time, and would love some pointers on the right way to do this. Alternatively, if we have a valid use case, it would be nice to have the return value from pqsignal() back. Thanks! Paul