1
0
mirror of https://github.com/postgres/postgres.git synced 2025-06-14 18:42:34 +03:00

Adjust CREATE TRIGGER and ALTER TABLE ... ADD FOREIGN KEY to acquire

ExclusiveLock rather than AccessExclusiveLock. This will allow concurrent
SELECT queries to proceed on the table. Per discussion with Andrew at
SuperNews.
This commit is contained in:
Neil Conway
2005-03-23 07:44:57 +00:00
parent ac323044cf
commit f30c76ce8d
3 changed files with 21 additions and 13 deletions

View File

@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.148 2005/03/20 22:00:52 tgl Exp $
* $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.149 2005/03/23 07:44:57 neilc Exp $
*
*-------------------------------------------------------------------------
*/
@ -3829,13 +3829,13 @@ ATAddForeignKeyConstraint(AlteredTableInfo *tab, Relation rel,
Oid constrOid;
/*
* Grab an exclusive lock on the pk table, so that someone doesn't
* delete rows out from under us. (Although a lesser lock would do for
* that purpose, we'll need exclusive lock anyway to add triggers to
* the pk table; trying to start with a lesser lock will just create a
* risk of deadlock.)
* Grab a lock on the pk table, so that someone doesn't delete
* rows out from under us. We will eventually need to add triggers
* to the table, at which point we'll need to an ExclusiveLock --
* therefore we grab an ExclusiveLock now to prevent possible
* deadlock.
*/
pkrel = heap_openrv(fkconstraint->pktable, AccessExclusiveLock);
pkrel = heap_openrv(fkconstraint->pktable, ExclusiveLock);
/*
* Validity and permissions checks