]> granicus.if.org Git - postgresql/blob - src/include/access/xact.h
Another PGINDENT run that changes variable indenting and case label indenting. Also...
[postgresql] / src / include / access / xact.h
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.8 1997/09/08 02:34:33 momjian Exp $
10  *
11  *-------------------------------------------------------------------------
12  */
13 #ifndef XACT_H
14 #define XACT_H
15
16 #include <utils/nabstime.h>
17
18 /* ----------------
19  *              transaction state structure
20  * ----------------
21  */
22 typedef struct TransactionStateData
23 {
24         TransactionId transactionIdData;
25         CommandId       commandId;
26         CommandId       scanCommandId;
27         AbsoluteTime startTime;
28         int                     state;
29         int                     blockState;
30 }                       TransactionStateData;
31
32 /* ----------------
33  *              transaction states
34  * ----------------
35  */
36 #define TRANS_DEFAULT                   0
37 #define TRANS_START                             1
38 #define TRANS_INPROGRESS                2
39 #define TRANS_COMMIT                    3
40 #define TRANS_ABORT                             4
41 #define TRANS_DISABLED                  5
42
43 /* ----------------
44  *              transaction block states
45  * ----------------
46  */
47 #define TBLOCK_DEFAULT                  0
48 #define TBLOCK_BEGIN                    1
49 #define TBLOCK_INPROGRESS               2
50 #define TBLOCK_END                              3
51 #define TBLOCK_ABORT                    4
52 #define TBLOCK_ENDABORT                 5
53
54 typedef TransactionStateData *TransactionState;
55
56 /* ----------------
57  *              extern definitions
58  * ----------------
59  */
60 extern int      TransactionFlushEnabled(void);
61 extern void SetTransactionFlushEnabled(bool state);
62
63 extern bool IsTransactionState(void);
64 extern bool IsAbortedTransactionBlockState(void);
65 extern void OverrideTransactionSystem(bool flag);
66 extern TransactionId GetCurrentTransactionId(void);
67 extern CommandId GetCurrentCommandId(void);
68 extern CommandId GetScanCommandId(void);
69 extern void SetScanCommandId(CommandId);
70 extern AbsoluteTime GetCurrentTransactionStartTime(void);
71 extern bool TransactionIdIsCurrentTransactionId(TransactionId xid);
72 extern bool CommandIdIsCurrentCommandId(CommandId cid);
73 extern bool CommandIdGEScanCommandId(CommandId cid);
74 extern void CommandCounterIncrement(void);
75 extern void InitializeTransactionSystem(void);
76 extern bool CurrentXactInProgress(void);
77 extern void StartTransactionCommand(void);
78 extern void CommitTransactionCommand(void);
79 extern void AbortCurrentTransaction(void);
80 extern void BeginTransactionBlock(void);
81 extern void EndTransactionBlock(void);
82 extern bool IsTransactionBlock(void);
83 extern void UserAbortTransactionBlock(void);
84
85 extern TransactionId DisabledTransactionId;
86
87 /* defined in xid.c */
88 extern TransactionId xidin(char *representation);
89 extern char *xidout(TransactionId transactionId);
90 extern bool xideq(TransactionId xid1, TransactionId xid2);
91 extern bool TransactionIdIsValid(TransactionId transactionId);
92 extern void StoreInvalidTransactionId(TransactionId * destination);
93 extern void
94 TransactionIdStore(TransactionId transactionId,
95                                    TransactionId * destination);
96 extern bool TransactionIdEquals(TransactionId id1, TransactionId id2);
97 extern bool TransactionIdIsLessThan(TransactionId id1, TransactionId id2);
98 extern void TransactionIdAdd(TransactionId * xid, int value);
99
100 #endif                                                  /* XACT_H */