Re: FK locking still too strong

From: Russ Brown <pickscrape(at)gmail(dot)com>
To: Csaba Nagy <nagy(at)ecircle-ag(dot)com>
Cc: Postgres general mailing list <pgsql-general(at)postgresql(dot)org>
Subject: Re: FK locking still too strong
Date: 2006-12-01 14:55:15
Message-ID: 45704253.5080705@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Csaba Nagy wrote:
> Hi all,
>
> While postgres 8.x improved a lot the locking issues related to foreign
> keys, the locking used is still stronger than needed.
>
> The following test case deadlocks on postgres but goes through on
> oracle:
>
> preparation of tables:
>
> create table test1(col_fk integer primary key, col_1 integer);
> create table test2(col_2 integer primary key, col_fk integer references
> test1(col_fk));
> insert into test1 (col_fk, col_1) values (1, 1);
> insert into test1 (col_fk, col_1) values (2, 2);
>
> session_1:
>
> begin;
> update test1 set col_1 = 10 where col_fk = 1;
>
> session_2:
>
> begin;
> insert into test2 (col_2, col_fk) values (1, 2);
>
> session_1:
>
> -- this locks on postgres, does not on oracle
> update test1 set col_1 = 20 where col_fk = 2;
>
> session_2:
>
> -- deadlock on postgres, goes through on oracle
> insert into test2 (col_2, col_fk) values (2, 1);
>

Purely out of interest I just tried this on MySQL 5.0.26 and found
almost the same results. In MySQL session 1 was rolled back, on pg 8.1.5
session 2 was rolled back.

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Richard Huxton 2006-12-01 15:02:54 Re: initdb problem on Windows XP Home
Previous Message George Weaver 2006-12-01 14:51:32 Re: PostgreSQL doesn't accept connections when Windows