1 /*-------------------------------------------------------------------------
4 * postgres transaction system header
7 * Copyright (c) 1994, Regents of the University of California
9 * $Id: xact.h,v 1.8 1997/09/08 02:34:33 momjian Exp $
11 *-------------------------------------------------------------------------
16 #include <utils/nabstime.h>
19 * transaction state structure
22 typedef struct TransactionStateData
24 TransactionId transactionIdData;
26 CommandId scanCommandId;
27 AbsoluteTime startTime;
30 } TransactionStateData;
36 #define TRANS_DEFAULT 0
38 #define TRANS_INPROGRESS 2
39 #define TRANS_COMMIT 3
41 #define TRANS_DISABLED 5
44 * transaction block states
47 #define TBLOCK_DEFAULT 0
48 #define TBLOCK_BEGIN 1
49 #define TBLOCK_INPROGRESS 2
51 #define TBLOCK_ABORT 4
52 #define TBLOCK_ENDABORT 5
54 typedef TransactionStateData *TransactionState;
60 extern int TransactionFlushEnabled(void);
61 extern void SetTransactionFlushEnabled(bool state);
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);
85 extern TransactionId DisabledTransactionId;
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);
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);