On Saturday, April 17, 2021 12:53 AM Japin Li <japi...@hotmail.com> > On Fri, 16 Apr 2021 at 17:19, osumi.takami...@fujitsu.com > <osumi.takami...@fujitsu.com> wrote: > > On Friday, April 16, 2021 5:50 PM Amit Kapila <amit.kapil...@gmail.com> > wrote: > >> On Fri, Apr 16, 2021 at 12:56 PM osumi.takami...@fujitsu.com > >> <osumi.takami...@fujitsu.com> wrote: > >> > > >> > > Thanks for your reminder. It might be a way to solve this problem. > >> > Yeah. I've made the 1st patch for this issue. > >> > > >> > In my env, with the patch > >> > the TRUNCATE in synchronous logical replication doesn't hang. > >> > > >> > >> Few initial comments: > >> ===================== > >> 1. > >> + relreplindex = relation->rd_replidindex; > >> + > >> + /* > >> + * build attributes to idindexattrs. > >> + */ > >> + idindexattrs = NULL; > >> + foreach(l, indexoidlist) > >> + { > >> + Oid indexOid = lfirst_oid(l); > >> + Relation indexDesc; > >> + int i; > >> + bool isIDKey; /* replica identity index */ > >> + > >> + indexDesc = RelationIdGetRelation(indexOid); > >> > >> When you have oid of replica identity index (relreplindex) then what > >> is the need to traverse all the indexes? > > Ok. No need to traverse all the indexes. Will fix this part. > > > >> 2. > >> It is better to name the function as RelationGet... > > You are right. I'll modify this in my next version. > > > > I took the liberty to address review comments and provide a v2 patch on top > of your's v1 patch, also merge the test case. > > Sorry for attaching. No problem. Thank you for updating the patch. I've conducted some cosmetic changes. Could you please check this ? That's already applied by pgindent.
I executed RT for this and made no failure. Just in case, I executed 010_truncate.pl test 100 times in a tight loop, which also didn't fail. Best Regards, Takamichi Osumi
truncate_in_synchronous_logical_replication_v03.patch
Description: truncate_in_synchronous_logical_replication_v03.patch