Tom Lane wrote:
> "Gaetano Mendola" <mendola@bigfoot.com> writes:
>
>>select * from pg_locks where mode = 'ExclusiveLock';
>> relation | database | transaction | pid | mode | granted
>>----------+----------+-------------+-------+---------------+---------
>> | | 2560899 | 20404 | ExclusiveLock | t
>
>
>>ExclusiveLock on what ?
>
>
> Your own transaction, that's what.
>
> If one transaction needs to wait for a specific other transaction, it
> does so by attempting to grab ShareLock on the transaction ID. When
> the other transaction completes (and releases its ExclusiveLock on its
> ID), the waiter is released.
>
> Offhand I think this is only used to implement waits associated with
> SELECT FOR UPDATE row locking --- all other locks are on tables or
> table-like objects.
What about two processes updating the same row? I thougth
PostGres locks the row in this case and this would also
be reflected as an entry in pg_locks with mode
ExclusiveLock.
michael
--
Michael Schulte, Solaris Kernel Development, Sun Microsystems