75 if (relation->
rd_rel->relisshared)
576 callback.
arg = &info;
745 cxt =
gettext_noop(
"while updating tuple (%u,%u) in relation \"%s\"");
748 cxt =
gettext_noop(
"while deleting tuple (%u,%u) in relation \"%s\"");
751 cxt =
gettext_noop(
"while locking tuple (%u,%u) in relation \"%s\"");
754 cxt =
gettext_noop(
"while locking updated version (%u,%u) of tuple in relation \"%s\"");
757 cxt =
gettext_noop(
"while inserting index tuple (%u,%u) in relation \"%s\"");
760 cxt =
gettext_noop(
"while checking uniqueness of tuple (%u,%u) in relation \"%s\"");
763 cxt =
gettext_noop(
"while rechecking updated tuple (%u,%u) in relation \"%s\"");
766 cxt =
gettext_noop(
"while checking exclusion constraint on tuple (%u,%u) in relation \"%s\"");
803 foreach(lc, locktags)
986 _(
"relation %u of database %u"),
992 _(
"extension of relation %u of database %u"),
998 _(
"page %u of relation %u of database %u"),
1005 _(
"tuple (%u,%u) of relation %u of database %u"),
1013 _(
"transaction %u"),
1018 _(
"virtual transaction %d/%u"),
1024 _(
"speculative token %u of transaction %u"),
1030 _(
"object %u of class %u of database %u"),
1038 _(
"user lock [%u,%u,%u]"),
1045 _(
"advisory lock [%u,%u,%u,%u]"),
1053 _(
"unrecognized locktag type %d"),
#define SET_LOCKTAG_TUPLE(locktag, dboid, reloid, blocknum, offnum)
#define ItemPointerIsValid(pointer)
bool ConditionalLockRelationOid(Oid relid, LOCKMODE lockmode)
bool ConditionalLockRelationForExtension(Relation relation, LOCKMODE lockmode)
void SpeculativeInsertionLockRelease(TransactionId xid)
LockAcquireResult LockAcquire(const LOCKTAG *locktag, LOCKMODE lockmode, bool sessionLock, bool dontWait)
void AcceptInvalidationMessages(void)
#define TransactionIdEquals(id1, id2)
int RelationExtensionLockWaiterCount(Relation relation)
void UnlockRelation(Relation relation, LOCKMODE lockmode)
static void SetLocktagRelationOid(LOCKTAG *tag, Oid relid)
TransactionId SubTransGetTopmostTransaction(TransactionId xid)
void UnlockRelationOid(Oid relid, LOCKMODE lockmode)
void UnlockRelationId(LockRelId *relid, LOCKMODE lockmode)
bool TransactionIdIsInProgress(TransactionId xid)
uint32 SpeculativeInsertionLockAcquire(TransactionId xid)
void(* callback)(void *arg)
struct ErrorContextCallback * previous
#define OidIsValid(objectId)
void list_free_deep(List *list)
bool ConditionalLockTuple(Relation relation, ItemPointer tid, LOCKMODE lockmode)
bool ConditionalXactLockTableWait(TransactionId xid)
void LockSharedObjectForSession(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode)
bool VirtualXactLock(VirtualTransactionId vxid, bool wait)
ErrorContextCallback * error_context_stack
void pg_usleep(long microsec)
void appendStringInfo(StringInfo str, const char *fmt,...)
void UnlockRelationIdForSession(LockRelId *relid, LOCKMODE lockmode)
void UnlockSharedObject(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode)
void LockRelationIdForSession(LockRelId *relid, LOCKMODE lockmode)
#define RelationIsValid(relation)
static void callback(struct sockaddr *addr, struct sockaddr *mask, void *unused)
void DescribeLockTag(StringInfo buf, const LOCKTAG *tag)
void RelationInitLockInfo(Relation relation)
void LockPage(Relation relation, BlockNumber blkno, LOCKMODE lockmode)
void SpeculativeInsertionWait(TransactionId xid, uint32 token)
void UnlockSharedObjectForSession(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode)
#define SET_LOCKTAG_RELATION(locktag, dboid, reloid)
void LockDatabaseObject(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode)
bool ConditionalLockRelation(Relation relation, LOCKMODE lockmode)
#define RelationGetRelationName(relation)
TransactionId GetTopTransactionIdIfAny(void)
#define SET_LOCKTAG_SPECULATIVE_INSERTION(locktag, xid, token)
static void XactLockTableWaitErrorCb(void *arg)
void UnlockDatabaseObject(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode)
List * lappend(List *list, void *datum)
static uint32 speculativeInsertionToken
#define VirtualTransactionIdIsValid(vxid)
void LockRelationForExtension(Relation relation, LOCKMODE lockmode)
void UnlockRelationForExtension(Relation relation, LOCKMODE lockmode)
void XactLockTableInsert(TransactionId xid)
bool IsSharedRelation(Oid relationId)
void LockSharedObject(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode)
void WaitForLockers(LOCKTAG heaplocktag, LOCKMODE lockmode)
bool LockHasWaitersRelation(Relation relation, LOCKMODE lockmode)
#define SET_LOCKTAG_PAGE(locktag, dboid, reloid, blocknum)
#define LOCKTAG_LAST_TYPE
void XactLockTableWait(TransactionId xid, Relation rel, ItemPointer ctid, XLTW_Oper oper)
const char * GetLockNameFromTagType(uint16 locktag_type)
#define Assert(condition)
#define SET_LOCKTAG_TRANSACTION(locktag, xid)
void LockTuple(Relation relation, ItemPointer tid, LOCKMODE lockmode)
void UnlockTuple(Relation relation, ItemPointer tid, LOCKMODE lockmode)
static int list_length(const List *l)
#define ItemPointerGetOffsetNumber(pointer)
void UnlockPage(Relation relation, BlockNumber blkno, LOCKMODE lockmode)
int LockWaiterCount(const LOCKTAG *locktag)
bool ConditionalLockPage(Relation relation, BlockNumber blkno, LOCKMODE lockmode)
VirtualTransactionId * GetLockConflicts(const LOCKTAG *locktag, LOCKMODE lockmode)
#define SET_LOCKTAG_OBJECT(locktag, dboid, classoid, objoid, objsubid)
void list_free(List *list)
void LockRelation(Relation relation, LOCKMODE lockmode)
bool LockRelease(const LOCKTAG *locktag, LOCKMODE lockmode, bool sessionLock)
bool LockHasWaiters(const LOCKTAG *locktag, LOCKMODE lockmode, bool sessionLock)
const char *const LockTagTypeNames[]
void XactLockTableDelete(TransactionId xid)
#define ItemPointerGetBlockNumber(pointer)
struct XactLockTableWaitInfo XactLockTableWaitInfo
#define TransactionIdIsValid(xid)
void LockRelationOid(Oid relid, LOCKMODE lockmode)
#define SET_LOCKTAG_RELATION_EXTEND(locktag, dboid, reloid)
void WaitForLockersMultiple(List *locktags, LOCKMODE lockmode)
#define RelationGetRelid(relation)