Re: tablecmds: Open pg_class only when an update is required - Mailing list pgsql-hackers

From Ashutosh Bapat
Subject Re: tablecmds: Open pg_class only when an update is required
Date
Msg-id CAExHW5tvbjm3VeyXK3F4Z_tp9i-9om_U14PaqAQjyGG=6bomdg@mail.gmail.com
Whole thread Raw
In response to tablecmds: Open pg_class only when an update is required  (Chao Li <li.evan.chao@gmail.com>)
Responses Re: tablecmds: Open pg_class only when an update is required
List 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
caseswhere 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



pgsql-hackers by date:

Previous
From: jian he
Date:
Subject: regex Quantifiers {m,n}, m can be negative, n greater than 255
Next
From: Bertrand Drouvot
Date:
Subject: Fix and improve allocation formulas