Re: Support EXCEPT for TABLES IN SCHEMA publications

Nisha Moond <nisha.moond412@gmail.com>

From: Nisha Moond <nisha.moond412@gmail.com>
To: vignesh C <vignesh21@gmail.com>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2026-04-15T08:52:36Z
Lists: pgsql-hackers
On Tue, Apr 14, 2026 at 8:46 PM vignesh C <vignesh21@gmail.com> wrote:
>
> When an EXCEPT table is specified together with TABLES IN SCHEMA sch1,
> the EXCEPT entry is correctly created:
> postgres=# create publication pub1 for tables in schema sch1 except (sch1.t1);
> CREATE PUBLICATION
>
> postgres=# \dRp+ pub1
>                                                       Publication pub1
>   Owner  | All tables | All sequences | Inserts | Updates | Deletes |
> Truncates | Generated columns | Via root | Description
> ---------+------------+---------------+---------+---------+---------+-----------+-------------------+----------+-------------
>  vignesh | f          | f             | t       | t       | t       |
> t         | none              | f        |
> Tables from schemas:
>     "sch1"
> Except tables:
>     "sch1.t1"
> However, after dropping the schema from the publication, the
> previously recorded EXCEPT table entry is still retained:
> postgres=# alter publication pub1 drop TABLES IN SCHEMA sch1 ;
> ALTER PUBLICATION
> postgres=# \dRp+ pub1
>                                                       Publication pub1
>   Owner  | All tables | All sequences | Inserts | Updates | Deletes |
> Truncates | Generated columns | Via root | Description
> ---------+------------+---------------+---------+---------+---------+-----------+-------------------+----------+-------------
>  vignesh | f          | f             | t       | t       | t       |
> t         | none              | f        |
> Except tables:
>     "sch1.t1"
>
> This seems incorrect, because once sch1 is no longer part of the
> publication, retaining "sch1.t1" as an EXCEPT entry no longer has any
> semantic meaning and leaves behind stale catalog state.
>

This is handled in v1-003 (last) patch along with other ALTER
PUBLICATION related modifications.

--
Thanks,
Nisha



Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Doc: Clarify that publication exclusions track table identity.