mirror of
https://github.com/postgres/postgres.git
synced 2025-06-16 06:01:02 +03:00
Finish disabling reduced-lock-levels-for-DDL feature.
Previous patch only covered the ALTER TABLE changes, not changes in other commands; and it neglected to revert the documentation changes.
This commit is contained in:
@ -3425,14 +3425,12 @@ ATRewriteTables(List **wqueue, LOCKMODE lockmode)
|
||||
Relation refrel;
|
||||
|
||||
if (rel == NULL)
|
||||
{
|
||||
/* Long since locked, no need for another */
|
||||
rel = heap_open(tab->relid, NoLock);
|
||||
}
|
||||
|
||||
/*
|
||||
* We're adding a trigger to both tables, so the lock level
|
||||
* here should sensibly reflect that.
|
||||
*/
|
||||
refrel = heap_open(con->refrelid, ShareRowExclusiveLock);
|
||||
refrel = heap_open(con->refrelid, RowShareLock);
|
||||
|
||||
validateForeignKeyConstraint(fkconstraint->conname, rel, refrel,
|
||||
con->refindid,
|
||||
@ -5529,7 +5527,14 @@ ATAddForeignKeyConstraint(AlteredTableInfo *tab, Relation rel,
|
||||
Oid indexOid;
|
||||
Oid constrOid;
|
||||
|
||||
pkrel = heap_openrv(fkconstraint->pktable, lockmode);
|
||||
/*
|
||||
* 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.)
|
||||
*/
|
||||
pkrel = heap_openrv(fkconstraint->pktable, AccessExclusiveLock);
|
||||
|
||||
/*
|
||||
* Validity checks (permission checks wait till we have the column
|
||||
|
Reference in New Issue
Block a user