Re: Proposal: Conflict log history table for Logical Replication

From: Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>
To: Dilip Kumar <dilipbalaut(at)gmail(dot)com>
Cc: vignesh C <vignesh21(at)gmail(dot)com>, shveta malik <shveta(dot)malik(at)gmail(dot)com>, Nisha Moond <nisha(dot)moond412(at)gmail(dot)com>, Peter Smith <smithpb2250(at)gmail(dot)com>, Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com>, Bharath Rupireddy <bharath(dot)rupireddyforpostgres(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Proposal: Conflict log history table for Logical Replication
Date: 2026-06-17 06:28:22
Message-ID: CAA4eK1Kg9Bk=DX_G9j8fZNgNUrNC=1JerOhuHOG+Cd0rr7fd2g@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Tue, Jun 16, 2026 at 4:12 PM Dilip Kumar <dilipbalaut(at)gmail(dot)com> wrote:
>
> o ensure we are aligned, I want to clarify the current behavior before
> we decide on the next steps. Currently, view and function creation are
> both permitted for toast and conflict tables. However, there is a
> discrepancy in the schemas: view creation is blocked in the
> 'pg_conflict' and 'pg_toast' schemas, while function creation is
> allowed in both. So IIUC we need to take a call whether the function
> creation should be blocked in pg_conflict schema or not, logically we
> can say it can be blocked but we might need to discuss on this because
> it's allowed in the `pg_toast` schema. And if we are worried about
> the descripency that functions are allowed in this schema but views
> are not, I don't think we need to worry about this, this is an
> existing behaviour for toast also and if we want to can investigate as
> a separate thread and fix it for system schema al together? Am I
> missing something here?
>
> postgres[2205601]=# CREATE VIEW v2 AS select * from pg_toast.pg_toast_16412;
> CREATE VIEW
>
> postgres[2205601]=# CREATE VIEW v3 AS select * from
> pg_conflict.pg_conflict_log_16406;
> CREATE VIEW
>
> CREATE VIEW pg_toast.v5 AS select * from pg_toast.pg_toast_16412;
> ERROR: 42501: permission denied to create "pg_toast.v5"
> DETAIL: System catalog modifications are currently disallowed.
> LOCATION: heap_create, heap.c:322
>
> postgres[2205601]=# CREATE VIEW pg_conflict.v5 AS select * from
> pg_conflict.pg_conflict_log_16406;
> ERROR: 42501: permission denied to create "pg_conflict.v5"
> DETAIL: Conflict schema modifications are currently disallowed.
> LOCATION: heap_create, heap.c:329
>

The one case which is not shared is allow_system_table_mods = on mode
where I think the view is allowed to create in pg_toast but not in
pg_conflict schema.

> postgres[2205601]=# CREATE FUNCTION pg_conflict.get_conflict_count()
> RETURNS bigint
> LANGUAGE sql
> AS $$
> SELECT count(*) FROM pg_conflict.pg_conflict_log_16406;
> $$;
> CREATE FUNCTION
>
> postgres[2205601]=# CREATE FUNCTION pg_toast.get_toast_count()
> RETURNS bigint
> LANGUAGE sql
> AS $$
> SELECT count(*) FROM pg_toast.pg_toast_16412;
> $$;
> CREATE FUNCTION
>

I think we should allow both functions and views in non-pg_conflict
schema and disallow both in pg_conflict schema. This is because there
is no use case of allowing user objects in pg_conflict schema (even
with allow_system_table_mods) and we have deliberately kept it closed
for user objects. The one minor advantage in keeping closed for user
objects is that we can avoid the risk of name collisions in
pg_conflict schema. Will this address questions/concerns raised on
this topic?

--
With Regards,
Amit Kapila.

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Yingying Chen 2026-06-17 06:28:37 Re: DOCS - Clarify behaviour when EXCEPT tables are moved/renamed
Previous Message Tom Lane 2026-06-17 06:11:01 Re: Fix tuple deformation with virtual generated NOT NULL columns