| From: | Marko Tiikkaja <marko(dot)tiikkaja(at)cs(dot)helsinki(dot)fi> | 
|---|---|
| To: | Nicolas Barbier <nicolas(dot)barbier(at)gmail(dot)com> | 
| Cc: | Robert Haas <robertmhaas(at)gmail(dot)com>, Dmitry Fefelov <fozzy(at)ac-sw(dot)com>, pgsql-hackers(at)postgresql(dot)org, Jaime Casanova <jaime(at)2ndquadrant(dot)com>, Boszormenyi Zoltan <zb(at)cybertec(dot)at>, Sándor Miglécz <sandor(at)cybertec(dot)at>, Hans-Juergen Schoenig <hs(at)cybertec(dot)at> | 
| Subject: | Re: Partitioning/inherited tables vs FKs | 
| Date: | 2010-05-11 13:11:42 | 
| Message-ID: | 4BE9578E.4060801@cs.helsinki.fi | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-hackers | 
On 5/11/10 4:07 PM +0300, Nicolas Barbier wrote:
> 2010/5/11 Marko Tiikkaja<marko(dot)tiikkaja(at)cs(dot)helsinki(dot)fi>:
>
>> This is getting way off topic, but:
>>
>> On 5/11/10 3:55 PM +0300, Nicolas Barbier wrote:
>>>
>>> T2>    SELECT i FROM a WHERE i = 1 FOR SHARE; -- Lock a with i = 1 FOR
>>> SHARE.
>>>   i
>>> ---
>>>   1
>>> (1 Zeile)
>>>
>>> T2>    SELECT a_id FROM b WHERE a_id = 1; -- Check whether it's got
>>> anything pointing to it.
>>>   a_id
>>> ------
>>> (0 Zeilen)
>>>
>>> T2>    DELETE FROM a WHERE i = 1; -- Nope, so delete a with i = 1 (this
>>> blocks, because T1 is still holding the lock).
>>
>> Obviously you wouldn't delete anything with a SHARE lock.
>
> So where would you put a SELECT ... FOR SHARE to fix the problem? (Per
> "Will SELECT ... FOR SHARE not help?".) I agree that my second FOR
> SHARE doesn't really make a lot of sense, but that doesn't disprove
> the fact that the first FOR SHARE fails to ensure consistency.
I took the "SELECT ... FOR SHARE" suggestion in a more general way, 
suggesting the use of row-level locks.  T2 should be holding an 
exclusive row-level lock (SELECT ... FOR UPDATE) when checking for 
references.
Regards,
Marko Tiikkaja
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Marko Tiikkaja | 2010-05-11 13:19:10 | Re: Partitioning/inherited tables vs FKs | 
| Previous Message | Nicolas Barbier | 2010-05-11 13:07:53 | Re: Partitioning/inherited tables vs FKs |