Re: [PATCH] Skip unpublishable child tables when adding parent to publication
| От | Amit Kapila |
|---|---|
| Тема | Re: [PATCH] Skip unpublishable child tables when adding parent to publication |
| Дата | |
| Msg-id | CAA4eK1+=gYBYMZdLNSCXLweAzoX1YaYkOQrXQuBuyzx=wh9PJg@mail.gmail.com обсуждение исходный текст |
| Ответ на | [PATCH] Skip unpublishable child tables when adding parent to publication (Arunprasad Rajkumar <ar.arunprasad@gmail.com>) |
| Ответы |
Re: [PATCH] Skip unpublishable child tables when adding parent to publication
Re: [PATCH] Skip unpublishable child tables when adding parent to publication |
| Список | pgsql-hackers |
On Fri, Dec 12, 2025 at 7:56 PM Arunprasad Rajkumar
<ar.arunprasad@gmail.com> wrote:
>
> I would like to propose a patch that improves the handling of table inheritance
> hierarchies when adding tables to publications for logical replication.
>
> Problem:
> Currently, when attempting to add a parent table to a publication using, the operation fails
> with an error if any of the inherited child tables are foreign tables, temporary tables, or unlogged tables. This
makesit difficult to work with inheritance hierarchies in logical
> replication scenarios, as users must manually manage which specific tables to
> include or exclude.
>
> Proposed Solution:
> This patch modifies the behavior to automatically skip child tables that cannot
> be replicated, rather than failing the entire operation. When unpublishable
> children are encountered, a NOTICE message is issued following the same format
> used by VACUUM and ANALYZE commands:
>
> NOTICE: skipping "table_name" --- cannot add relation to publication
> DETAIL: Foreign tables cannot be replicated.
>
BTW, did you try the similar cases for partitioned tables. For
example, below case for unlogged partition table works for me:
postgres=# CREATE TABLE testpub_parent_skip_1 (a int) PARTITION BY RANGE (a);
CREATE TABLE
postgres=# CREATE TABLE testpub_child_regular_1 PARTITION OF
testpub_parent_skip FOR VALUES FROM (1) TO (10);
ERROR: "testpub_parent_skip" is not partitioned
postgres=# CREATE TABLE testpub_child_regular_1 PARTITION OF
testpub_parent_skip_1 FOR VALUES FROM (1) TO (10);
CREATE TABLE
postgres=# CREATE unlogged TABLE testpub_child_temp_1 PARTITION OF
testpub_parent_skip_1 FOR VALUES FROM (11) TO (20);
CREATE TABLE
postgres=# CREATE PUBLICATION testpub_skip_child_pub_1 FOR TABLE
testpub_parent_skip_1;
CREATE PUBLICATION
I think the unlogged table is afterwards silently ignored during
replication. You can once check this and foreign table variant.
BTW, for a somewhat related case, we use WARNING, see below:
if (!indexRelation->rd_index->indisvalid)
ereport(WARNING,
(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
errmsg("skipping reindex of invalid index \"%s.%s\"",
So, shall we consider raising a WARNING instead of NOTICE?
--
With Regards,
Amit Kapila.
В списке pgsql-hackers по дате отправления: