77 if (relation->
rd_rel->relisshared)
847 cxt =
gettext_noop(
"while updating tuple (%u,%u) in relation \"%s\"");
850 cxt =
gettext_noop(
"while deleting tuple (%u,%u) in relation \"%s\"");
853 cxt =
gettext_noop(
"while locking tuple (%u,%u) in relation \"%s\"");
856 cxt =
gettext_noop(
"while locking updated version (%u,%u) of tuple in relation \"%s\"");
859 cxt =
gettext_noop(
"while inserting index tuple (%u,%u) in relation \"%s\"");
862 cxt =
gettext_noop(
"while checking uniqueness of tuple (%u,%u) in relation \"%s\"");
865 cxt =
gettext_noop(
"while rechecking updated tuple (%u,%u) in relation \"%s\"");
868 cxt =
gettext_noop(
"while checking exclusion constraint on tuple (%u,%u) in relation \"%s\"");
908 foreach(lc, locktags)
953 const int index[] = {
1238 _(
"relation %u of database %u"),
1244 _(
"extension of relation %u of database %u"),
1250 _(
"pg_database.datfrozenxid of database %u"),
1255 _(
"page %u of relation %u of database %u"),
1262 _(
"tuple (%u,%u) of relation %u of database %u"),
1270 _(
"transaction %u"),
1275 _(
"virtual transaction %d/%u"),
1281 _(
"speculative token %u of transaction %u"),
1287 _(
"object %u of class %u of database %u"),
1295 _(
"user lock [%u,%u,%u]"),
1302 _(
"advisory lock [%u,%u,%u,%u]"),
1310 _(
"remote transaction %u of subscription %u of database %u"),
1317 _(
"unrecognized locktag type %d"),
void pgstat_progress_update_param(int index, int64 val)
void pgstat_progress_update_multi_param(int nparam, const int *index, const int64 *val)
static Datum values[MAXATTR]
#define Assert(condition)
#define OidIsValid(objectId)
bool IsSharedRelation(Oid relationId)
static void PGresult * res
ErrorContextCallback * error_context_stack
void AcceptInvalidationMessages(void)
static OffsetNumber ItemPointerGetOffsetNumber(const ItemPointerData *pointer)
static BlockNumber ItemPointerGetBlockNumber(const ItemPointerData *pointer)
static bool ItemPointerIsValid(const ItemPointerData *pointer)
List * lappend(List *list, void *datum)
void list_free(List *list)
void list_free_deep(List *list)
bool ConditionalLockRelationOid(Oid relid, LOCKMODE lockmode)
void XactLockTableWait(TransactionId xid, Relation rel, ItemPointer ctid, XLTW_Oper oper)
void LockSharedObject(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode)
bool ConditionalLockPage(Relation relation, BlockNumber blkno, LOCKMODE lockmode)
void UnlockRelationOid(Oid relid, LOCKMODE lockmode)
void LockDatabaseObject(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode)
void UnlockRelation(Relation relation, LOCKMODE lockmode)
void DescribeLockTag(StringInfo buf, const LOCKTAG *tag)
void SpeculativeInsertionWait(TransactionId xid, uint32 token)
bool ConditionalLockSharedObject(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode)
void UnlockSharedObjectForSession(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode)
void WaitForLockersMultiple(List *locktags, LOCKMODE lockmode, bool progress)
void LockRelationIdForSession(LockRelId *relid, LOCKMODE lockmode)
void RelationInitLockInfo(Relation relation)
bool ConditionalLockTuple(Relation relation, ItemPointer tid, LOCKMODE lockmode)
void LockRelationOid(Oid relid, LOCKMODE lockmode)
void LockRelation(Relation relation, LOCKMODE lockmode)
void UnlockRelationId(LockRelId *relid, LOCKMODE lockmode)
void WaitForLockers(LOCKTAG heaplocktag, LOCKMODE lockmode, bool progress)
void XactLockTableDelete(TransactionId xid)
void LockTuple(Relation relation, ItemPointer tid, LOCKMODE lockmode)
void XactLockTableInsert(TransactionId xid)
uint32 SpeculativeInsertionLockAcquire(TransactionId xid)
void LockRelationForExtension(Relation relation, LOCKMODE lockmode)
bool ConditionalXactLockTableWait(TransactionId xid)
bool CheckRelationLockedByMe(Relation relation, LOCKMODE lockmode, bool orstronger)
void UnlockApplyTransactionForSession(Oid suboid, TransactionId xid, uint16 objid, LOCKMODE lockmode)
void SpeculativeInsertionLockRelease(TransactionId xid)
static void XactLockTableWaitErrorCb(void *arg)
void LockPage(Relation relation, BlockNumber blkno, LOCKMODE lockmode)
bool ConditionalLockRelationForExtension(Relation relation, LOCKMODE lockmode)
bool CheckRelationOidLockedByMe(Oid relid, LOCKMODE lockmode, bool orstronger)
static void SetLocktagRelationOid(LOCKTAG *tag, Oid relid)
void UnlockPage(Relation relation, BlockNumber blkno, LOCKMODE lockmode)
void UnlockRelationIdForSession(LockRelId *relid, LOCKMODE lockmode)
bool ConditionalLockRelation(Relation relation, LOCKMODE lockmode)
static uint32 speculativeInsertionToken
bool ConditionalLockDatabaseObject(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode)
void LockDatabaseFrozenIds(LOCKMODE lockmode)
struct XactLockTableWaitInfo XactLockTableWaitInfo
void UnlockRelationForExtension(Relation relation, LOCKMODE lockmode)
const char * GetLockNameFromTagType(uint16 locktag_type)
void UnlockSharedObject(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode)
void LockApplyTransactionForSession(Oid suboid, TransactionId xid, uint16 objid, LOCKMODE lockmode)
void LockSharedObjectForSession(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode)
void LockRelationId(LockRelId *relid, LOCKMODE lockmode)
bool LockHasWaitersRelation(Relation relation, LOCKMODE lockmode)
void UnlockDatabaseObject(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode)
int RelationExtensionLockWaiterCount(Relation relation)
void UnlockTuple(Relation relation, ItemPointer tid, LOCKMODE lockmode)
@ XLTW_RecheckExclusionConstr
LockAcquireResult LockAcquire(const LOCKTAG *locktag, LOCKMODE lockmode, bool sessionLock, bool dontWait)
LockAcquireResult LockAcquireExtended(const LOCKTAG *locktag, LOCKMODE lockmode, bool sessionLock, bool dontWait, bool reportMemoryError, LOCALLOCK **locallockp)
bool LockHeldByMe(const LOCKTAG *locktag, LOCKMODE lockmode, bool orstronger)
int LockWaiterCount(const LOCKTAG *locktag)
bool LockRelease(const LOCKTAG *locktag, LOCKMODE lockmode, bool sessionLock)
bool VirtualXactLock(VirtualTransactionId vxid, bool wait)
VirtualTransactionId * GetLockConflicts(const LOCKTAG *locktag, LOCKMODE lockmode, int *countp)
bool LockHasWaiters(const LOCKTAG *locktag, LOCKMODE lockmode, bool sessionLock)
void MarkLockClear(LOCALLOCK *locallock)
#define SET_LOCKTAG_DATABASE_FROZEN_IDS(locktag, dboid)
#define SET_LOCKTAG_RELATION_EXTEND(locktag, dboid, reloid)
@ LOCKTAG_RELATION_EXTEND
@ LOCKTAG_SPECULATIVE_TOKEN
@ LOCKTAG_APPLY_TRANSACTION
@ LOCKTAG_DATABASE_FROZEN_IDS
@ LOCKTAG_VIRTUALTRANSACTION
#define SET_LOCKTAG_APPLY_TRANSACTION(locktag, dboid, suboid, xid, objid)
#define VirtualTransactionIdIsValid(vxid)
#define SET_LOCKTAG_TRANSACTION(locktag, xid)
#define SET_LOCKTAG_RELATION(locktag, dboid, reloid)
#define SET_LOCKTAG_SPECULATIVE_INSERTION(locktag, xid, token)
#define LOCKTAG_LAST_TYPE
#define SET_LOCKTAG_PAGE(locktag, dboid, reloid, blocknum)
#define SET_LOCKTAG_TUPLE(locktag, dboid, reloid, blocknum, offnum)
#define SET_LOCKTAG_OBJECT(locktag, dboid, classoid, objoid, objsubid)
@ LOCKACQUIRE_ALREADY_CLEAR
const char *const LockTagTypeNames[]
Operator oper(ParseState *pstate, List *opname, Oid ltypeId, Oid rtypeId, bool noError, int location)
PGPROC * ProcNumberGetProc(ProcNumber procNumber)
bool TransactionIdIsInProgress(TransactionId xid)
#define PROGRESS_WAITFOR_DONE
#define PROGRESS_WAITFOR_TOTAL
#define PROGRESS_WAITFOR_CURRENT_PID
#define RelationGetRelid(relation)
#define RelationGetRelationName(relation)
#define RelationIsValid(relation)
void pg_usleep(long microsec)
void appendStringInfo(StringInfo str, const char *fmt,...)
TransactionId SubTransGetTopmostTransaction(TransactionId xid)
static void callback(struct sockaddr *addr, struct sockaddr *mask, void *unused)
#define TransactionIdEquals(id1, id2)
#define TransactionIdIsValid(xid)
TransactionId GetTopTransactionIdIfAny(void)