Re: row filtering for logical replication

Поиск
Список
Период
Сортировка
От Peter Smith
Тема Re: row filtering for logical replication
Дата
Msg-id CAHut+PtN2p6O6S6DEdYgezcQ_q7xc6ksadcE+wHRSaEW9jP2vA@mail.gmail.com
обсуждение исходный текст
Ответ на Re: row filtering for logical replication  (Peter Smith <smithpb2250@gmail.com>)
Список pgsql-hackers
On Sun, Nov 28, 2021 at 6:17 PM Peter Smith <smithpb2250@gmail.com> wrote:
>
> On Fri, Nov 26, 2021 at 1:16 PM houzj.fnst@fujitsu.com
> <houzj.fnst@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



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Masahiko Sawada
Дата:
Сообщение: Re: Skipping logical replication transactions on subscriber side
Следующее
От: Tom Lane
Дата:
Сообщение: Re: rand48 replacement