mirror of
https://github.com/postgres/postgres.git
synced 2025-07-09 22:41:56 +03:00
Allow GRANT/REVOKE to/from more than one user per invocation. Command tag
for GRANT/REVOKE is now just that, not "CHANGE". On the way, migrate some of the aclitem internal representation away from the parser and build a real parse tree instead. Also add some 'const' qualifiers.
This commit is contained in:
@ -39,7 +39,7 @@ SELECT * FROM atest1;
|
||||
(0 rows)
|
||||
|
||||
GRANT ALL ON atest1 TO regressuser2;
|
||||
GRANT SELECT ON atest1 TO regressuser3;
|
||||
GRANT SELECT ON atest1 TO regressuser3, regressuser4;
|
||||
SELECT * FROM atest1;
|
||||
a | b
|
||||
---+---
|
||||
@ -90,7 +90,7 @@ ERROR: LOCK TABLE: permission denied
|
||||
COPY atest2 FROM stdin; -- fail
|
||||
ERROR: atest2: Permission denied.
|
||||
GRANT ALL ON atest1 TO PUBLIC; -- fail
|
||||
ERROR: you do not own class "atest1"
|
||||
ERROR: permission denied
|
||||
-- checks in subquery, both ok
|
||||
SELECT * FROM atest1 WHERE ( b IN ( SELECT col1 FROM atest2 ) );
|
||||
a | b
|
||||
@ -146,6 +146,13 @@ SELECT * FROM atest2 WHERE ( col1 IN ( SELECT b FROM atest1 ) );
|
||||
ERROR: atest2: Permission denied.
|
||||
SET SESSION AUTHORIZATION regressuser4;
|
||||
COPY atest2 FROM stdin; -- ok
|
||||
SELECT * FROM atest1; -- ok
|
||||
a | b
|
||||
---+-----
|
||||
1 | two
|
||||
1 | two
|
||||
(2 rows)
|
||||
|
||||
-- groups
|
||||
SET SESSION AUTHORIZATION regressuser3;
|
||||
CREATE TABLE atest3 (one int, two int, three int);
|
||||
@ -167,8 +174,7 @@ SELECT * FROM atestv1; -- ok
|
||||
1 | two
|
||||
(2 rows)
|
||||
|
||||
GRANT SELECT ON atestv1 TO regressuser4;
|
||||
GRANT SELECT ON atestv3 TO regressuser4;
|
||||
GRANT SELECT ON atestv1, atestv3 TO regressuser4;
|
||||
SET SESSION AUTHORIZATION regressuser4;
|
||||
SELECT * FROM atestv1; -- ok
|
||||
a | b
|
||||
|
@ -34,7 +34,7 @@ REVOKE ALL ON atest1 FROM PUBLIC;
|
||||
SELECT * FROM atest1;
|
||||
|
||||
GRANT ALL ON atest1 TO regressuser2;
|
||||
GRANT SELECT ON atest1 TO regressuser3;
|
||||
GRANT SELECT ON atest1 TO regressuser3, regressuser4;
|
||||
SELECT * FROM atest1;
|
||||
|
||||
CREATE TABLE atest2 (col1 varchar(10), col2 boolean);
|
||||
@ -93,6 +93,7 @@ SET SESSION AUTHORIZATION regressuser4;
|
||||
COPY atest2 FROM stdin; -- ok
|
||||
bar true
|
||||
\.
|
||||
SELECT * FROM atest1; -- ok
|
||||
|
||||
|
||||
-- groups
|
||||
@ -117,8 +118,7 @@ CREATE VIEW atestv2 AS SELECT * FROM atest2;
|
||||
CREATE VIEW atestv3 AS SELECT * FROM atest3; -- ok
|
||||
|
||||
SELECT * FROM atestv1; -- ok
|
||||
GRANT SELECT ON atestv1 TO regressuser4;
|
||||
GRANT SELECT ON atestv3 TO regressuser4;
|
||||
GRANT SELECT ON atestv1, atestv3 TO regressuser4;
|
||||
|
||||
SET SESSION AUTHORIZATION regressuser4;
|
||||
|
||||
|
Reference in New Issue
Block a user