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

数据库系统

开发平台:

Unix_Linux

  1. /*-------------------------------------------------------------------------
  2.  *
  3.  * multilev.h
  4.  *   multi level lock table consts/defs for single.c and multi.c and their
  5.  *   clients
  6.  *
  7.  *
  8.  * Copyright (c) 1994, Regents of the University of California
  9.  *
  10.  * $Id: multilev.h,v 1.15.2.1 1999/07/30 17:07:16 scrappy Exp $
  11.  *
  12.  *-------------------------------------------------------------------------
  13.  */
  14. #ifndef MULTILEV_H
  15. #define MULTILEV_H
  16. #include "storage/lmgr.h"
  17. #ifdef LowLevelLocking
  18. /* DML locks */
  19. #define RowShareLock 1 /* SELECT FOR UPDATE */
  20. #define RowExclusiveLock 2 /* INSERT, UPDATE, DELETE */
  21. #define ShareLock 3
  22. #define ShareRowExclusiveLock 4
  23. #define ExclusiveLock 5
  24. /* DDL locks */
  25. #define ObjShareLock 6
  26. #define ObjExclusiveLock 7
  27. /* Special locks */
  28. #define ExtendLock 8
  29. #else
  30. #define READ_LOCK 2
  31. #define WRITE_LOCK 1
  32. /* any time a small granularity READ/WRITE lock is set.
  33.  * Higher granularity READ_INTENT/WRITE_INTENT locks must
  34.  * also be set.  A read intent lock is has value READ+INTENT.
  35.  * in this implementation.
  36.  */
  37. #define NO_LOCK 0
  38. #define INTENT 2
  39. #define READ_INTENT (READ_LOCK+INTENT)
  40. #define WRITE_INTENT (WRITE_LOCK+INTENT)
  41. #define EXTEND_LOCK 5
  42. #endif  /* !LowLevelLocking */
  43. #define SHORT_TERM 1
  44. #define LONG_TERM 2
  45. #define UNLOCK 0
  46. #define N_LEVELS 3
  47. #define RELN_LEVEL 0
  48. #define PAGE_LEVEL 1
  49. #define TUPLE_LEVEL 2
  50. typedef int PG_LOCK_LEVEL;
  51. /* multi.c */
  52. extern LOCKMETHOD MultiTableId;
  53. #ifdef NOT_USED
  54. extern LOCKMETHOD ShortTermTableId;
  55. #endif
  56. /*
  57.  * function prototypes
  58.  */
  59. extern LOCKMETHOD InitMultiLevelLocks(void);
  60. extern bool MultiLockReln(LockInfo lockinfo, LOCKMODE lockmode);
  61. extern bool MultiLockPage(LockInfo lockinfo, ItemPointer tidPtr, LOCKMODE lockmode);
  62. extern bool MultiReleaseReln(LockInfo lockinfo, LOCKMODE lockmode);
  63. #endif  /* MULTILEV_H */