Re: Proposal: Conflict log history table for Logical Replication
Dilip Kumar <dilipbalaut@gmail.com>
From: Dilip Kumar <dilipbalaut@gmail.com>
To: Masahiko Sawada <sawada.mshk@gmail.com>
Cc: Amit Kapila <amit.kapila16@gmail.com>, Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-09-24T11:35:52Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Allow logical replication conflicts to be logged to a table.
- a5918fddf10d master landed
-
Avoid orphaned objects dependencies
- 2fbb21170e90 19 (unreleased) cited
On Tue, Sep 23, 2025 at 11:29 PM Masahiko Sawada <sawada.mshk@gmail.com> wrote: > > On Sat, Sep 20, 2025 at 4:59 AM Amit Kapila <amit.kapila16@gmail.com> wrote: > > > > On Thu, Sep 18, 2025 at 11:46 PM Masahiko Sawada <sawada.mshk@gmail.com> wrote: > > > > > > On Thu, Sep 18, 2025 at 1:33 AM Amit Kapila <amit.kapila16@gmail.com> wrote: > > > > > > > > If we compare conflict_history_table with the slot that gets created > > > > with subscription, one can say the same thing about slots. Users can > > > > drop the slots and whole replication will stop. I think this table > > > > will be created with the same privileges as the owner of a > > > > subscription which can be either a superuser or a user with the > > > > privileges of the pg_create_subscription role, so we can rely on such > > > > users. > > > > > > We might want to consider which role inserts the conflict info into > > > the history table. For example, if any table created by a user can be > > > used as the history table for a subscription and the conflict info > > > insertion is performed by the subscription owner, we would end up > > > having the same security issue that was addressed by the run_as_owner > > > subscription option. > > > > > > > Yeah, I don't think we want to open that door. For user created > > tables, we should perform actions with table_owner's privilege. In > > such a case, if one wants to create a subscription with run_as_owner > > option, she should give DML operation permissions to the subscription > > owner. OTOH, if we create this table internally (via subscription > > owner) then irrespective of run_as_owner, we will always insert as > > subscription_owner. > > Agreed. Yeah that makes sense to me as well. -- Regards, Dilip Kumar Google