On Fri, Mar 4, 2022 9:41 AM Ajin Cherian <itsa...@gmail.com> wrote:
> 
> I have split the patch into two. I have kept the logic of skipping
> streaming changes in the second patch.
> I will work on the second patch once we can figure out a solution for
> the COMMIT PREPARED after restart problem.
> 

Thanks for updating the patch.

A comment on v23-0001 patch.

@@ -1429,6 +1520,19 @@ pgoutput_message(LogicalDecodingContext *ctx, 
ReorderBufferTXN *txn,
        if (in_streaming)
                xid = txn->xid;
 
+       /*
+        * Output BEGIN if we haven't yet.
+        * Avoid for non-transactional messages.
+        */
+       if (in_streaming || transactional)
+       {
+               PGOutputTxnData *txndata = (PGOutputTxnData *) 
txn->output_plugin_private;
+
+               /* Send BEGIN if we haven't yet */
+               if (txndata && !txndata->sent_begin_txn)
+                       pgoutput_send_begin(ctx, txn);
+       }
+
        OutputPluginPrepareWrite(ctx, true);
        logicalrep_write_message(ctx->out,
                                                         xid,

I think we don't need to send BEGIN if in_streaming is true, right? The first
patch doesn't skip streamed transaction, so should we modify
+       if (in_streaming || transactional)
to
+       if (!in_streaming && transactional)
?

Regards,
Shi yu

Reply via email to