diff options
Diffstat (limited to 'src/backend/commands/lockcmds.c')
-rw-r--r-- | src/backend/commands/lockcmds.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/backend/commands/lockcmds.c b/src/backend/commands/lockcmds.c index 043d68ac7a0..dbf33e957f4 100644 --- a/src/backend/commands/lockcmds.c +++ b/src/backend/commands/lockcmds.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/lockcmds.c,v 1.25 2009/06/11 14:48:56 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/commands/lockcmds.c,v 1.26 2009/12/19 01:32:34 sriggs Exp $ * *------------------------------------------------------------------------- */ @@ -47,6 +47,16 @@ LockTableCommand(LockStmt *lockstmt) reloid = RangeVarGetRelid(relation, false); + /* + * During recovery we only accept these variations: + * LOCK TABLE foo IN ACCESS SHARE MODE + * LOCK TABLE foo IN ROW SHARE MODE + * LOCK TABLE foo IN ROW EXCLUSIVE MODE + * This test must match the restrictions defined in LockAcquire() + */ + if (lockstmt->mode > RowExclusiveLock) + PreventCommandDuringRecovery(); + LockTableRecurse(reloid, relation, lockstmt->mode, lockstmt->nowait, recurse); } |