@@ -1667,17 +1667,24 @@ ReorderBufferCommitInternal(ReorderBufferTXN *txn,
1667
1667
PG_END_TRY ();
1668
1668
}
1669
1669
1670
+ /*
1671
+ * Ask output plugin whether we want to skip this PREPARE and send
1672
+ * this transaction as one-phase later on commit.
1673
+ */
1670
1674
bool
1671
1675
ReorderBufferPrepareNeedSkip (ReorderBuffer * rb ,TransactionId xid ,char * gid )
1672
1676
{
1673
1677
ReorderBufferTXN * txn ;
1674
1678
1675
1679
txn = ReorderBufferTXNByXid (rb ,xid , false,NULL ,InvalidXLogRecPtr , false);
1676
- Assert (txn != NULL );
1677
- // ctx->callbacks.filter_prepare_cb
1680
+
1678
1681
return rb -> filter_prepare (rb ,txn ,gid );
1679
1682
}
1680
1683
1684
+
1685
+ /*
1686
+ * Commit non-twophase transaction. See comments to ReorderBufferCommitInternal()
1687
+ */
1681
1688
void
1682
1689
ReorderBufferCommit (ReorderBuffer * rb ,TransactionId xid ,
1683
1690
XLogRecPtr commit_lsn ,XLogRecPtr end_lsn ,
@@ -1693,6 +1700,10 @@ ReorderBufferCommit(ReorderBuffer *rb, TransactionId xid,
1693
1700
commit_time ,origin_id ,origin_lsn );
1694
1701
}
1695
1702
1703
+ /*
1704
+ * Prepare twophase transaction. It calls ReorderBufferCommitInternal()
1705
+ * since all transaction changes should be decoded on PREPARE.
1706
+ */
1696
1707
void
1697
1708
ReorderBufferPrepare (ReorderBuffer * rb ,TransactionId xid ,
1698
1709
XLogRecPtr commit_lsn ,XLogRecPtr end_lsn ,
@@ -1712,6 +1723,10 @@ ReorderBufferPrepare(ReorderBuffer *rb, TransactionId xid,
1712
1723
commit_time ,origin_id ,origin_lsn );
1713
1724
}
1714
1725
1726
+ /*
1727
+ * Check whether this transaction was sent as prepared to receiver.
1728
+ * Called upon commit/abort prepared.
1729
+ */
1715
1730
bool
1716
1731
ReorderBufferTxnIsPrepared (ReorderBuffer * rb ,TransactionId xid )
1717
1732
{
@@ -1720,7 +1735,6 @@ ReorderBufferTxnIsPrepared(ReorderBuffer *rb, TransactionId xid)
1720
1735
txn = ReorderBufferTXNByXid (rb ,xid , false,NULL ,InvalidXLogRecPtr ,
1721
1736
false);
1722
1737
1723
- /* TXN not found mean that it was send already, isn't it? */
1724
1738
return txn == NULL ? true :txn -> prepared ;
1725
1739
}
1726
1740