Re: row filtering for logical replication

From: Greg Nancarrow <gregn4422(at)gmail(dot)com>
To: "houzj(dot)fnst(at)fujitsu(dot)com" <houzj(dot)fnst(at)fujitsu(dot)com>
Cc: Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>, Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>, Peter Smith <smithpb2250(at)gmail(dot)com>, "tanghy(dot)fnst(at)fujitsu(dot)com" <tanghy(dot)fnst(at)fujitsu(dot)com>, Euler Taveira <euler(at)eulerto(dot)com>, vignesh C <vignesh21(at)gmail(dot)com>, Ajin Cherian <itsajin(at)gmail(dot)com>, Dilip Kumar <dilipbalaut(at)gmail(dot)com>, Rahila Syed <rahilasyed90(at)gmail(dot)com>, Peter Eisentraut <peter(dot)eisentraut(at)enterprisedb(dot)com>, Önder Kalacı <onderkalaci(at)gmail(dot)com>, japin <japinli(at)hotmail(dot)com>, Michael Paquier <michael(at)paquier(dot)xyz>, David Steele <david(at)pgmasters(dot)net>, Craig Ringer <craig(at)2ndquadrant(dot)com>, Amit Langote <amitlangote09(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: row filtering for logical replication
Date: 2022-01-17 04:35:25
Message-ID: CAJcOf-c9c_Rkpa7knqN0OOZKPAhPQRLJ7D7Ot4Z4a9PND-y5dQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Sat, Jan 15, 2022 at 5:30 PM houzj(dot)fnst(at)fujitsu(dot)com
<houzj(dot)fnst(at)fujitsu(dot)com> wrote:
>
> Attach the V65 patch set which addressed the above comments and Peter's comments[1].
> I also fixed some typos and removed some unused code.
>

I have several minor comments for the v65-0001 patch:

doc/src/sgml/ref/alter_subscription.sgml

(1)
Suggest minor doc change:

BEFORE:
+ Previously-subscribed tables are not copied, even if the table's row
+ filter <literal>WHERE</literal> clause had been modified.
AFTER:
+ Previously-subscribed tables are not copied, even if a table's row
+ filter <literal>WHERE</literal> clause had been modified.

src/backend/catalog/pg_publication.c

(2) GetTopMostAncestorInPublication
Is there a reason why there is no "break" after finding a
topmost_relid? Why keep searching and potentially overwrite a
previously-found topmost_relid? If it's intentional, I think that a
comment should be added to explain it.

src/backend/commands/publicationcmds.c

(3) Grammar

BEFORE:
+ * Returns true, if any of the columns used in row filter WHERE clause is not
AFTER:
+ * Returns true, if any of the columns used in the row filter WHERE
clause are not

(4) contain_invalid_rfcolumn_walker
Wouldn't this be better named "contains_invalid_rfcolumn_walker"?
(and references to the functions be updated accordingly)

src/backend/executor/execReplication.c

(5) Comment is difficult to read
Add commas to make the comment easier to read:

BEFORE:
+ * It is only safe to execute UPDATE/DELETE when all columns referenced in
+ * the row filters from publications which the relation is in are valid -
AFTER:
+ * It is only safe to execute UPDATE/DELETE when all columns, referenced in
+ * the row filters from publications which the relation is in, are valid -

Regards,
Greg Nancarrow
Fujitsu Australia

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Amit Kapila 2022-01-17 05:47:58 Re: Skipping logical replication transactions on subscriber side
Previous Message Peter Smith 2022-01-17 04:33:55 Re: row filtering for logical replication