Hi
everyone!
I have a web
application that uses Postgresql on backend. The application performs selects,
updates, inserts, and deletes by using Hibernate. Tables
contain indexed
fields. When I run the following query, SELECT * FROM pg_locks, it shows that
some transactions place
ExclusiveLock:
relation | database | transaction |
pid
| mode
|
granted
----------+----------+-------------+-------+-----------------+---------
16757 | 16976 | | 22770 | AccessShareLock | t
| | 17965163 | 22770 | ExclusiveLock | t
----------+----------+-------------+-------+-----------------+---------
16757 | 16976 | | 22770 | AccessShareLock | t
| | 17965163 | 22770 | ExclusiveLock | t
According to
postgres documentation, all update operations place ROW EXCLUSIVE MODE locks, and
EXCLUSIVE MODE is not automatically
acquired by any postgres SQL command. So, which command
places
ExclusiveLock??? I suspect that
indexes can account for this behaviour, but couldn't find anything in the
docs.
I am also wondering why there is nothing shown in
"relation" column. I think it is supposed to display a table or index id or any
other
object that is being
locked.
Thanks for
help!
Dennis