Re: Proposal: Conflict log history table for Logical Replication

From: Peter Smith <smithpb2250(at)gmail(dot)com>
To: Dilip Kumar <dilipbalaut(at)gmail(dot)com>
Cc: vignesh C <vignesh21(at)gmail(dot)com>, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>, Nisha Moond <nisha(dot)moond412(at)gmail(dot)com>, shveta malik <shveta(dot)malik(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-25 03:31:29
Message-ID: CAHut+PvMhAUnQQGo3eKV6FPVN+uq8BBx=j-crh1kr61pkvBiAw@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Some review comments for v56-0001.

======
Tests not passing?

1.
After applying only the v56-0001 patch the regression tests are not
passing. It's allowing me to create and move tables within the
'pg_conflict' schema.

--- /home/postgres/oss_postgres_misc/src/test/regress/expected/subscription.out
2026-06-25 14:53:56.238126138 +1200
+++ /home/postgres/oss_postgres_misc/src/test/regress/results/subscription.out
2026-06-25 15:04:33.540620498 +1200
@@ -905,15 +905,12 @@
-- Trying to create a new table manually in the pg_conflict namespace
-- This should fail as the namespace is reserved for conflict logs tables
CREATE TABLE pg_conflict.manual_table (id int);
-ERROR: permission denied for schema pg_conflict
-LINE 1: CREATE TABLE pg_conflict.manual_table (id int);
- ^
-- Moving an existing table into the pg_conflict namespace
-- Users should not be able to move their own tables within this namespace
CREATE TABLE public.test_move (id int);
ALTER TABLE public.test_move SET SCHEMA pg_conflict;
-ERROR: permission denied for schema pg_conflict
DROP TABLE public.test_move;
+ERROR: table "test_move" does not exist
SET client_min_messages = WARNING;
-- Clean up remaining test subscription
ALTER SUBSCRIPTION regress_conflict_log_default DISABLE;
@@ -930,6 +927,9 @@
DROP SUBSCRIPTION regress_conflict_protection_test;
RESET SESSION AUTHORIZATION;
DROP ROLE regress_subscription_user;
+ERROR: role "regress_subscription_user" cannot be dropped because
some objects depend on it
+DETAIL: owner of table pg_conflict.manual_table
+owner of table pg_conflict.test_move
DROP ROLE regress_subscription_user2;
DROP ROLE regress_subscription_user3;
DROP ROLE regress_subscription_user_dummy;

======
src/backend/catalog/namespace.c

CheckSetNamespace:

2.
/*
* Common checks on switching namespaces.
*
- * We complain if either the old or new namespaces is a temporary schema
- * (or temporary toast schema), or if either the old or new namespaces is the
- * TOAST schema.
+ * We complain if either the old or new namespaces is a temporary schema,
+ * temporary toast schema, the TOAST schema, or the conflict schema.
*/
void
CheckSetNamespace(Oid oldNspOid, Oid nspOid)

Function comment no longer agrees with function body. Where are the
conflict schema errors?

======
src/test/regress/sql/subscription.sql

3.
+-- Trying to create a new table manually in the pg_conflict namespace
+-- This should fail as the namespace is reserved for conflict logs tables

Typo: /conflict logs tables/conflict log tables/

======
Kind Regards,
Peter Smith.
Fujitsu Australia

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Kyotaro Horiguchi 2026-06-25 03:45:19 Re: doc: fix pg_stat_autovacuum_scores threshold wording
Previous Message Richard Guo 2026-06-25 03:18:32 Re: Add enable_groupagg GUC parameter to control GroupAggregate usage