1/*-------------------------------------------------------------------------
2 *
3 * twophase_rmgr.h
4 * Two-phase-commit resource managers definition
5 *
6 *
7 * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group
8 * Portions Copyright (c) 1994, Regents of the University of California
9 *
10 * src/include/access/twophase_rmgr.h
11 *
12 *-------------------------------------------------------------------------
13 */
14#ifndef TWOPHASE_RMGR_H
15#define TWOPHASE_RMGR_H
16
17typedef void (*TwoPhaseCallback) (TransactionId xid, uint16 info,
18 void *recdata, uint32 len);
19typedef uint8 TwoPhaseRmgrId;
20
21/*
22 * Built-in resource managers
23 */
24#define TWOPHASE_RM_END_ID 0
25#define TWOPHASE_RM_LOCK_ID 1
26#define TWOPHASE_RM_PGSTAT_ID 2
27#define TWOPHASE_RM_MULTIXACT_ID 3
28#define TWOPHASE_RM_PREDICATELOCK_ID 4
29#define TWOPHASE_RM_MAX_ID TWOPHASE_RM_PREDICATELOCK_ID
30
31extern const TwoPhaseCallback twophase_recover_callbacks[];
32extern const TwoPhaseCallback twophase_postcommit_callbacks[];
33extern const TwoPhaseCallback twophase_postabort_callbacks[];
34extern const TwoPhaseCallback twophase_standby_recover_callbacks[];
35
36
37extern void RegisterTwoPhaseRecord(TwoPhaseRmgrId rmid, uint16 info,
38 const void *data, uint32 len);
39
40#endif /* TWOPHASE_RMGR_H */
41