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


Reply via email to