On Wed, Nov 30, 2016 at 6:50 AM, Simon Riggs <simon@2ndquadrant.com> wrote:
> Obtaining a tuple lock requires two separate actions: First we do
> LockTuple() and then we do XactLockTableWait().
I think that's kind of a confusing way of looking at it. LockTuple()
waits for a "tuple" lmgr lock, and XactLockTableWait waits for a
"transaction" lmgr lock. Those two things are both part of a larger
protocol for managing access to what we refer to as tuple locks at the
SQL level. I don't think conflating those things would be a very good
idea, because it's useful to know which phase you're currently doing -
e.g. anybody waiting on a tuple lock is not first in the queue.
--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company