diff options
| author | Tom Lane | 2008-11-04 00:57:19 +0000 |
|---|---|---|
| committer | Tom Lane | 2008-11-04 00:57:19 +0000 |
| commit | 31b15fe8dcd2e026afc0b566f50141ae9a7273b5 (patch) | |
| tree | 05f5e4baa642148d27478d1c71f919ff90d141d1 /src/test | |
| parent | 99e0996284b4c1719f6df990630391f7a91d3495 (diff) | |
Disallow LOCK TABLE outside a transaction block (or function), since this case
almost certainly represents user error. Per a gripe from Sebastian Böhm
and subsequent discussion.
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/regress/expected/privileges.out | 6 | ||||
| -rw-r--r-- | src/test/regress/sql/privileges.sql | 6 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/test/regress/expected/privileges.out b/src/test/regress/expected/privileges.out index 21f9fc26fd9..d1767e95ad4 100644 --- a/src/test/regress/expected/privileges.out +++ b/src/test/regress/expected/privileges.out @@ -45,7 +45,9 @@ INSERT INTO atest1 VALUES (1, 'one'); DELETE FROM atest1; UPDATE atest1 SET a = 1 WHERE b = 'blech'; TRUNCATE atest1; +BEGIN; LOCK atest1 IN ACCESS EXCLUSIVE MODE; +COMMIT; REVOKE ALL ON atest1 FROM PUBLIC; SELECT * FROM atest1; a | b @@ -102,8 +104,10 @@ DELETE FROM atest2; -- fail ERROR: permission denied for relation atest2 TRUNCATE atest2; -- fail ERROR: permission denied for relation atest2 +BEGIN; LOCK atest2 IN ACCESS EXCLUSIVE MODE; -- fail ERROR: permission denied for relation atest2 +COMMIT; COPY atest2 FROM stdin; -- fail ERROR: permission denied for relation atest2 GRANT ALL ON atest1 TO PUBLIC; -- fail @@ -155,7 +159,9 @@ DELETE FROM atest2; -- fail ERROR: permission denied for relation atest2 TRUNCATE atest2; -- fail ERROR: permission denied for relation atest2 +BEGIN; LOCK atest2 IN ACCESS EXCLUSIVE MODE; -- ok +COMMIT; COPY atest2 FROM stdin; -- fail ERROR: permission denied for relation atest2 -- checks in subquery, both fail diff --git a/src/test/regress/sql/privileges.sql b/src/test/regress/sql/privileges.sql index 450d5d9d68d..63532f7e095 100644 --- a/src/test/regress/sql/privileges.sql +++ b/src/test/regress/sql/privileges.sql @@ -48,7 +48,9 @@ INSERT INTO atest1 VALUES (1, 'one'); DELETE FROM atest1; UPDATE atest1 SET a = 1 WHERE b = 'blech'; TRUNCATE atest1; +BEGIN; LOCK atest1 IN ACCESS EXCLUSIVE MODE; +COMMIT; REVOKE ALL ON atest1 FROM PUBLIC; SELECT * FROM atest1; @@ -80,7 +82,9 @@ SELECT * FROM atest1 FOR UPDATE; -- ok SELECT * FROM atest2 FOR UPDATE; -- fail DELETE FROM atest2; -- fail TRUNCATE atest2; -- fail +BEGIN; LOCK atest2 IN ACCESS EXCLUSIVE MODE; -- fail +COMMIT; COPY atest2 FROM stdin; -- fail GRANT ALL ON atest1 TO PUBLIC; -- fail @@ -105,7 +109,9 @@ SELECT * FROM atest1 FOR UPDATE; -- fail SELECT * FROM atest2 FOR UPDATE; -- fail DELETE FROM atest2; -- fail TRUNCATE atest2; -- fail +BEGIN; LOCK atest2 IN ACCESS EXCLUSIVE MODE; -- ok +COMMIT; COPY atest2 FROM stdin; -- fail -- checks in subquery, both fail |
