pg_signal_backend_asymmetry.diff
application/octet-stream
Filename: pg_signal_backend_asymmetry.diff
Type: application/octet-stream
Part: 0
Message:
pg_signal_backend() asymmetry
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: unified
| File | + | − |
|---|---|---|
| src/backend/utils/adt/misc.c | 0 | 0 |
diff --git a/src/backend/utils/adt/misc.c b/src/backend/utils/adt/misc.c
new file mode 100644
index f3c7860..d6e2623
*** a/src/backend/utils/adt/misc.c
--- b/src/backend/utils/adt/misc.c
*************** current_query(PG_FUNCTION_ARGS)
*** 88,94 ****
static int
pg_signal_backend(int pid, int sig)
{
! PGPROC *proc;
if (!superuser())
{
--- 88,105 ----
static int
pg_signal_backend(int pid, int sig)
{
! PGPROC *proc = BackendPidGetProc(pid);
!
! if (proc == NULL)
! {
! /*
! * This is just a warning so a loop-through-resultset will not abort
! * if one backend terminated on its own during the run
! */
! ereport(WARNING,
! (errmsg("PID %d is not a PostgreSQL server process", pid)));
! return SIGNAL_BACKEND_ERROR;
! }
if (!superuser())
{
*************** pg_signal_backend(int pid, int sig)
*** 103,124 ****
* of this mechanism involve some request for ending the process
* anyway, that it might end on its own first is not a problem.
*/
! proc = BackendPidGetProc(pid);
!
! if (proc == NULL || proc->roleId != GetUserId())
return SIGNAL_BACKEND_NOPERMISSION;
}
- if (!IsBackendPid(pid))
- {
- /*
- * This is just a warning so a loop-through-resultset will not abort
- * if one backend terminated on it's own during the run
- */
- ereport(WARNING,
- (errmsg("PID %d is not a PostgreSQL server process", pid)));
- return SIGNAL_BACKEND_ERROR;
- }
/*
* Can the process we just validated above end, followed by the pid being
--- 114,123 ----
* of this mechanism involve some request for ending the process
* anyway, that it might end on its own first is not a problem.
*/
! if (proc->roleId != GetUserId())
return SIGNAL_BACKEND_NOPERMISSION;
}
/*
* Can the process we just validated above end, followed by the pid being