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

数据库系统

开发平台:

Unix_Linux

  1. /*-------------------------------------------------------------------------
  2.  *
  3.  * xact.h
  4.  *   postgres transaction system header
  5.  *
  6.  *
  7.  * Copyright (c) 1994, Regents of the University of California
  8.  *
  9.  * $Id: xact.h,v 1.20.2.1 1999/07/30 18:27:00 scrappy Exp $
  10.  *
  11.  *-------------------------------------------------------------------------
  12.  */
  13. #ifndef XACT_H
  14. #define XACT_H
  15. #include "access/transam.h"
  16. #include "utils/nabstime.h"
  17. /* ----------------
  18.  * transaction state structure
  19.  * ----------------
  20.  */
  21. typedef struct TransactionStateData
  22. {
  23. TransactionId transactionIdData;
  24. CommandId commandId;
  25. CommandId scanCommandId;
  26. AbsoluteTime startTime;
  27. int state;
  28. int blockState;
  29. } TransactionStateData;
  30. /*
  31.  * Xact isolation levels
  32.  */
  33. #define XACT_DIRTY_READ 0 /* not implemented */
  34. #define XACT_READ_COMMITTED 1
  35. #define XACT_REPEATABLE_READ 2 /* not implemented */
  36. #define XACT_SERIALIZABLE 3
  37. extern int DefaultXactIsoLevel;
  38. extern int XactIsoLevel;
  39. /* ----------------
  40.  * transaction states
  41.  * ----------------
  42.  */
  43. #define TRANS_DEFAULT 0
  44. #define TRANS_START 1
  45. #define TRANS_INPROGRESS 2
  46. #define TRANS_COMMIT 3
  47. #define TRANS_ABORT 4
  48. #define TRANS_DISABLED 5
  49. /* ----------------
  50.  * transaction block states
  51.  * ----------------
  52.  */
  53. #define TBLOCK_DEFAULT 0
  54. #define TBLOCK_BEGIN 1
  55. #define TBLOCK_INPROGRESS 2
  56. #define TBLOCK_END 3
  57. #define TBLOCK_ABORT 4
  58. #define TBLOCK_ENDABORT 5
  59. typedef TransactionStateData *TransactionState;
  60. #define TransactionIdIsValid(xid) ((bool) (xid != NullTransactionId))
  61. #define TransactionIdStore(xid, dest)
  62. (*((TransactionId*)dest) = (TransactionId)xid)
  63. #define StoreInvalidTransactionId(dest) 
  64. (*((TransactionId*)dest) = NullTransactionId)
  65. /* ----------------------------------------------------------------
  66.  * TransactionIdEquals
  67.  * ----------------------------------------------------------------
  68.  */
  69. #define TransactionIdEquals(id1, id2) 
  70. ((bool) ((id1) == (id2))) 
  71. )
  72. /* ----------------
  73.  * extern definitions
  74.  * ----------------
  75.  */
  76. extern int TransactionFlushEnabled(void);
  77. extern void SetTransactionFlushEnabled(bool state);
  78. extern bool IsAbortedTransactionBlockState(void);
  79. extern void OverrideTransactionSystem(bool flag);
  80. extern TransactionId GetCurrentTransactionId(void);
  81. extern CommandId GetCurrentCommandId(void);
  82. extern CommandId GetScanCommandId(void);
  83. extern void SetScanCommandId(CommandId);
  84. extern AbsoluteTime GetCurrentTransactionStartTime(void);
  85. extern bool TransactionIdIsCurrentTransactionId(TransactionId xid);
  86. extern bool CommandIdIsCurrentCommandId(CommandId cid);
  87. extern bool CommandIdGEScanCommandId(CommandId cid);
  88. extern void CommandCounterIncrement(void);
  89. extern void InitializeTransactionSystem(void);
  90. extern bool CurrentXactInProgress(void);
  91. extern void StartTransactionCommand(void);
  92. extern void CommitTransactionCommand(void);
  93. extern void AbortCurrentTransaction(void);
  94. extern void BeginTransactionBlock(void);
  95. extern void EndTransactionBlock(void);
  96. extern bool IsTransactionBlock(void);
  97. extern void UserAbortTransactionBlock(void);
  98. extern void AbortOutOfAnyTransaction(void);
  99. extern TransactionId DisabledTransactionId;
  100. /* defined in xid.c */
  101. extern TransactionId xidin(char *representation);
  102. extern char *xidout(TransactionId transactionId);
  103. extern bool xideq(TransactionId xid1, TransactionId xid2);
  104. extern void TransactionIdAdd(TransactionId *xid, int value);
  105. #endif  /* XACT_H */