Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wcdFy-003V5l-0D for pgsql-hackers@arkaria.postgresql.org; Thu, 25 Jun 2026 06:08:10 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wcdFw-00454E-35 for pgsql-hackers@arkaria.postgresql.org; Thu, 25 Jun 2026 06:08:08 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wcdFw-004546-1Q for pgsql-hackers@lists.postgresql.org; Thu, 25 Jun 2026 06:08:08 +0000 Received: from mail-pf1-x42c.google.com ([2607:f8b0:4864:20::42c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wcdFu-000000008hY-2z1K for pgsql-hackers@lists.postgresql.org; Thu, 25 Jun 2026 06:08:07 +0000 Received: by mail-pf1-x42c.google.com with SMTP id d2e1a72fcca58-845b733e82cso108300b3a.2 for ; Wed, 24 Jun 2026 23:08:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1782367686; cv=none; d=google.com; s=arc-20260327; b=hhOl/BvXJA8cGsmQF1IRkyce+HIbMRnbaRDjdDlmsDl882m4S1ZVTQ9wOw+UrTuXfs Xcg2+scJ/7Zie0nxCnR/4z4SiwwsYwRYTW7Yt2LJQZvrdL8/1gzlO/4hN2dJQ/sKskWC t7pGL7yYV/ajNSYTfVii+YTjdb3SVz9e/HgMUGr1z8ywAnjIt3oHcyz8NSCZpB04yj9a KqqJCuHwlbGQIUlaAB1laOmAmv6f53rFZp5r1U6mf1k9qjMmSRYcYkaQG4WvBbQ1+qIw 7miusP3gjQV3dvCKQ1KVSRB4GJvcaQBK2sOuxOZGt5cdAQPTcski2q5uA2EJ8ofhJih3 Qfaw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=C//Nhn0eNXo7pGRZ9Zswe28PFBhIkkqGg389ACKwb3k=; fh=PoP3xx136IP5cWGpH2eYR8H6NWj773sOBk4KtbeRg0k=; b=Dr0Q6CMwMoumTy+mKZYmGGrc1jCu2XPvNHfF44+m17PkxDJrLwYUOx7kU1GZzukswV r1H6LlwnZpM2Fv0QO2LTBymW9zoHp171SrzGEUpeaNJxdqDHInD3IaVICwrp4cVQxO8J 2ixhR+L6cpfwTlwlXEV/R64aq476GFsH4mtVZ9KGIu8N5aDw1SEwBxaxo78e55bObhpW 26pP0u+2xGf5NXtUYJy7/JPGs6v/AKGaG5RwwqG6T11a6rxouGS5pPRvr0br08gCPFdi jUipGn8BLcA+9vfy/ZayNYiw1DyE27p22Y/V5/Dc8dDVaYFU6tUCXajoz7XooV3/D6Mq A0Cw==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782367686; x=1782972486; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=C//Nhn0eNXo7pGRZ9Zswe28PFBhIkkqGg389ACKwb3k=; b=NRT9b2Ewl5IqHCfMTcYYSVx3zVA2cWSWZE51L+Y+BUNFFNQ8hwXspEPE/5xfZyCrRp iS6wotkvUKFj/Tvc6M9BJCwbrFG0efHA5ovBN7zo/oaiYFF3LqMB/jk7Rt3kb78KgpAS 0gizDIRXRjIoqRmKcVVM21xVVO/tU87DKiMpzbzjNbzx/nCtwlViu7j8AZhener4ciZI zxW9GUSX/Xad9BdX6k6LKJa9ledmD0o9whTCOuEiy1hDjHr8R8y9663H0t1FqtEpg37Q fm6dW4icFyNSzOpw7BTWdAdEPE+EWd2Encud3cwrrrkrceNadqInxhW+Z9Ox8M2Ek1M8 hVQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782367686; x=1782972486; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=C//Nhn0eNXo7pGRZ9Zswe28PFBhIkkqGg389ACKwb3k=; b=hk/zJSDg4xfkXnMSzcCpZsilVCUZzUvt1zwylIfv52Ym18H6HAM015jplWX4Zd77jE RkN9i0m1/dSG9NHfiwphAjrs0ycKScvJWNgUrVCsR9C+HbDfxR51P/jDTrbrrad8l7nF vIWPR/7eDTVt8kXWsZpWO40R++G560+AXGTturqZxE559fXbCOF+RI6mM+1EfjmLJfBa HCPVrtcqI17D2vkEuYDZaut7M6ich0NmVMCv2iqbFuNcMncVUq8z6NlPmDaxFAOrxhRq 9jexTvrwUflUB3AItcWAY8tZvjps3xpEPOnhGiu/XEkL02PAJ/6hVApcLNkN/cHytk8a o7Fg== X-Forwarded-Encrypted: i=1; AHgh+RqIFol9LOjYjc//kahnpWoLFczMlK41LZu8MlIqbWdvV0xUlJkECYdiRoS0sSso744ehVlRpU0IdMDKWpXq@lists.postgresql.org X-Gm-Message-State: AOJu0YykdMJq/MUp1Y3YtN62hMuCDDof9hnlQHzmQfe+XqqdeKD8bDNT 4PyQBcWbazs/zR3tBct6xufvNXoWX2S4phjjolMWtbcqbBRFnjgMd31Jw0J3TqzdXd64Ca7F1Ud VBwBjBwPG4pUY3iVX9UuNR05lrsUsPYw= X-Gm-Gg: AfdE7cn+N6BJpFhgQLO2Aom+detJxdFZUAJ91kqrWN5QR+Gtf/2ROg6tFjPHMB/zylD b6IfeqC7ETkTFkRM29xAndaJPUTkcdQdSbusV8cktzxyh4sa2FhJqSgLnkMZUmRI85Gy9SYpaDy SyFswA7tWXBIpuPYA2sK7QKAcVtqhdfOZKQ/2BkbC3kl5703o/vbqzvxep82gmqtp0DfoBBiUYF XW8O5BHIgFdYhQAcyAzE/d5mr8lI1kek/1v2yqsdY4g3is+OJ75Pt94MV/C0NWYYPaW4emjqSl/ YZmqFlVOK1Xhrk2xzniBFnWIlAtiKRQaacqASIlwYDHBUjThMiwiPPBYxPpsRh9fLWopwz53rz0 = X-Received: by 2002:a05:6a00:cd5:b0:842:3a98:b34d with SMTP id d2e1a72fcca58-845b3ae01fcmr1578452b3a.31.1782367685572; Wed, 24 Jun 2026 23:08:05 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: shveta malik Date: Thu, 25 Jun 2026 11:37:52 +0530 X-Gm-Features: AVVi8CfNQI18Ago6fu-ux25gVkrFvoRx2IreUkWhwVNDbZ_Ql-U4OUHGHBeteV4 Message-ID: Subject: Re: Proposal: Conflict log history table for Logical Replication To: Dilip Kumar Cc: vignesh C , Amit Kapila , Nisha Moond , Peter Smith , Masahiko Sawada , Bharath Rupireddy , PostgreSQL Hackers , shveta malik Content-Type: text/plain; charset="UTF-8" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk Thanks for v56. A few comments: 0001: 1) + * 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) Shall we remove this comment change now as the check has been removed? 2) + /* + * Conflict log tables are managed by the system to record logical + * replication conflicts. + */ + if (IsConflictLogTableNamespace(RelationGetNamespace(rel))) + ereport(ERROR, + (errcode(ERRCODE_WRONG_OBJECT_TYPE), + errmsg("cannot lock rows in the conflict log table \"%s\"", + RelationGetRelationName(rel)))); postgres=# SELECT * FROM pg_conflict.pg_conflict_log_16387 for UPDATE; ERROR: cannot lock rows in the conflict log table "pg_conflict_log_16387" Why don't we add detail-message here as well, similar to all other cases: errdetail("Conflict log tables are system-managed tables for logical replication conflicts."))); patch-0002 3) + SELECT 'pg_conflict.' || relname INTO tab_name + FROM pg_class c JOIN pg_subscription s ON c.relname = 'pg_conflict_log_' || s.oid + WHERE s.subname = 'regress_conflict_protection_test'; This query runs many times (10-15). Can we save the result into clt_name and use it everywhere? This will reduce test-size. SELECT 'pg_conflict.' || relname AS clt_name FROM pg_class c JOIN pg_subscription s ON c.relname = 'pg_conflict_log_' || s.oid WHERE s.subname = 'regress_conflict_protection_test' \gset DO BEGIN EXECUTE 'CREATE TABLE public.conflict_child () INHERITS (' || :'clt_name' || ')'; .... DO BEGIN EXECUTE 'ALTER TABLE ' || :'clt_name' || ' RENAME COLUMN relname TO new_relname'; --- 4) We can also add a test for paritioning along with inheritance: CREATE TABLE clt_partition PARTITION OF pg_conflict.pg_conflict_log_16387 FOR VALUES FROM ('2026-01-01') TO ('2027-01-01'); thanks Shveta