Re: repack: fix a bug to reject deferrable primary key fallback for concurrent mode - Mailing list pgsql-hackers

From Yuchen Li
Subject Re: repack: fix a bug to reject deferrable primary key fallback for concurrent mode
Date
Msg-id 258b6521-100e-48da-a7c4-b069ba3df007@163.com
Whole thread
In response to Re: repack: fix a bug to reject deferrable primary key fallback for concurrent mode  (Antonin Houska <ah@cybertec.at>)
List pgsql-hackers
On 4/21/2026 2:09 PM, Antonin Houska wrote:
> Chao Li <li.evan.chao@gmail.com> wrote:
>
>>> On Apr 20, 2026, at 22:52, Antonin Houska <ah@cybertec.at> wrote:
>>>
>>> I'm just thinking if it's worth a separate error message.
>>> RelationGetIndexList() just ignores the deferrable PK
>>>
>>> if (replident == REPLICA_IDENTITY_DEFAULT && OidIsValid(pkeyIndex) && !pkdeferrable)
>>> relation->rd_replidindex = pkeyIndex;
>>>
>>> and if there's no other suitable index, the result is that there is no
>>> identity index for the table. So the change attached here should be consistent
>>> with this approach.
>> Thanks for your review. I guess you read the v1 patch. In v2, I have switched to use GetRelationIdentityOrPK() that
Zhijiesuggested, which has covered RelationGetIndexList() and all checks, so that code is simplified, and there is no
longera separate error message.
 
> Yes, this looks like the best approach. Sorry for missing v2.
>
The patch looks good to me. Using GetRelationIdentityOrPK() makes the 
check match the intended replica identity semantics more closely, and 
the added regression coverage looks useful.

Regards,
Yuchen Li




pgsql-hackers by date:

Previous
From: Chao Li
Date:
Subject: Re: Cleanup shadows variable warnings, round 1
Next
From: Antonin Houska
Date:
Subject: Re: logical: fix recomputation required LSN on restart_lsn-only advancement