@@ -74,6 +74,7 @@ static bool DtmTransactionIdIsInProgress(TransactionId xid);
74
74
static TransactionId DtmGetNextXid (void );
75
75
static TransactionId DtmGetNewTransactionId (bool isSubXact );
76
76
static TransactionId DtmGetOldestXmin (Relation rel ,bool ignoreVacuum );
77
+ static TransactionId DtmGetGlobalTransactionId (void );
77
78
78
79
static bool TransactionIdIsInSnapshot (TransactionId xid ,Snapshot snapshot );
79
80
static bool TransactionIdIsInDoubt (TransactionId xid );
@@ -92,7 +93,7 @@ static bool DtmGlobalXidAssigned;
92
93
static int DtmLocalXidReserve ;
93
94
static int DtmCurcid ;
94
95
static Snapshot DtmLastSnapshot ;
95
- static TransactionManager DtmTM = {DtmGetTransactionStatus ,DtmSetTransactionStatus ,DtmGetSnapshot ,DtmGetNewTransactionId ,DtmGetOldestXmin ,DtmTransactionIdIsInProgress };
96
+ static TransactionManager DtmTM = {DtmGetTransactionStatus ,DtmSetTransactionStatus ,DtmGetSnapshot ,DtmGetNewTransactionId ,DtmGetOldestXmin ,DtmTransactionIdIsInProgress , DtmGetGlobalTransactionId };
96
97
97
98
98
99
#define XTM_TRACE (fmt , ...)
@@ -323,6 +324,12 @@ static TransactionId DtmGetNextXid()
323
324
return xid ;
324
325
}
325
326
327
+ TransactionId
328
+ DtmGetGlobalTransactionId ()
329
+ {
330
+ return DtmNextXid ;
331
+ }
332
+
326
333
TransactionId
327
334
DtmGetNewTransactionId (bool isSubXact )
328
335
{
@@ -667,8 +674,8 @@ static void DtmInitialize()
667
674
static void
668
675
DtmXactCallback (XactEvent event ,void * arg )
669
676
{
677
+ XTM_INFO ("%d: DtmXactCallbackevent=%d isGlobal=%d, nextxid=%d\n" ,getpid (),event ,DtmGlobalXidAssigned ,DtmNextXid );
670
678
if (event == XACT_EVENT_COMMIT || event == XACT_EVENT_ABORT ) {
671
- XTM_INFO ("%d: DtmXactCallbackevent=%d isGlobal=%d, nextxid=%d\n" ,getpid (),event ,DtmGlobalXidAssigned ,DtmNextXid );
672
679
if (DtmGlobalXidAssigned ) {
673
680
DtmGlobalXidAssigned = false;
674
681
}else if (TransactionIdIsValid (DtmNextXid )) {
@@ -780,10 +787,9 @@ dtm_get_current_snapshot_xmax(PG_FUNCTION_ARGS)
780
787
Datum
781
788
dtm_begin_transaction (PG_FUNCTION_ARGS )
782
789
{
783
- int nParticipants = PG_GETARG_INT32 (0 );
784
790
Assert (!TransactionIdIsValid (DtmNextXid ));
785
791
786
- DtmNextXid = DtmGlobalStartTransaction (nParticipants , & DtmSnapshot ,& dtm -> minXid );
792
+ DtmNextXid = DtmGlobalStartTransaction (& DtmSnapshot ,& dtm -> minXid );
787
793
Assert (TransactionIdIsValid (DtmNextXid ));
788
794
XTM_INFO ("%d: Start global transaction %d, dtm->minXid=%d\n" ,getpid (),DtmNextXid ,dtm -> minXid );
789
795