Hi,

4, 5 ===


&gt; if (SnapBuildCurrentState(builder) < SNAPBUILD_BUILDING_SNAPSHOT ||
&gt;&nbsp; &nbsp; &nbsp;(SnapBuildCurrentState(builder) == 
SNAPBUILD_BUILDING_SNAPSHOT &amp;&amp; info != XLOG_HEAP_INPLACE) ||
&gt;&nbsp; &nbsp; &nbsp;ctx-&gt;fast_forward)
&gt;&nbsp; &nbsp; &nbsp;return;



I think during fast forward, we also need handle the xlog that marks a 
transaction
as&nbsp;catalog modifying, or the snapshot might lose some transactions?


&gt; That way we'd still rely on what's being done in the XLOG_HEAP_INPLACE case


+               if (SnapBuildCurrentState(builder) &gt;= 
SNAPBUILD_BUILDING_SNAPSHOT)
+               {
+                       /* Currently only XLOG_HEAP_INPLACE means a catalog 
modifying */
+                       if (info == XLOG_HEAP_INPLACE &amp;&amp; 
TransactionIdIsValid(xid))
+                               
ReorderBufferXidSetCatalogChanges(ctx-&gt;reorder, xid, buf-&gt;origptr);
+               }



We only call&nbsp;ReorderBufferXidSetCatalogChanges() for the xlog that marks a 
transaction as&nbsp;catalog
modifying, and we don't care about the other steps being done in the xlog, so I 
think the current
approach is ok.


--
Regards,
ChangAo Chen

Reply via email to