The following documentation comment has been logged on the website:
Page: https://www.postgresql.org/docs/17/functions-admin.html
Description:
In this session of
REFERENCE :9.28.10. Advisory Lock Functions
The functions shown in Table 9.106 manage advisory locks. For details about
proper use of these functions, see Section 13.3.5.All these functions are
intended to be used to lock application-defined resources, which can be
identified either by a single 64-bit key value or two 32-bit key values
(note that these two key spaces do not overlap). If another session already
holds a conflicting lock on the same resource identifier, the functions will
either wait until the resource becomes available, or return a false result,
as appropriate for the function. Locks can be either shared or exclusive: a
shared lock does not conflict with other shared locks on the same resource,
only with exclusive locks. Locks can be taken at session level (so that they
are held until released or the session ends) or at transaction level (so
that they are held until the current transaction ends; there is no provision
for manual release).
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. I could have attached snaps of the same but I don't find an
attachment option.