Add tests for sequence privileges

This commit is contained in:
Peter Eisentraut 2014-10-22 21:39:07 -04:00
parent 69fed5b26f
commit a5f7d58194
3 changed files with 321 additions and 0 deletions

View File

@ -367,6 +367,41 @@ DROP SEQUENCE seq2;
SELECT lastval();
ERROR: lastval is not yet defined in this session
CREATE USER seq_user;
-- privileges tests
-- nextval
BEGIN;
SET LOCAL SESSION AUTHORIZATION seq_user;
CREATE SEQUENCE seq3;
REVOKE ALL ON seq3 FROM seq_user;
GRANT SELECT ON seq3 TO seq_user;
SELECT nextval('seq3');
ERROR: permission denied for sequence seq3
ROLLBACK;
BEGIN;
SET LOCAL SESSION AUTHORIZATION seq_user;
CREATE SEQUENCE seq3;
REVOKE ALL ON seq3 FROM seq_user;
GRANT UPDATE ON seq3 TO seq_user;
SELECT nextval('seq3');
nextval
---------
1
(1 row)
ROLLBACK;
BEGIN;
SET LOCAL SESSION AUTHORIZATION seq_user;
CREATE SEQUENCE seq3;
REVOKE ALL ON seq3 FROM seq_user;
GRANT USAGE ON seq3 TO seq_user;
SELECT nextval('seq3');
nextval
---------
1
(1 row)
ROLLBACK;
-- currval
BEGIN;
SET LOCAL SESSION AUTHORIZATION seq_user;
CREATE SEQUENCE seq3;
@ -377,8 +412,96 @@ SELECT nextval('seq3');
(1 row)
REVOKE ALL ON seq3 FROM seq_user;
GRANT SELECT ON seq3 TO seq_user;
SELECT currval('seq3');
currval
---------
1
(1 row)
ROLLBACK;
BEGIN;
SET LOCAL SESSION AUTHORIZATION seq_user;
CREATE SEQUENCE seq3;
SELECT nextval('seq3');
nextval
---------
1
(1 row)
REVOKE ALL ON seq3 FROM seq_user;
GRANT UPDATE ON seq3 TO seq_user;
SELECT currval('seq3');
ERROR: permission denied for sequence seq3
ROLLBACK;
BEGIN;
SET LOCAL SESSION AUTHORIZATION seq_user;
CREATE SEQUENCE seq3;
SELECT nextval('seq3');
nextval
---------
1
(1 row)
REVOKE ALL ON seq3 FROM seq_user;
GRANT USAGE ON seq3 TO seq_user;
SELECT currval('seq3');
currval
---------
1
(1 row)
ROLLBACK;
-- lastval
BEGIN;
SET LOCAL SESSION AUTHORIZATION seq_user;
CREATE SEQUENCE seq3;
SELECT nextval('seq3');
nextval
---------
1
(1 row)
REVOKE ALL ON seq3 FROM seq_user;
GRANT SELECT ON seq3 TO seq_user;
SELECT lastval();
lastval
---------
1
(1 row)
ROLLBACK;
BEGIN;
SET LOCAL SESSION AUTHORIZATION seq_user;
CREATE SEQUENCE seq3;
SELECT nextval('seq3');
nextval
---------
1
(1 row)
REVOKE ALL ON seq3 FROM seq_user;
GRANT UPDATE ON seq3 TO seq_user;
SELECT lastval();
ERROR: permission denied for sequence seq3
ROLLBACK;
BEGIN;
SET LOCAL SESSION AUTHORIZATION seq_user;
CREATE SEQUENCE seq3;
SELECT nextval('seq3');
nextval
---------
1
(1 row)
REVOKE ALL ON seq3 FROM seq_user;
GRANT USAGE ON seq3 TO seq_user;
SELECT lastval();
lastval
---------
1
(1 row)
ROLLBACK;
-- Sequences should get wiped out as well:
DROP TABLE serialTest, serialTest2;

View File

@ -367,6 +367,41 @@ DROP SEQUENCE seq2;
SELECT lastval();
ERROR: lastval is not yet defined in this session
CREATE USER seq_user;
-- privileges tests
-- nextval
BEGIN;
SET LOCAL SESSION AUTHORIZATION seq_user;
CREATE SEQUENCE seq3;
REVOKE ALL ON seq3 FROM seq_user;
GRANT SELECT ON seq3 TO seq_user;
SELECT nextval('seq3');
ERROR: permission denied for sequence seq3
ROLLBACK;
BEGIN;
SET LOCAL SESSION AUTHORIZATION seq_user;
CREATE SEQUENCE seq3;
REVOKE ALL ON seq3 FROM seq_user;
GRANT UPDATE ON seq3 TO seq_user;
SELECT nextval('seq3');
nextval
---------
1
(1 row)
ROLLBACK;
BEGIN;
SET LOCAL SESSION AUTHORIZATION seq_user;
CREATE SEQUENCE seq3;
REVOKE ALL ON seq3 FROM seq_user;
GRANT USAGE ON seq3 TO seq_user;
SELECT nextval('seq3');
nextval
---------
1
(1 row)
ROLLBACK;
-- currval
BEGIN;
SET LOCAL SESSION AUTHORIZATION seq_user;
CREATE SEQUENCE seq3;
@ -377,8 +412,96 @@ SELECT nextval('seq3');
(1 row)
REVOKE ALL ON seq3 FROM seq_user;
GRANT SELECT ON seq3 TO seq_user;
SELECT currval('seq3');
currval
---------
1
(1 row)
ROLLBACK;
BEGIN;
SET LOCAL SESSION AUTHORIZATION seq_user;
CREATE SEQUENCE seq3;
SELECT nextval('seq3');
nextval
---------
1
(1 row)
REVOKE ALL ON seq3 FROM seq_user;
GRANT UPDATE ON seq3 TO seq_user;
SELECT currval('seq3');
ERROR: permission denied for sequence seq3
ROLLBACK;
BEGIN;
SET LOCAL SESSION AUTHORIZATION seq_user;
CREATE SEQUENCE seq3;
SELECT nextval('seq3');
nextval
---------
1
(1 row)
REVOKE ALL ON seq3 FROM seq_user;
GRANT USAGE ON seq3 TO seq_user;
SELECT currval('seq3');
currval
---------
1
(1 row)
ROLLBACK;
-- lastval
BEGIN;
SET LOCAL SESSION AUTHORIZATION seq_user;
CREATE SEQUENCE seq3;
SELECT nextval('seq3');
nextval
---------
1
(1 row)
REVOKE ALL ON seq3 FROM seq_user;
GRANT SELECT ON seq3 TO seq_user;
SELECT lastval();
lastval
---------
1
(1 row)
ROLLBACK;
BEGIN;
SET LOCAL SESSION AUTHORIZATION seq_user;
CREATE SEQUENCE seq3;
SELECT nextval('seq3');
nextval
---------
1
(1 row)
REVOKE ALL ON seq3 FROM seq_user;
GRANT UPDATE ON seq3 TO seq_user;
SELECT lastval();
ERROR: permission denied for sequence seq3
ROLLBACK;
BEGIN;
SET LOCAL SESSION AUTHORIZATION seq_user;
CREATE SEQUENCE seq3;
SELECT nextval('seq3');
nextval
---------
1
(1 row)
REVOKE ALL ON seq3 FROM seq_user;
GRANT USAGE ON seq3 TO seq_user;
SELECT lastval();
lastval
---------
1
(1 row)
ROLLBACK;
-- Sequences should get wiped out as well:
DROP TABLE serialTest, serialTest2;

View File

@ -168,11 +168,86 @@ SELECT lastval();
CREATE USER seq_user;
-- privileges tests
-- nextval
BEGIN;
SET LOCAL SESSION AUTHORIZATION seq_user;
CREATE SEQUENCE seq3;
REVOKE ALL ON seq3 FROM seq_user;
GRANT SELECT ON seq3 TO seq_user;
SELECT nextval('seq3');
ROLLBACK;
BEGIN;
SET LOCAL SESSION AUTHORIZATION seq_user;
CREATE SEQUENCE seq3;
REVOKE ALL ON seq3 FROM seq_user;
GRANT UPDATE ON seq3 TO seq_user;
SELECT nextval('seq3');
ROLLBACK;
BEGIN;
SET LOCAL SESSION AUTHORIZATION seq_user;
CREATE SEQUENCE seq3;
REVOKE ALL ON seq3 FROM seq_user;
GRANT USAGE ON seq3 TO seq_user;
SELECT nextval('seq3');
ROLLBACK;
-- currval
BEGIN;
SET LOCAL SESSION AUTHORIZATION seq_user;
CREATE SEQUENCE seq3;
SELECT nextval('seq3');
REVOKE ALL ON seq3 FROM seq_user;
GRANT SELECT ON seq3 TO seq_user;
SELECT currval('seq3');
ROLLBACK;
BEGIN;
SET LOCAL SESSION AUTHORIZATION seq_user;
CREATE SEQUENCE seq3;
SELECT nextval('seq3');
REVOKE ALL ON seq3 FROM seq_user;
GRANT UPDATE ON seq3 TO seq_user;
SELECT currval('seq3');
ROLLBACK;
BEGIN;
SET LOCAL SESSION AUTHORIZATION seq_user;
CREATE SEQUENCE seq3;
SELECT nextval('seq3');
REVOKE ALL ON seq3 FROM seq_user;
GRANT USAGE ON seq3 TO seq_user;
SELECT currval('seq3');
ROLLBACK;
-- lastval
BEGIN;
SET LOCAL SESSION AUTHORIZATION seq_user;
CREATE SEQUENCE seq3;
SELECT nextval('seq3');
REVOKE ALL ON seq3 FROM seq_user;
GRANT SELECT ON seq3 TO seq_user;
SELECT lastval();
ROLLBACK;
BEGIN;
SET LOCAL SESSION AUTHORIZATION seq_user;
CREATE SEQUENCE seq3;
SELECT nextval('seq3');
REVOKE ALL ON seq3 FROM seq_user;
GRANT UPDATE ON seq3 TO seq_user;
SELECT lastval();
ROLLBACK;
BEGIN;
SET LOCAL SESSION AUTHORIZATION seq_user;
CREATE SEQUENCE seq3;
SELECT nextval('seq3');
REVOKE ALL ON seq3 FROM seq_user;
GRANT USAGE ON seq3 TO seq_user;
SELECT lastval();
ROLLBACK;