Re: ExclusiveLock without a relation in pg_locks - Mailing list pgsql-general

From Michael Fuhr
Subject Re: ExclusiveLock without a relation in pg_locks
Date
Msg-id 20060223150529.GA18351@winnie.fuhr.org
Whole thread Raw
In response to ExclusiveLock without a relation in pg_locks  ("Carlos Oliva" <carlos@pbsinet.com>)
Responses Re: ExclusiveLock without a relation in pg_locks  ("Carlos Oliva" <carlos@pbsinet.com>)
List pgsql-general
On Thu, Feb 23, 2006 at 08:54:36AM -0500, Carlos Oliva wrote:
> Would connections to a database require crating an extra ExclusiveLock? We
> have some connections to the database that happen to be "idle in
> transaction" and their pids have a granted "Exclusive Lock" in pg_locks.  I
> cannot discern the tables where the ExclusiveLock is being held because the
> relation field is blank.

http://www.postgresql.org/docs/8.1/interactive/view-pg-locks.html

"Every transaction holds an exclusive lock on its transaction ID
for its entire duration.  If one transaction finds it necessary to
wait specifically for another transaction, it does so by attempting
to acquire share lock on the other transaction ID.  That will succeed
only when the other transaction terminates and releases its locks."

If the relation column is null then you're probably seeing these
transaction ID locks.

> How could I find out the tables that are being locked when I see an
> "ExclusiveLock" in pg_locks.

An easy way to convert a relation's oid to its name is to cast it
to regclass:

SELECT relation::regclass AS relname, * FROM pg_locks;

--
Michael Fuhr

pgsql-general by date:

Previous
From: Martijn van Oosterhout
Date:
Subject: Re: ExclusiveLock without a relation in pg_locks
Next
From: Emi Lu
Date:
Subject: SQL TYPE MAP such as SQL_CHAR, SQL_NUMERIC , etc