[pgsql-jp: 40168] Re: 子テーブルの2回目の更新でデッドロック
Takahiro Itagaki
itagaki.takahiro @ oss.ntt.co.jp
2010年 2月 15日 (月) 11:30:05 JST
HIRATSUKA Sadao <sh2 @ pop01.odn.ne.jp> wrote:
> 外部キー制約のあるテーブルで、子テーブルの2回目の更新で
> デッドロックが発生するという事象に悩まされています。
> PostgreSQL 8.4.2です。
手元で試してみましたが、
・8.3.9 → OK
・8.4.2 → デッドロック
・8.5dev → OK
という結果でした。8.4 にだけ存在するバグのように見えます。
私のほうでも原因までは追いきれていないのですが、
本家にバグ報告をされてはいかがでしょうか?
# 8.4 でエンバグされたことより、8.5dev でなぜか直っていることのほうが
# 微妙に気持ち悪いです…
> create table parent (k int primary key, d varchar(10));
> create table child (k int primary key, f int, d varchar(10),
> constraint child_fk1 foreign key (f) references parent (k));
> 以下のシーケンスで2回目の更新がブロックされています。
>
> client1> begin;
> client1> update parent set d = 'a2' where k = 1;
>
> client2> begin;
> client2> update child set d = 'aa2' where k = 11; -- ok
> client2> update child set d = 'aa3' where k = 11; -- blocked
------------------------------------------------------------
NTT オープンソース ソフトウェア センタ
板垣貴裕 <itagaki.takahiro @ oss.ntt.co.jp>
pgsql-jp メーリングリストの案内