lmgr.h
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:2k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. /*-------------------------------------------------------------------------
  2.  *
  3.  * lmgr.h
  4.  *   POSTGRES lock manager definitions.
  5.  *
  6.  *
  7.  * Copyright (c) 1994, Regents of the University of California
  8.  *
  9.  * $Id: lmgr.h,v 1.20 1999/05/25 22:43:26 momjian Exp $
  10.  *
  11.  *-------------------------------------------------------------------------
  12.  */
  13. #ifndef LMGR_H
  14. #define LMGR_H
  15. #include <storage/lock.h>
  16. #include <utils/rel.h>
  17. #include <catalog/catname.h>
  18. #define AccessShareLock 1 /* SELECT */
  19. #define RowShareLock 2 /* SELECT FOR UPDATE */
  20. #define RowExclusiveLock 3 /* INSERT, UPDATE, DELETE */
  21. #define ShareLock 4
  22. #define ShareRowExclusiveLock 5
  23. #define ExclusiveLock 6
  24. #define AccessExclusiveLock 7
  25. extern LOCKMETHOD LockTableId;
  26. typedef struct LockRelId
  27. {
  28. Oid relId; /* a relation identifier */
  29. Oid dbId; /* a database identifier */
  30. } LockRelId;
  31. typedef struct LockInfoData
  32. {
  33. LockRelId lockRelId;
  34. } LockInfoData;
  35. typedef LockInfoData *LockInfo;
  36. #define LockInfoIsValid(lockinfo) PointerIsValid(lockinfo)
  37. extern LOCKMETHOD InitLockTable(void);
  38. extern void RelationInitLockInfo(Relation relation);
  39. extern void LockRelation(Relation relation, LOCKMODE lockmode);
  40. extern void UnlockRelation(Relation relation, LOCKMODE lockmode);
  41. /* this is for indices */
  42. extern void LockPage(Relation relation, BlockNumber blkno, LOCKMODE lockmode);
  43. extern void UnlockPage(Relation relation, BlockNumber blkno, LOCKMODE lockmode);
  44. /* and this is for transactions */
  45. extern void XactLockTableInsert(TransactionId xid);
  46. extern void XactLockTableDelete(TransactionId xid);
  47. extern void XactLockTableWait(TransactionId xid);
  48. /* proc.c */
  49. extern void InitProcGlobal(IPCKey key, int maxBackends);
  50. #endif  /* LMGR_H */