| From: | Konstantin <kostya2702(at)rambler(dot)ru> |
|---|---|
| To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
| Cc: | <pgsql-bugs(at)postgresql(dot)org>, Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com> |
| Subject: | Re: BUG #4648: needless deadlock on tables having foreign-key |
| Date: | 2009-02-12 17:01:28 |
| Message-ID: | 968596861.1234458088.55628440.14090@mcgi68.rambler.ru |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-bugs |
* Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> [Thu, 12 Feb 2009 10:54:34 -0500]:
> Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com> writes:
> > Hmm, the first UPDATE should've blocked already. It should've fired
a
> RI
> > trigger to lock the parent tuple in shared mode, but it looks like
> > that's not happening for some reason.
>
> Read the special code in AfterTriggerSaveEvent. This behavior is
> exactly what is expected --- since the referencing field didn't
> change, only the second update attempt actually fires the trigger.
Why? The second update is identical to the first one.
What is the difference? Such behavior looks very strange.
For example I wrote before to Heikki Linnakangas that I expect
parent tuple will not be lock if
a) foreign key is not modified explicitly at all
b) new value of foreign key is the same as old (not changed).
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tom Lane | 2009-02-12 17:04:32 | Re: BUG #4647: Geometric functions reorder their parameters randomly |
| Previous Message | Bruce Momjian | 2009-02-12 16:54:27 | Re: BUG #4649: unclear in create trigger - complete example |