On Wednesday, April 20, 2022 4:57 PM houzj.f...@fujitsu.com wrote: > > On Tuesday, April 19, 2022 2:58 PM Amit Kapila <amit.kapil...@gmail.com> > wrote: > > > > On Thu, Apr 14, 2022 at 9:12 AM houzj.f...@fujitsu.com > > <houzj.f...@fujitsu.com> wrote: > > > > > > On Friday, April 8, 2022 5:14 PM houzj.f...@fujitsu.com > > <houzj.f...@fujitsu.com> wrote: > > > > > > Attach a new version patch which improved the error handling and > > > handled > > the case > > > when there is no more worker available (will spill the data to the > > > temp file in > > this case). > > > > > > Currently, it still doesn't support skip the streamed transaction in > > > bgworker, > > because > > > in this approach, we don't know the last lsn for the streamed > > > transaction > > being applied, > > > so cannot get the lsn to SKIP. I will think more about it and keep > > > testing the > > patch. > > > > > > > I think we can avoid performing the streaming transaction by bgworker > > if skip_lsn is set. This needs some more thought but anyway I see > > another problem in this patch. I think we won't be able to make the > > decision whether to apply the change for a relation that is not in the > > 'READY' state (see should_apply_changes_for_rel) as we won't know > > 'remote_final_lsn' by that time for streaming transactions. I think > > what we can do here is that before assigning the transaction to > > bgworker, we can check if any of the rels is not in the 'READY' state, > > we can make the transaction spill the changes as we are doing now. > > Even if we do such a check, it is still possible that some rel on > > which this transaction is performing operation can appear to be in > > 'non-ready' state after starting bgworker and for such a case I think > > we need to give error and restart the transaction as we have no way to > > know whether we need to perform an operation on the 'rel'. This is > > possible if the user performs REFRESH PUBLICATION in parallel to this > > transaction as that can add a new rel to the pg_subscription_rel. > > Changed as suggested. > > Attach the new version patch which cleanup some code and fix above problem. > For now, it won't apply streaming transaction in bgworker if skiplsn is set > or any > table is not in 'READY' state. > > Besides, extent the subscription streaming option to ('on/off/apply(apply in > bgworker)/spool(spool to file)') so that user can control whether to apply The > transaction in a bgworker.
Sorry, there was a miss in the pg_dump testcase which cause failure in CFbot. Attach a new version patch which fix that. Best regards, Hou zj
v4-0001-Perform-streaming-logical-transactions-by-background.patch
Description: v4-0001-Perform-streaming-logical-transactions-by-background.patch