1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- /*-------------------------------------------------------------------------
- *
- * snapbuild.h
- * Exports from replication/logical/snapbuild.c.
- *
- * Copyright (c) 2012-2016, PostgreSQL Global Development Group
- *
- * src/include/replication/snapbuild.h
- *
- *-------------------------------------------------------------------------
- */
- #ifndef SNAPBUILD_H
- #define SNAPBUILD_H
- #include "access/xlogdefs.h"
- #include "utils/snapmgr.h"
- typedef enum
- {
- /*
- * Initial state, we can't do much yet.
- */
- SNAPBUILD_START = -1,
- /*
- * Collecting committed transactions, to build the initial catalog
- * snapshot.
- */
- SNAPBUILD_BUILDING_SNAPSHOT = 0,
- /*
- * We have collected enough information to decode tuples in transactions
- * that started after this.
- *
- * Once we reached this we start to collect changes. We cannot apply them
- * yet, because they might be based on transactions that were still running
- * when FULL_SNAPSHOT was reached.
- */
- SNAPBUILD_FULL_SNAPSHOT = 1,
- /*
- * Found a point after SNAPBUILD_FULL_SNAPSHOT where all transactions that
- * were running at that point finished. Till we reach that we hold off
- * calling any commit callbacks.
- */
- SNAPBUILD_CONSISTENT = 2
- } SnapBuildState;
- /* forward declare so we don't have to expose the struct to the public */
- struct SnapBuild;
- typedef struct SnapBuild SnapBuild;
- /* forward declare so we don't have to include reorderbuffer.h */
- struct ReorderBuffer;
- /* forward declare so we don't have to include heapam_xlog.h */
- struct xl_heap_new_cid;
- struct xl_running_xacts;
- extern void CheckPointSnapBuild(void);
- extern SnapBuild *AllocateSnapshotBuilder(struct ReorderBuffer *cache,
- TransactionId xmin_horizon, XLogRecPtr start_lsn,
- bool need_full_snapshot);
- extern void FreeSnapshotBuilder(SnapBuild *cache);
- extern void SnapBuildSnapDecRefcount(Snapshot snap);
- extern const char *SnapBuildExportSnapshot(SnapBuild *snapstate);
- extern void SnapBuildClearExportedSnapshot(void);
- extern SnapBuildState SnapBuildCurrentState(SnapBuild *snapstate);
- extern Snapshot SnapBuildGetOrBuildSnapshot(SnapBuild *builder,
- TransactionId xid);
- extern bool SnapBuildXactNeedsSkip(SnapBuild *snapstate, XLogRecPtr ptr);
- extern void SnapBuildCommitTxn(SnapBuild *builder, XLogRecPtr lsn,
- TransactionId xid, int nsubxacts,
- TransactionId *subxacts);
- extern bool SnapBuildProcessChange(SnapBuild *builder, TransactionId xid,
- XLogRecPtr lsn);
- extern void SnapBuildProcessNewCid(SnapBuild *builder, TransactionId xid,
- XLogRecPtr lsn, struct xl_heap_new_cid *cid);
- extern void SnapBuildProcessRunningXacts(SnapBuild *builder, XLogRecPtr lsn,
- struct xl_running_xacts *running);
- extern void SnapBuildSerializationPoint(SnapBuild *builder, XLogRecPtr lsn);
- #endif /* SNAPBUILD_H */
|