These are the  commands I have run in the terminal
psql (17.0)
Type "help" for help.

postgres=# SELECT pg_advisory_lock_shared(1001); //initialising the shared
lock
 pg_advisory_lock_shared
-------------------------

(1 row)

postgres=# SELECT pg_advisory_lock(1001); //exclusive lock
 pg_advisory_lock
------------------

(1 row)....
now i have logged in session 2 to check whether both locks are granted
without conflict, heres the output :
postgres=# SELECT * FROM pg_locks WHERE locktype = 'advisory';
 locktype | database | relation | page | tuple | virtualxid | transactionid
| classid | objid | objsubid | virtualtransaction | pid  |     mode      |
granted | fastpath | waitstart
----------+----------+----------+------+-------+------------+---------------+---------+-------+----------+--------------------+------+---------------+---------+----------+-----------
 advisory |        5 |          |      |       |            |
|       0 |  1001 |        1 | 3/0                | 7126 | ShareLock     |
t       | f        |
 advisory |        5 |          |      |       |            |
|       0 |  1001 |        1 | 3/0                | 7126 | ExclusiveLock |
t       | f        |
(2 rows)

UNDERSTANDING : The same resource ( oid and pid) are allocate to both
exclusive and shared lock . I am also attaching the screenshots.

On Tue, 11 Feb 2025 at 14:01, Álvaro Herrera <alvhe...@alvh.no-ip.org>
wrote:

> Hello
>
> On 2025-Feb-11, PG Doc comments form wrote:
>
> > ISSUE : According to the above paragraph , locks should either be shared
> or
> > exclusive. But when I tried assigning a shared lock and exclusive lock
> > without unlock of the shared lock , it doesn't show a conflict. I think
> this
> > may contradict what is said in above paragraph of documentation. Can you
> > enlighten me more on this , regarding the understanding if my assumption
> is
> > wrong.
>
> Your understanding is correct -- there should be a conflict.  The lack
> of one suggests that you're using the lock interfaces incorrectly.
> Please show the exact commands you're running.  Maybe there's something
> about the documentation text that needs to be made clearer.
>
> > I could have attached snaps of the same but I don't find an
> > attachment option.
>
> True.  You can reply to this email with attachments.  However, I would
> instead suggest to copy and paste text from terminal window(s), rather
> than screenshots.
>
> --
> Álvaro Herrera         PostgreSQL Developer  —
> https://www.EnterpriseDB.com/
>

Reply via email to