On Sun, Nov 28, 2021 at 6:17 PM Peter Smith <smithpb2...@gmail.com> wrote: > > On Fri, Nov 26, 2021 at 1:16 PM houzj.f...@fujitsu.com > <houzj.f...@fujitsu.com> wrote: > > > ... > > Based on this direction, I tried to write a top up POC patch(0005) which > > I'd like to share. > > > > The top up patch mainly did the following things. > > > > * Move the row filter columns invalidation to CheckCmdReplicaIdentity, so > > that > > the invalidation is executed only when actual UPDATE or DELETE executed on > > the > > published relation. It's consistent with the existing check about replica > > identity. > > > > * Cache the results of the validation for row filter columns in relcache to > > reduce the cost of the validation. It's safe because every operation that > > change the row filter and replica identity will invalidate the relcache. > > > > Also attach the v42 patch set to keep cfbot happy. >
Now I looked at the patch 0005 test cases. Since this patch does the RI validation at UPDATE/DELETE execution instead of at the time of CREATE PUBLICATION it means that currently, the CREATE PUBLICATION is always going to succeed. So IIUC I think it is accidentally missing a DROP PUBLICATION for one of the tests because the "ERROR: publication "testpub6" already exists" should not be happening. Below is a fragment from the regression test publication.out I am referring to: CREATE PUBLICATION testpub6 FOR TABLE rf_tbl_abcd_pk WHERE (a > 99); -- fail - "a" is in PK but it is not part of REPLICA IDENTITY NOTHING UPDATE rf_tbl_abcd_pk set a = 1; ERROR: cannot update table "rf_tbl_abcd_pk" DETAIL: Not all row filter columns are not part of the REPLICA IDENTITY CREATE PUBLICATION testpub6 FOR TABLE rf_tbl_abcd_pk WHERE (c > 99); ERROR: publication "testpub6" already exists ------ Kind Regards, Peter Smith. Fujitsu Australia