On Tue, Nov 7, 2023 at 3:56 AM David Rowley <dgrowle...@gmail.com> wrote: > > On Thu, 2 Nov 2023 at 22:42, Amit Kapila <amit.kapil...@gmail.com> wrote: > > The other two look good to me. > > Thanks for looking. > > I spent some time trying to see if the performance changes much with > either of these cases. For the XLogWalRcvProcessMsg() I was unable to > measure any difference even when replaying inserts into a table with a > single int4 column and no indexes. I think that change is worthwhile > regardless as it allows us to get rid of a global variable. I was > tempted to shorten the name of that variable a bit since it's now > local, but didn't as it causes a bit more churn. > > For the apply_spooled_messages() change, I tried logical decoding but > quickly saw apply_spooled_messages() isn't the normal case. I didn't > quite find a test case that caused the changes to be serialized to a > file, but I do see that the number of bytes can be large so thought > that it's worthwhile saving the memcpy for that case. >
Yeah, and another reason is that the usage of StringInfo becomes consistent with LogicalRepApplyLoop(). One can always configure the lower value of logical_decoding_work_mem or use debug_logical_replication_streaming for a smaller number of changes to follow that code path. But I am not sure how much practically it will help because we are anyway reading file to apply the changes. -- With Regards, Amit Kapila.