Add BackendXidGetPid().
This commit is contained in:
parent
f57e3f4cf3
commit
bc3991c185
@ -23,7 +23,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/storage/ipc/procarray.c,v 1.4 2005/07/31 17:19:18 tgl Exp $
|
* $PostgreSQL: pgsql/src/backend/storage/ipc/procarray.c,v 1.5 2005/08/20 01:26:36 ishii Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -685,6 +685,44 @@ BackendPidGetProc(int pid)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* BackendXidGetPid -- get a backend's pid given its XID
|
||||||
|
*
|
||||||
|
* Returns 0 if not found or it's a prepared transaction. Note that
|
||||||
|
* it is up to the caller to be sure that the question remains
|
||||||
|
* meaningful for long enough for the answer to be used ...
|
||||||
|
*
|
||||||
|
* Only main transaction Ids are considered. This function is mainly
|
||||||
|
* useful for determining what backend owns a lock.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
BackendXidGetPid(TransactionId xid)
|
||||||
|
{
|
||||||
|
int result = 0;
|
||||||
|
ProcArrayStruct *arrayP = procArray;
|
||||||
|
int index;
|
||||||
|
|
||||||
|
if (xid == InvalidTransactionId) /* never match invalid xid */
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
LWLockAcquire(ProcArrayLock, LW_SHARED);
|
||||||
|
|
||||||
|
for (index = 0; index < arrayP->numProcs; index++)
|
||||||
|
{
|
||||||
|
PGPROC *proc = arrayP->procs[index];
|
||||||
|
|
||||||
|
if (proc->xid == xid)
|
||||||
|
{
|
||||||
|
result = proc->pid;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
LWLockRelease(ProcArrayLock);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* IsBackendPid -- is a given pid a running backend
|
* IsBackendPid -- is a given pid a running backend
|
||||||
*/
|
*/
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $PostgreSQL: pgsql/src/include/storage/procarray.h,v 1.3 2005/07/31 17:19:22 tgl Exp $
|
* $PostgreSQL: pgsql/src/include/storage/procarray.h,v 1.4 2005/08/20 01:26:29 ishii Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -27,6 +27,7 @@ extern bool TransactionIdIsActive(TransactionId xid);
|
|||||||
extern TransactionId GetOldestXmin(bool allDbs);
|
extern TransactionId GetOldestXmin(bool allDbs);
|
||||||
|
|
||||||
extern PGPROC *BackendPidGetProc(int pid);
|
extern PGPROC *BackendPidGetProc(int pid);
|
||||||
|
extern int BackendXidGetPid(TransactionId xid);
|
||||||
extern bool IsBackendPid(int pid);
|
extern bool IsBackendPid(int pid);
|
||||||
extern bool DatabaseHasActiveBackends(Oid databaseId, bool ignoreMyself);
|
extern bool DatabaseHasActiveBackends(Oid databaseId, bool ignoreMyself);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user