FK deadlock problem addressed

From: Jan Wieck <JanWieck(at)Yahoo(dot)com>
To: PostgreSQL development <pgsql-hackers(at)postgresql(dot)org>, PostgreSQL general <pgsql-general(at)postgresql(dot)org>
Subject: FK deadlock problem addressed
Date: 2003-04-07 20:51:33
Message-ID: 3E91E4D5.888159A5@Yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general pgsql-hackers

On behalf of Liberty RMS I looked at the deadlock problems caused by our
implementation of foreign keys. Thanks to peer review and help from
Stephan Szabo and Tom Lane (Stephan actually had "the" idea) it turned
out that the comment I wrote in December 1999 was wrong.

I just committed a small change to ri_triggers.c that fires the NO
ACTION trigger every time after the SET DEFAULT trigger updated the FK
table. That will catch the case where we delete or update the primary
key consisting of the default values of a foreign key, which was the
reason why we did the check on UPDATE even if the foreign key values
don't change.

Updating a row that has foreign keys without touching the foreign key
values will not try to lock the referenced rows any more. This should
avoid most of the deadlock problems reported (we still have to do the
FOR UPDATE lock if the FK values change until we have a better lock or
lookup mechanism). As a side effect, it increases the performance of
such updates significantly.

I also have patches for this available for 7.3.2 and 7.2.4. I will post
a separate message for discussion if we want to backpatch.

Jan

--
#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me. #
#================================================== JanWieck(at)Yahoo(dot)com #

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Jan Wieck 2003-04-07 20:51:57 Backpatch FK changes to 7.3 and 7.2?
Previous Message Dan Langille 2003-04-07 20:42:04 Re: possible time change issue - known problem?

Browse pgsql-hackers by date

  From Date Subject
Next Message Jan Wieck 2003-04-07 20:51:57 Backpatch FK changes to 7.3 and 7.2?
Previous Message Greg Stark 2003-04-07 20:50:03 Re: No merge sort?