Question about RI checks

From: Nick Barnes <nickbarnes01(at)gmail(dot)com>
To: pgsql-hackers(at)postgresql(dot)org
Subject: Question about RI checks
Date: 2014-10-16 13:51:29
Message-ID: CAG+WGGnMCPzXhMxOCx9b887xbFMY-=n0NOSjoaHNknsnuSFKSg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

One of the queries in ri_triggers.c has be a little baffled.

For (relatively) obvious reasons, a FK insert triggers a SELECT 1 FROM
pk_rel ... FOR KEY SHARE.
For not-so-obvious reasons, a PK delete triggers a SELECT 1 FROM fk_rel ...
FOR KEY SHARE.

I can't see what the lock on fk_rel achieves. Both operations are already
contending for the lock on the PK row, which seems like enough to cover
every eventuality.

And even if the lock serves a purpose, KEY SHARE is an odd choice, since
the referencing field is, in general, not a "key" in this sense.

Can anyone provide an explanation / counterexample?

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Robert Haas 2014-10-16 13:53:24 Re: Hide 'Execution time' in EXPLAIN (COSTS OFF)
Previous Message Stephen Frost 2014-10-16 13:49:08 Re: Review of GetUserId() Usage