Possible Bug in relation_open

From: Pradeep Kumar <spradeepkumar29(at)gmail(dot)com>
To: pgsql-hackers(at)postgresql(dot)org
Subject: Possible Bug in relation_open
Date: 2024-05-21 13:58:21
Message-ID: CAJ4xhPnTRF09CUAv78gY+jKjbjhK6pobY+n_szMSZnrADtyoNQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hello Hackers,

If the user tries to open the relation in RangeVar and NoLock mode
calling *table_openrv(relation,
NoLock), *it will internally call relation_openrv()-->relation_open().
In *relation_open()
*we checking the Assert(lockmode >= NoLock && lockmode < MAX_LOCKMODES); ,
here we expecting the lockmode is *NoLock or greater than that*, but in
same function again we checking this assert case Assert(lockmode != NoLock
|| IsBootstrapProcessingMode() || CheckRelationLockedByMe(r,
AccessShareLock, true)); , here we are expecting (*lockmode != NoLock) *,
so why are there two cases that contradict? and What if the user tries to
open the relation in NoLock mode? and that will definitely cause the assert
failure, Suppose the user who writes some extension and reads some relation
oid that is constant, and wants to acquire NoLock?, need some clarification
on this.

Thanks & Regards
Pradeep

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Sandeep Thakkar 2024-05-21 14:12:30 Re: zlib detection in Meson on Windows broken?
Previous Message Justin Pryzby 2024-05-21 13:33:51 Re: ALTER TABLE SET ACCESS METHOD on partitioned tables