Re: tablecmds: Open pg_class only when an update is required
Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
From: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
To: Chao Li <li.evan.chao@gmail.com>
Cc: Postgres hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-12-11T13:17:21Z
Lists: pgsql-hackers
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