| From: | "Zhijie Hou (Fujitsu)" <houzj(dot)fnst(at)fujitsu(dot)com> |
|---|---|
| To: | Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com>, Marcos Pegoraro <marcos(at)f10(dot)com(dot)br> |
| Cc: | PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
| Subject: | RE: Initial COPY of Logical Replication is too slow |
| Date: | 2026-03-03 10:22:29 |
| Message-ID: | TY4PR01MB16907733B75A99117F013AFCA947FA@TY4PR01MB16907.jpnprd01.prod.outlook.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
On Saturday, February 28, 2026 7:48 AM Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com> wrote:
> To: Marcos Pegoraro <marcos(at)f10(dot)com(dot)br>
> Cc: PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
> Subject: Re: Initial COPY of Logical Replication is too slow
>
> Another variant of this approach is to extend
> pg_get_publication_table() so that it can accept a relid to get the publication
> information of the specific table. I've attached the patch for this idea. I'm
> going to add regression test cases.
>
> pg_get_publication_table() is a VARIACID array function so the patch changes
> its signature to {text[] [, oid]}, breaking the tool compatibility. Given this
> function is mostly an internal-use function (we don't have the documentation
> for it), it would probably be okay with it. I find it's clearer than the other
> approach of introducing pg_get_publication_table_info(). Feedback is very
> welcome.
Thanks for updating the patch.
I have few comments for the function change:
1.
If we change the function signature, will it affect use cases where the
publisher version is newer and the subscriber version is older ? E.g., when
publisher is passing text style publication name to pg_get_publication_tables().
Besides, for upgrade scenarios where the publisher version is older, I think
the patch needs to add version checks to avoid passing the relid to
pg_get_publication_tables.
2.
In the following example, I expected it to output a table with valid row
filter, but it returns 0 row after applying the patch.
CREATE TABLE measurements (
city_id int not null,
logdate date not null,
peaktemp int,
unitsales int
) PARTITION BY RANGE (logdate);
-- Create partitions
CREATE TABLE measurements_2023_q1 PARTITION OF measurements
FOR VALUES FROM ('2023-01-01') TO ('2023-04-01');
CREATE PUBLICATION pub FOR TABLE measurements_2023_q1 WHERE (city_id = 2);
select pg_get_publication_tables(ARRAY['pub2'], 'measurements_2023_q1'::regclass);
pg_get_publication_tables
---------------------------
(0 rows)
Best Regards,
Hou zj
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Amit Kapila | 2026-03-03 10:25:27 | Re: Fix slotsync worker busy loop causing repeated log messages |
| Previous Message | Nisha Moond | 2026-03-03 10:15:19 | Re: Skipping schema changes in publication |