Re: tablecmds: Open pg_class only when an update is required

Chao Li <li.evan.chao@gmail.com>

From: Chao Li <li.evan.chao@gmail.com>
To: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
Cc: Postgres hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-12-12T03:14:22Z
Lists: pgsql-hackers

> On Dec 11, 2025, at 21:17, Ashutosh Bapat <ashutosh.bapat.oss@gmail.com> wrote:
> 
> On Thu, Dec 11, 2025 at 12:45 PM Chao Li <li.evan.chao@gmail.com> wrote:
>> 
>> Hi Hackers,
>> 
>> I just noticed that relation_mark_replica_identity() unconditionally opened pg_class with RowExclusiveLock even in cases where relreplident has no change, which incurred unnecessary relation opens, lock acquisition.
>> 
>> I just made a tiny refactor that defers opening pg_class until we know that an update to relreplident is required.
> 
> I think we need to lock the relation before fetching the tuple so that
> the field being read remains consistent. Instead of upgrading the lock
> which can deadlock, we get hold of row exclusive lock right at the
> beginning.
> 
> -- 
> Best Wishes,
> Ashutosh Bapat

Hi Ashutosh,

Thanks for the explanation, so I withdraw this patch.

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/