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 1wDaAD-0038QH-24 for pgsql-hackers@arkaria.postgresql.org; Fri, 17 Apr 2026 03:46:42 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wDaAC-007xyc-2Y for pgsql-hackers@arkaria.postgresql.org; Fri, 17 Apr 2026 03:46:40 +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 1wDaAC-007xyT-1C for pgsql-hackers@lists.postgresql.org; Fri, 17 Apr 2026 03:46:40 +0000 Received: from mail-japaneastazon11010056.outbound.protection.outlook.com ([52.101.229.56] helo=TY3P286CU002.outbound.protection.outlook.com) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wDaAA-00000001PgM-0gds for pgsql-hackers@postgresql.org; Fri, 17 Apr 2026 03:46:39 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Wis3BJQlZyJPpVHKMcATcaYu881P80edoPrJ19D5kuL6TtnDAxau/EJPoMG7K9DVGROximn4zFBnGQp4J4MBSGI4O3KAkG5SvxX9nCx7iOHRnIejoCniMoL4pl9/D6HRfzPQlOe/33p2mTprcIks+jSHkIctSHqfeGT6OnJK7VTvrMU3nRutVFoLk/dy+TGpyfHHpexTHcSm3hrt+YxSOyffgbZS3CgjdfD87qV8nqvxBjPwkDG6YN1ElO4L+kCsomhd9RFJ2INoKuX52+9yr6WFKA99f586BqO9mWERBdCfm5H3Pl8dx+DDVrN6wTSl7AbuQL1zYt1Xn20bf5MKmw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=P+ahSTN7a83PYjtKZRcL+/xlaouoWVEVpgQclmDnBAk=; b=jz/65EP6qDPf14VOIxsGk1iEJEiPCjcZjZMdb1JTT3Ule8hdyr2oBu1y48GUgomtBjGMJt5Sez+A9xQ/BQI0bONnJr1ZygwQ/RyvpP8mVe7z52dBjK2P5U1pDqJI++Fs3+CZ6bz1hTn4fi6rBgzJd8QemMQImkdrBJX15tAZGoicrws5iZgG3+QOPE6FYqrUJUW961DoygS+5Q51s74MIJj9bjkT4UwYUfdE3yDjEb8GxHOqaJiVsqKRsGM7eqVkRjJ/oTjN5GwxPdxLaZhe2DY3MK0g51LIwgJiyVTha0uEX/uUUMb2O/o7KQ1jdVf7tXfnISRTmoeZu5xCmd3RFA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fujitsu.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=P+ahSTN7a83PYjtKZRcL+/xlaouoWVEVpgQclmDnBAk=; b=Inb7NnnGqOvmbmTGZb3w+8dX6rLof/60Z0HprJyZCRAuxv+XBcehv9mfVNJuf7dFegik4NZIu0WCl6dyYn4wF3EXDXPt6nYu0BhOH67nrdrGdZ+r8bBAiZRDPfWlqSn4xDi4AdjI9/m3F9pFCLbmYMU9nQ+tm3+/5NcjoS4uMMCWQFoXy0KOQ5s5YRb6cqDm5d2Kg+axNrxeL8pTOSlUfctAHFI8vJ2LNGCt71Are1HTtC3ylaygzaoo9fM3ulsVm+At4jMPnplLEr/LFgSc9psDTUucGnpgqnXQlqoC5yt/1Uh/LLv6lU/AAFkCXhVAgMU9ZhbAxZczy6eov//88A== Received: from TYRPR01MB14195.jpnprd01.prod.outlook.com (2603:1096:405:222::11) by OSZPR01MB9424.jpnprd01.prod.outlook.com (2603:1096:604:1d8::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Fri, 17 Apr 2026 03:46:32 +0000 Received: from TYRPR01MB14195.jpnprd01.prod.outlook.com ([fe80::72da:8d94:e5fa:dc22]) by TYRPR01MB14195.jpnprd01.prod.outlook.com ([fe80::72da:8d94:e5fa:dc22%5]) with mapi id 15.20.9818.023; Fri, 17 Apr 2026 03:46:31 +0000 From: "Zhijie Hou (Fujitsu)" To: Chao Li , PostgreSQL-development Subject: RE: repack: fix a bug to reject deferrable primary key fallback for concurrent mode Thread-Topic: repack: fix a bug to reject deferrable primary key fallback for concurrent mode Thread-Index: AQHczhtRvv+TP8Cn0kmHQDJVsUrTdbXim/4Q Date: Fri, 17 Apr 2026 03:46:31 +0000 Message-ID: References: <10DD5E13-B45D-44F1-BE08-C63E00ABCAC0@gmail.com> In-Reply-To: <10DD5E13-B45D-44F1-BE08-C63E00ABCAC0@gmail.com> Accept-Language: en-AS, ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_a7295cc1-d279-42ac-ab4d-3b0f4fece050_ActionId=cb90bcaa-21d8-46f0-813c-1ae6f44d8b5f;MSIP_Label_a7295cc1-d279-42ac-ab4d-3b0f4fece050_ContentBits=0;MSIP_Label_a7295cc1-d279-42ac-ab4d-3b0f4fece050_Enabled=true;MSIP_Label_a7295cc1-d279-42ac-ab4d-3b0f4fece050_Method=Standard;MSIP_Label_a7295cc1-d279-42ac-ab4d-3b0f4fece050_Name=FUJITSU-RESTRICTED?;MSIP_Label_a7295cc1-d279-42ac-ab4d-3b0f4fece050_SetDate=2026-04-17T03:41:41Z;MSIP_Label_a7295cc1-d279-42ac-ab4d-3b0f4fece050_SiteId=a19f121d-81e1-4858-a9d8-736e267fd4c7;MSIP_Label_a7295cc1-d279-42ac-ab4d-3b0f4fece050_Tag=10, 3, 0, 1; authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: TYRPR01MB14195:EE_|OSZPR01MB9424:EE_ x-ms-office365-filtering-correlation-id: 62d90a0c-36a3-482d-cba9-08de9c33ea2d x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|376014|1800799024|18002099003|22082099003|56012099003|1580799027|38070700021; x-microsoft-antispam-message-info: qKslN4m3DGWH8SCDV88Zwf5U+mA7MwNUOpRgdujkSjiXR/zM9eLiv2R3Wq6/drHlE4u6xeDY9ea2/2HYNYaImDo1xV387DiwD2F5dmUUzrlLKj6zhjxE/Gt4rTjFl6hk3kR0VZJS/EDldyPZtyOivsQ2moAWZWc234/RGHeyd3nu+GXkRXdLqV+5ap0orMbIEL43SeeNU8aLgTBvBWD/MdIrHPujXovaXeX9omA0AUIp4YOb5lIFXI0cKqP0VbV28XqeKf8GA2M1G7CsCdY+E3GWPQ3LQIuHJgvURz+q0McMS7KlGZzE4dPxgMDYDUhgCzcOigtg3zdDdcaaJfjGiPZx2A35cLJS8j9DSOkKreZ03Opz6AQsHwNeXVl0+YwBiwF7IQ0FiQEBG7YdWVllyZS26f+Rwiqvoba+zro+SxOZIBjTy2hz3BgQgHhcZ8lifxiZC+g/5f82K2eN3Karz/fyBr+7ycf3okVhcytU3/UUyj4WbWFu7zBpK0NcXd52z+yW5F4HxRwx9Wcw7g1yI7hRq9uZhN83bSG3ym/etUaTDdHhvDYLtgkNJ6dZCxV9AJIpOqLGxiBxGB7r8UMFtWqAkjsU4yWoBdTzl38HiaLYtDF/PxVitFecgQRKS37CYgEpOwOliPIyntJ1ofpdFLYmoXVkgwIRezLYTYYH03cDB/zChKwbjvyQOJafIGbWyplz/ZvlCKDUmKV+2KIakQwon8enct1a072Qk1o4vBohi4MWriITSKSe5JxtK17SsBQqp1g7O5NnhPeOyuFjdAg9S8Qx40AiWr8Ao+9IiOiUoqKcnVRUbbnIKD4HPyaR x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:ja;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYRPR01MB14195.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(18002099003)(22082099003)(56012099003)(1580799027)(38070700021);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-2022-jp?B?UFlma1M4MVdaS2Q4NkwwWjZvaTFUN2VOQnM2bXJveVdKSU9aWExHR2Z0?= =?iso-2022-jp?B?VEEwc3hjMDlNS2hSNEh0UXRJQnVWS1dBaTcweVRwMGpLUkxNSTI4S3dJ?= =?iso-2022-jp?B?TzBsSnNPelc0ckhwcnZDTURpZThScDBnSU11Yyswc2lBWXptMW5QVjRF?= =?iso-2022-jp?B?ZXVZcTVEWHN6MkdBWU1uQlRObFdKbGFSS2g1dFJGcjQvOUlKSmZabWNO?= =?iso-2022-jp?B?UEhOUDZDUUlndmFTZ0Y0eUNlN0JFQVRDUDlHRVYrZ1ViZkE2TWh4VzhX?= =?iso-2022-jp?B?aHU0L3IyS3BHZWo0S09GVFlyeEtRRjFPMTdBVGxhSW9KV29ZekdEeEl1?= =?iso-2022-jp?B?NzFnUXRSbHhoQUJvbDM2Unh2bW44UnNkcm9BU1Q3TTROY0hObFRrb0JY?= =?iso-2022-jp?B?QnZ6UTJBMU5zRno4YWVVZW1XNEZnQU1XczAzNWV1NjVoWTRxc2JTbTlT?= =?iso-2022-jp?B?dGxWQnltTUhrVGk1RWJLdUhMNEtpUjRFS1grU2owVVNCazJrS2NGZFcr?= =?iso-2022-jp?B?YmZBaDdSeU9YQis0Qy9KcCt1RVRVa2ZNWkd3Wld1T0lsaDVoSUVOVmtp?= =?iso-2022-jp?B?NFBscGFKb0FlRUJlMTRrM1pickRGQlJRRXg2UVpiOGREb1gyeHdDWWZE?= =?iso-2022-jp?B?RGxEcDMxYmQ1bTZjQWwzUGlBWjJuRjQwTTJiTVc2KzczVlNBZWQwZHR1?= =?iso-2022-jp?B?ZVNaYWFoMmJ1MkN4a20yT05QejVVVFFzeDQ3STRnVU1ZcUpMTW9vT21H?= =?iso-2022-jp?B?S0VFdGZGT2QvR2phSVJyQVplKzNtWit1TlBrbWt5SDYzMkFiaHEvaUMy?= =?iso-2022-jp?B?M1QwYVV0R2YvZXA0dUgrcWc4eEp4WG5XMWl0S0NYaTBzS0RpajVqVmxn?= =?iso-2022-jp?B?d09LZGtua3cxYTRIb2VwcitzcEZYNUs1WUcrdzBJNlZRcHkwenMyY0RK?= =?iso-2022-jp?B?NnpyK1RvdDFLdnRtRHg0SytTZFdUQktxNXAxaVoxeWtXQ0plQjFyVmNa?= =?iso-2022-jp?B?QVBtbnFqY1hhOUJWZEJkOGw2N1ZDTzViMDhZMU10UHorVEprUzV1dzBQ?= =?iso-2022-jp?B?VlBDa1M3Z3ZWV1pKcXg0L0d3UWpaSEhqY3M2ejRCRHVmOVpzVzVGTEhG?= =?iso-2022-jp?B?MHdsZlhHQmlIem9QZDhYQ3JHUGttSHhxSnNLWDZlZzBMWXNLUE5pb1ow?= =?iso-2022-jp?B?OHlvY2ovN1pLUEc5UUxOMis5OFd0WEcySDVxTUFCb1JzY2kyTEVRRHpN?= =?iso-2022-jp?B?Y3lHNkY5ZkpldlNYU2JYWExva2ZuMDlnMStTUEJZTkNVSDMwRWNqa24y?= =?iso-2022-jp?B?WnFhdjhGUDMzSTRPQkJrV0VJbnFuQ1czMTRITkxsSWNjOFNqMXhwWlcy?= =?iso-2022-jp?B?clpYc2RWOHdNZU82K2F2d3RNZ2V6WnN6SlNPNHlRNXJYZUlmMmVQRzk1?= =?iso-2022-jp?B?ZHJBa2ZIV3hQUTRWTHZURE5SczJlRDZFeS9hNDZwai9mbzNJNlE1V08y?= =?iso-2022-jp?B?c2ZITWlhNGdqU01kYS9JYjdUTVNGNC9Yd3RoS2hKWFhoWjZKVWpNNW1l?= =?iso-2022-jp?B?Z2pNeERQaUc0RTFVZTZFRnlGRExTTURhRitQZ2hxbm1MOHE0SlB0WDk1?= =?iso-2022-jp?B?b25uZHhrc3BPNlVtemlWMm5yN0V5OVBESVNkRGhIOEpHUHNEc1E5VUNW?= =?iso-2022-jp?B?Umx6WFM4bk5xKytwYURnS3dyU1FDT0ZrbjVNeEdmcnY3Nyt2dVVaL3ZS?= =?iso-2022-jp?B?ZUNEcEI3Nk02Q21VR25nRDlISVR2K1l6Zk5CWVdWd0Y0YzZuV3RWOUlt?= =?iso-2022-jp?B?NnJ1RjhuM2hhcHlqS3lnbXBFekhuMEh2SXRzUk1RQ1o4UjRmUFE2OGtG?= =?iso-2022-jp?B?M3lmT0FUNVM3cnVrR3JOZnFFeUREbUdBc2x6eEloRVNmalk2VDl1WGJv?= =?iso-2022-jp?B?a2RLeW00ZzBvZ1NITmhMclJNS2lzVXpwQ0dYdUE4T1dvQk5ra1JTWkJS?= =?iso-2022-jp?B?dVhVOERxMWNLamVuR3ppNGs3UytkbkNhcG4zSExFc3lORXFmeXE4NnA5?= =?iso-2022-jp?B?Um15T1dlMEFPaHZIWTFNRCtpaERkUGFHK0hvb0trdWVqT21rL2ZKaGEz?= =?iso-2022-jp?B?VzF6RVB2eElXNDFhQkxFNlJtWEN2K3FHQWVzL0VLVlVTTllmemV4RmxJ?= =?iso-2022-jp?B?T3QxY081bVdJMXY2RFZUL1JxcUlsdXU0MzZtQzVoMGhuRFFtOGt3b2R3?= =?iso-2022-jp?B?R3BhVzQ5bkZlZEdqWTQwdDFGTEJ0eG9DeCsxSUlnZDhrWmlQME9zeEE1?= =?iso-2022-jp?B?TlhOV2ZGcVIwUGVpakQ5Q1pwdmN3UlRrWmNyRi9VZjVlRzB3WnZIdGJv?= =?iso-2022-jp?B?Z1h0TkZnOTFxSHFMbEhocE1xNW9IczlkQ3ljd1RCd3dpRGJ6MGVEQ0tq?= =?iso-2022-jp?B?Mktwbm5uQXc1ckh6QkpOaDlzS3gvcTh4cjRyZmZZVTNjanZkaC9oRXEx?= =?iso-2022-jp?B?WkE4SzBOcEV4b3RHQTdDZm9iYXZFK0p0Sk8rQT09?= Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: OWx7aNfMdKEmWqOxpCkVmaYN5lfYeZkeYS/TfYazgMlhL8lvLFcY24bAJbrcKQcSq0eQx6LZuDiTG9QDVDwdRScMS62Zk9dVM9X7HOinPuVgFsrIIlhDzjTan3P587Qxym61SL001lzm/KB5mGXacIeSGrTGszvDmtLQXuZeaq1YOqxOyjhgV4nvBiFaP524LVBOBgUUo309woZZn/7LHt/ce7lCwat/7EwfxzwXIfT62fonlRxUDdHts6tJXyh+TJ5p7RQKkbgytg3034y3TZehSeFdWiE2XvoWw1+1NJfQTtt0+MAdRkUptQPIOJAzlvX2EmZUifajoswb37GXyg== X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TYRPR01MB14195.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 62d90a0c-36a3-482d-cba9-08de9c33ea2d X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Apr 2026 03:46:31.8935 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a19f121d-81e1-4858-a9d8-736e267fd4c7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: tZiAVhSS7UdXk8tpe1QumjQ7w46rLPFa1PnGvv2bn22ykCqQBSGuwFmVvpDXw+jLq27/5R3FaK5HeN+ngQIR+w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OSZPR01MB9424 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On Friday, April 17, 2026 11:35 AM Chao Li wrote: > I am continuing to test REPACK, and I found another issue. >=20 > In check_concurrent_repack_requirements(), if a table has no replica iden= tity > index, the code falls back to using the primary key if one exists. The pr= oblem is > that a deferrable primary key cannot be used for this purpose. WAL > generation does not consider a deferrable primary key to be a replica ide= ntity, > so concurrent mode may not receive enough old tuple information to replay > concurrent changes. >=20 > I tested this with the following procedure. >=20 ... > With this patch, repack will quickly for the test: > ``` > evantest=3D# repack (concurrently) t; > ERROR: cannot process relation "t" > HINT: Relation "t" has a deferrable primary key. > ``` Good catch! I think we can use the existing API to identify the index, for example: diff --git a/src/backend/commands/repack.c b/src/backend/commands/repack.c index 67364cc60e3..cc30236f493 100644 --- a/src/backend/commands/repack.c +++ b/src/backend/commands/repack.c @@ -62,6 +62,7 @@ #include "miscadmin.h" #include "optimizer/optimizer.h" #include "pgstat.h" +#include "replication/logicalrelation.h" #include "storage/bufmgr.h" #include "storage/lmgr.h" #include "storage/predicate.h" @@ -924,9 +925,7 @@ check_concurrent_repack_requirements(Relation rel, Oid = *ident_idx_p) * repack work with a FULL replica identity; however that requires more * work and is not implemented yet. */ - ident_idx =3D RelationGetReplicaIndex(rel); - if (!OidIsValid(ident_idx) && OidIsValid(rel->rd_pkindex)) - ident_idx =3D rel->rd_pkindex; + ident_idx =3D GetRelationIdentityOrPK(); if (!OidIsValid(ident_idx)) ereport(ERROR, errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), And it would be better to add a test for this. Best Regards, Hou zj