summaryrefslogtreecommitdiff
path: root/src/include/storage/procarray.h
diff options
context:
space:
mode:
authorTom Lane2011-10-22 22:22:45 +0000
committerTom Lane2011-10-22 22:23:30 +0000
commitbb446b689b6681eb57a8a50605e119743190c4db (patch)
tree2605250c0d2a465c4ff6ef7454df4c56902759cd /src/include/storage/procarray.h
parentb436c72f61adf5efab435c282bfb13a29508d475 (diff)
Support synchronization of snapshots through an export/import procedure.
A transaction can export a snapshot with pg_export_snapshot(), and then others can import it with SET TRANSACTION SNAPSHOT. The data does not leave the server so there are not security issues. A snapshot can only be imported while the exporting transaction is still running, and there are some other restrictions. I'm not totally convinced that we've covered all the bases for SSI (true serializable) mode, but it works fine for lesser isolation modes. Joachim Wieland, reviewed by Marko Tiikkaja, and rather heavily modified by Tom Lane
Diffstat (limited to 'src/include/storage/procarray.h')
-rw-r--r--src/include/storage/procarray.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/include/storage/procarray.h b/src/include/storage/procarray.h
index a11d4385b7d..71c82437cdf 100644
--- a/src/include/storage/procarray.h
+++ b/src/include/storage/procarray.h
@@ -37,10 +37,16 @@ extern void ExpireTreeKnownAssignedTransactionIds(TransactionId xid,
extern void ExpireAllKnownAssignedTransactionIds(void);
extern void ExpireOldKnownAssignedTransactionIds(TransactionId xid);
-extern RunningTransactions GetRunningTransactionData(void);
+extern int GetMaxSnapshotXidCount(void);
+extern int GetMaxSnapshotSubxidCount(void);
extern Snapshot GetSnapshotData(Snapshot snapshot);
+extern bool ProcArrayInstallImportedXmin(TransactionId xmin,
+ TransactionId sourcexid);
+
+extern RunningTransactions GetRunningTransactionData(void);
+
extern bool TransactionIdIsInProgress(TransactionId xid);
extern bool TransactionIdIsActive(TransactionId xid);
extern TransactionId GetOldestXmin(bool allDbs, bool ignoreVacuum);