1 /*-------------------------------------------------------------------------
4 * Two-phase-commit related declarations.
7 * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
8 * Portions Copyright (c) 1994, Regents of the University of California
12 *-------------------------------------------------------------------------
17 #include "access/xlogdefs.h"
18 #include "storage/proc.h"
19 #include "utils/timestamp.h"
22 * GlobalTransactionData is defined in twophase.c; other places have no
23 * business knowing the internal definition.
25 typedef struct GlobalTransactionData
*GlobalTransaction
;
28 extern int max_prepared_xacts
;
30 extern Size
TwoPhaseShmemSize(void);
31 extern void TwoPhaseShmemInit(void);
33 extern PGPROC
*TwoPhaseGetDummyProc(TransactionId xid
);
35 extern GlobalTransaction
MarkAsPreparing(TransactionId xid
, const char *gid
,
36 TimestampTz prepared_at
,
37 Oid owner
, Oid databaseid
);
39 extern void StartPrepare(GlobalTransaction gxact
);
40 extern void EndPrepare(GlobalTransaction gxact
);
42 extern TransactionId
PrescanPreparedTransactions(void);
43 extern void RecoverPreparedTransactions(void);
45 extern void RecreateTwoPhaseFile(TransactionId xid
, void *content
, int len
);
46 extern void RemoveTwoPhaseFile(TransactionId xid
, bool giveWarning
);
48 extern void CheckPointTwoPhase(XLogRecPtr redo_horizon
);
50 extern void FinishPreparedTransaction(const char *gid
, bool isCommit
);
52 #endif /* TWOPHASE_H */