Re: Proposal: Conflict log history table for Logical Replication
shveta malik <shveta.malik@gmail.com>
From: shveta malik <shveta.malik@gmail.com>
To: Dilip Kumar <dilipbalaut@gmail.com>
Cc: Amit Kapila <amit.kapila16@gmail.com>,
Masahiko Sawada <sawada.mshk@gmail.com>, Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>,
shveta malik <shveta.malik@gmail.com>
Date: 2025-12-11T11:34:19Z
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, Dec 9, 2025 at 8:41 PM Dilip Kumar <dilipbalaut@gmail.com> wrote: > > > > Here is the updated version of patch > What has changed > 1. Table is created using create_heap_with_catalog() instead of SPI as > suggested by Sawada-San and Amit Kapila. > 2. Validated the table schema after acquiring the lock before > preparing/inserting conflict tuples for defects raised by Vignesh. > 3. Bug fixes raised by Shweta (segfault) > 3. Comments from Peter (except exposing namespace in \dRs+, it's still pending. > Thanks for the patch. I tested all conflict-types on this version, they (basic scenarios) seem to work well. Except only that key-RI pending issue, other issues seem to be addressed. I will start with code-review now. Few observations: 1) \dRs+ shows 'Conflict log table' without namespace, this could be confusing if the same table exists in multiple schemas. 2) When we do below: alter subscription sub1 SET (conflict_log_table=clt2); the previous conflict log table is dropped. Is this behavior intentional and discussed/concluded earlier? It’s possible that a user may want to create a new conflict log table for future events while still retaining the old one for analysis. If the subscription itself is dropped, then dropping the CLT makes sense, but I’m not sure this behavior is intended for ALTER SUBSCRIPTION. I do understand that once we unlink CLT from subscription, later even DROP subscription cannot drop it, but user can always drop it when not needed. If we plan to keep existing behavior, it should be clearly documented in a CAUTION section, and the command should explicitly log the table drop. thanks Shveta