From: | vignesh C <vignesh21(at)gmail(dot)com> |
---|---|
To: | Peter Smith <smithpb2250(at)gmail(dot)com> |
Cc: | Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>, Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>, Peter Eisentraut <peter(dot)eisentraut(at)enterprisedb(dot)com>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Column Filtering in Logical Replication |
Date: | 2022-08-25 09:38:39 |
Message-ID: | CALDaNm3Q4fzTuJy_+04aHBAPDxerFpqpN7+AQtpy37jA2ScQ8w@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Tue, Aug 23, 2022 at 7:52 AM Peter Smith <smithpb2250(at)gmail(dot)com> wrote:
>
> On Mon, Aug 22, 2022 at 9:25 PM vignesh C <vignesh21(at)gmail(dot)com> wrote:
> >
> ...
>
> > Few comments:
> > 1) I felt no expressions are allowed in case of column filters. Only
> > column names can be specified. The second part of the sentence
> > confuses what is allowed and what is not allowed. Won't it be better
> > to remove the second sentence and mention that only column names can
> > be specified.
> > + <para>
> > + Column list can contain only simple column references. Complex
> > + expressions, function calls etc. are not allowed.
> > + </para>
> >
>
> This wording was lifted verbatim from the commit message [1]. But I
> see your point that it just seems to be overcomplicating a simple
> rule. Modified as suggested.
>
> > 2) tablename should be table name.
> > + <para>
> > + A column list is specified per table following the tablename, and
> > enclosed by
> > + parenthesis. See <xref linkend="sql-createpublication"/> for details.
> > + </para>
> >
> > We have used table name in the same page in other instances like:
> > a) The row filter is defined per table. Use a WHERE clause after the
> > table name for each published table that requires data to be filtered
> > out. The WHERE clause must be enclosed by parentheses.
> > b) The tables are matched between the publisher and the subscriber
> > using the fully qualified table name.
> >
>
> Fixed as suggested.
>
> > 3) One small whitespace issue:
> > git am v2-0001-Column-List-replica-identity-rules.patch
> > Applying: Column List replica identity rules.
> > .git/rebase-apply/patch:30: trailing whitespace.
> > if the publication publishes only <command>INSERT</command> operations.
> > warning: 1 line adds whitespace errors.
> >
>
> Fixed.
>
> ~~~
>
> PSA the v3* patch set.
Thanks for the updated patch.
Few comments:
1) We can shuffle the columns in publisher table and subscriber to
show that the order of the column does not matter
+ <para>
+ Create a publication <literal>p1</literal>. A column list is defined for
+ table <literal>t1</literal> to reduce the number of columns that will be
+ replicated.
+<programlisting>
+test_pub=# CREATE PUBLICATION p1 FOR TABLE t1 (id, a, b, c);
+CREATE PUBLICATION
+test_pub=#
+</programlisting></para>
2) We can try to keep the line content to less than 80 chars
+ <para>
+ A column list is specified per table following the tablename, and
enclosed by
+ parenthesis. See <xref linkend="sql-createpublication"/> for details.
+ </para>
3) tablename should be table name like it is used in other places
+ <para>
+ A column list is specified per table following the tablename, and
enclosed by
+ parenthesis. See <xref linkend="sql-createpublication"/> for details.
+ </para>
4a) In the below, you could include mentioning "Only the column list
data of publication <literal>p1</literal> are replicated."
+ <para>
+ Insert some rows to table <literal>t1</literal>.
+<programlisting>
+test_pub=# INSERT INTO t1 VALUES(1, 'a-1', 'b-1', 'c-1', 'd-1', 'e-1');
+INSERT 0 1
4b) In the above, we could mention that the insert should be done on
the "publisher side" as the previous statements are executed on the
subscriber side.
Regards,
Vignesh
From | Date | Subject | |
---|---|---|---|
Next Message | John Naylor | 2022-08-25 09:41:53 | Re: use SSE2 for is_valid_ascii |
Previous Message | Daniel Gustafsson | 2022-08-25 09:19:05 | Re: pg_receivewal and SIGTERM |