/*------------------------------------------------------------------------- * * lmgr.h-- * POSTGRES lock manager definitions. * * * Copyright (c) 1994, Regents of the University of California * * $Id: lmgr.h,v 1.1 1996/08/28 01:58:13 scrappy Exp $ * *------------------------------------------------------------------------- */ #ifndef LMGR_H #define LMGR_H #include "postgres.h" #include "storage/itemptr.h" #include "storage/lock.h" #include "utils/rel.h" /* * This was moved from pladt.h for the new lock manager. Want to obsolete * all of the old code. */ typedef struct LRelId { Oid relId; /* a relation identifier */ Oid dbId; /* a database identifier */ } LRelId; typedef struct LockInfoData { bool initialized; LRelId lRelId; TransactionId transactionIdData; uint16 flags; } LockInfoData; typedef LockInfoData *LockInfo; #define LockInfoIsValid(linfo) \ ((PointerIsValid(linfo)) && ((LockInfo) linfo)->initialized) extern LRelId RelationGetLRelId(Relation relation); extern Oid LRelIdGetDatabaseId(LRelId lRelId); extern Oid LRelIdGetRelationId(LRelId lRelId); extern bool DatabaseIdIsMyDatabaseId(Oid databaseId); extern bool LRelIdContainsMyDatabaseId(LRelId lRelId); extern void RelationInitLockInfo(Relation relation); extern void RelationDiscardLockInfo(Relation relation); extern void RelationSetLockForDescriptorOpen(Relation relation); extern void RelationSetLockForRead(Relation relation); extern void RelationUnsetLockForRead(Relation relation); extern void RelationSetLockForWrite(Relation relation); extern void RelationUnsetLockForWrite(Relation relation); extern void RelationSetLockForTupleRead(Relation relation, ItemPointer itemPointer); /* used in vaccum.c */ extern void RelationSetLockForWritePage(Relation relation, ItemPointer itemPointer); /* used in nbtpage.c, hashpage.c */ extern void RelationSetSingleWLockPage(Relation relation, ItemPointer itemPointer); extern void RelationUnsetSingleWLockPage(Relation relation, ItemPointer itemPointer); extern void RelationSetSingleRLockPage(Relation relation, ItemPointer itemPointer); extern void RelationUnsetSingleRLockPage(Relation relation, ItemPointer itemPointer); extern void RelationSetRIntentLock(Relation relation); extern void RelationUnsetRIntentLock(Relation relation); extern void RelationSetWIntentLock(Relation relation); extern void RelationUnsetWIntentLock(Relation relation); extern void RelationSetLockForExtend(Relation relation); extern void RelationUnsetLockForExtend(Relation relation); extern void LRelIdAssign(LRelId *lRelId, Oid dbId, Oid relId); /* single.c */ extern bool SingleLockReln(LockInfo linfo, LOCKT lockt, int action); extern bool SingleLockPage(LockInfo linfo, ItemPointer tidPtr, LOCKT lockt, int action); #endif /* LMGR_H */