79 if (relation->
rd_rel->relisshared)
346 for (slockmode = lockmode + 1;
354 elog(
WARNING,
"lock mode %s substituted for %s on relation %s",
859 cxt =
gettext_noop(
"while updating tuple (%u,%u) in relation \"%s\"");
862 cxt =
gettext_noop(
"while deleting tuple (%u,%u) in relation \"%s\"");
865 cxt =
gettext_noop(
"while locking tuple (%u,%u) in relation \"%s\"");
868 cxt =
gettext_noop(
"while locking updated version (%u,%u) of tuple in relation \"%s\"");
871 cxt =
gettext_noop(
"while inserting index tuple (%u,%u) in relation \"%s\"");
874 cxt =
gettext_noop(
"while checking uniqueness of tuple (%u,%u) in relation \"%s\"");
877 cxt =
gettext_noop(
"while rechecking updated tuple (%u,%u) in relation \"%s\"");
880 cxt =
gettext_noop(
"while checking exclusion constraint on tuple (%u,%u) in relation \"%s\"");
920 foreach(lc, locktags)
965 const int index[] = {
1174 _(
"relation %u of database %u"),
1180 _(
"extension of relation %u of database %u"),
1186 _(
"pg_database.datfrozenxid of database %u"),
1191 _(
"page %u of relation %u of database %u"),
1198 _(
"tuple (%u,%u) of relation %u of database %u"),
1206 _(
"transaction %u"),
1211 _(
"virtual transaction %d/%u"),
1217 _(
"speculative token %u of transaction %u"),
1223 _(
"object %u of class %u of database %u"),
1231 _(
"user lock [%u,%u,%u]"),
1238 _(
"advisory lock [%u,%u,%u,%u]"),
1246 _(
"remote transaction %u of subscription %u of database %u"),
1253 _(
"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 OidIsValid(objectId)
bool IsSharedRelation(Oid relationId)
static void PGresult * res
elog(ERROR, "%s: %s", p2, msg)
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)
Assert(fmt[strlen(fmt) - 1] !='\n')
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)
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)
const char * GetLockNameFromTagType(uint16 locktag_type)
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
void LockDatabaseFrozenIds(LOCKMODE lockmode)
struct XactLockTableWaitInfo XactLockTableWaitInfo
void UnlockRelationForExtension(Relation relation, LOCKMODE lockmode)
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)
VirtualTransactionId * GetLockConflicts(const LOCKTAG *locktag, LOCKMODE lockmode, int *countp)
int LockWaiterCount(const LOCKTAG *locktag)
bool LockHeldByMe(const LOCKTAG *locktag, LOCKMODE lockmode)
bool LockRelease(const LOCKTAG *locktag, LOCKMODE lockmode, bool sessionLock)
bool VirtualXactLock(VirtualTransactionId vxid, bool wait)
bool LockHasWaiters(const LOCKTAG *locktag, LOCKMODE lockmode, bool sessionLock)
void MarkLockClear(LOCALLOCK *locallock)
const char * GetLockmodeName(LOCKMETHODID lockmethodid, LOCKMODE mode)
#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)
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)
PGPROC * BackendIdGetProc(int backendID)
void appendStringInfo(StringInfo str, const char *fmt,...)
uint8 locktag_lockmethodid
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)