Mikheev, Vadim wrote:
> > I'm about 99.666667% sure that the lock type choosen in the
> > FOR UPDATE case (line 511 of parse_relation.c) should be
> > RowExclusiveLock instead of RowShareLock. Actually I get
> > "Deadlock risk" debug messages when selecting FOR UPDATE and
> > then really UPDATE.
>
> http://www.postgresql.org/users-lounge/docs/6.5/user/x3116.htm
>
> RowShareLock
> Acquired by SELECT FOR UPDATE and LOCK TABLE for IN ROW SHARE MODE
> statements.
>
> Conflicts with ExclusiveLock and AccessExclusiveLock modes.
Tom,
IIRC the "Deadlock risk" debug message is from you. I think it must get a little smarter. IMHO an application
thatwant's to UPDATE something in a transaction but must SELECT the row(s) first to do it's own calculation on
them, should use SELECT FOR UPDATE. Is that debug output really appropriate in this case (it raises from
RowShareLock to RowExclusiveLock because of the UPDATE of the previous FOR UPDATE selected row)?
Jan
--
#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me. #
#================================================== JanWieck@Yahoo.com #