1 /*-------------------------------------------------------------------------
4 * POSTGRES snapshot manager
6 * Portions Copyright (c) 1996-2014, PostgreSQL Global Development Group
7 * Portions Copyright (c) 1994, Regents of the University of California
9 * src/include/utils/snapmgr.h
11 *-------------------------------------------------------------------------
17 #include "utils/resowner.h"
18 #include "utils/snapshot.h"
21 extern bool FirstSnapshotSet;
23 extern TransactionId TransactionXmin;
24 extern TransactionId RecentXmin;
25 extern TransactionId RecentGlobalXmin;
26 extern TransactionId RecentGlobalDataXmin;
28 extern Snapshot GetTransactionSnapshot(void);
29 extern Snapshot GetLatestSnapshot(void);
30 extern void SnapshotSetCommandId(CommandId curcid);
32 extern Snapshot GetCatalogSnapshot(Oid relid);
33 extern Snapshot GetNonHistoricCatalogSnapshot(Oid relid);
34 extern void InvalidateCatalogSnapshot(void);
36 extern void PushActiveSnapshot(Snapshot snapshot);
37 extern void PushCopiedSnapshot(Snapshot snapshot);
38 extern void UpdateActiveSnapshotCommandId(void);
39 extern void PopActiveSnapshot(void);
40 extern Snapshot GetActiveSnapshot(void);
41 extern bool ActiveSnapshotSet(void);
43 extern Snapshot RegisterSnapshot(Snapshot snapshot);
44 extern void UnregisterSnapshot(Snapshot snapshot);
45 extern Snapshot RegisterSnapshotOnOwner(Snapshot snapshot, ResourceOwner owner);
46 extern void UnregisterSnapshotFromOwner(Snapshot snapshot, ResourceOwner owner);
48 extern void AtSubCommit_Snapshot(int level);
49 extern void AtSubAbort_Snapshot(int level);
50 extern void AtEOXact_Snapshot(bool isCommit);
52 extern Datum pg_export_snapshot(PG_FUNCTION_ARGS);
53 extern void ImportSnapshot(const char *idstr);
54 extern bool XactHasExportedSnapshots(void);
55 extern void DeleteAllExportedSnapshotFiles(void);
56 extern bool ThereAreNoPriorRegisteredSnapshots(void);
58 extern char *ExportSnapshot(Snapshot snapshot);
60 /* Support for catalog timetravel for logical decoding */
62 extern struct HTAB *HistoricSnapshotGetTupleCids(void);
63 extern void SetupHistoricSnapshot(Snapshot snapshot_now, struct HTAB *tuplecids);
64 extern void TeardownHistoricSnapshot(bool is_error);
65 extern bool HistoricSnapshotActive(void);
67 #endif /* SNAPMGR_H */