diff options
Diffstat (limited to 'src/test')
-rw-r--r-- | src/test/regress/expected/dependency.out | 20 | ||||
-rw-r--r-- | src/test/regress/expected/privileges.out | 181 | ||||
-rw-r--r-- | src/test/regress/expected/rowsecurity.out | 32 | ||||
-rw-r--r-- | src/test/regress/expected/vacuum.out | 6 | ||||
-rw-r--r-- | src/test/regress/sql/dependency.sql | 2 | ||||
-rw-r--r-- | src/test/regress/sql/privileges.sql | 121 |
6 files changed, 187 insertions, 175 deletions
diff --git a/src/test/regress/expected/dependency.out b/src/test/regress/expected/dependency.out index 81d8376509b..520035f6a0e 100644 --- a/src/test/regress/expected/dependency.out +++ b/src/test/regress/expected/dependency.out @@ -19,7 +19,7 @@ DETAIL: privileges for table deptest REVOKE SELECT ON deptest FROM GROUP regress_dep_group; DROP GROUP regress_dep_group; -- can't drop the user if we revoke the privileges partially -REVOKE SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, VACUUM, ANALYZE ON deptest FROM regress_dep_user; +REVOKE SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, MAINTAIN ON deptest FROM regress_dep_user; DROP USER regress_dep_user; ERROR: role "regress_dep_user" cannot be dropped because some objects depend on it DETAIL: privileges for table deptest @@ -63,21 +63,21 @@ CREATE TABLE deptest (a serial primary key, b text); GRANT ALL ON deptest1 TO regress_dep_user2; RESET SESSION AUTHORIZATION; \z deptest1 - Access privileges - Schema | Name | Type | Access privileges | Column privileges | Policies ---------+----------+-------+--------------------------------------------------------+-------------------+---------- - public | deptest1 | table | regress_dep_user0=arwdDxtvz/regress_dep_user0 +| | - | | | regress_dep_user1=a*r*w*d*D*x*t*v*z*/regress_dep_user0+| | - | | | regress_dep_user2=arwdDxtvz/regress_dep_user1 | | + Access privileges + Schema | Name | Type | Access privileges | Column privileges | Policies +--------+----------+-------+------------------------------------------------------+-------------------+---------- + public | deptest1 | table | regress_dep_user0=arwdDxtm/regress_dep_user0 +| | + | | | regress_dep_user1=a*r*w*d*D*x*t*m*/regress_dep_user0+| | + | | | regress_dep_user2=arwdDxtm/regress_dep_user1 | | (1 row) DROP OWNED BY regress_dep_user1; -- all grants revoked \z deptest1 Access privileges - Schema | Name | Type | Access privileges | Column privileges | Policies ---------+----------+-------+-----------------------------------------------+-------------------+---------- - public | deptest1 | table | regress_dep_user0=arwdDxtvz/regress_dep_user0 | | + Schema | Name | Type | Access privileges | Column privileges | Policies +--------+----------+-------+----------------------------------------------+-------------------+---------- + public | deptest1 | table | regress_dep_user0=arwdDxtm/regress_dep_user0 | | (1 row) -- table was dropped diff --git a/src/test/regress/expected/privileges.out b/src/test/regress/expected/privileges.out index 7933314fd30..169b364b22f 100644 --- a/src/test/regress/expected/privileges.out +++ b/src/test/regress/expected/privileges.out @@ -2570,39 +2570,39 @@ grant select on dep_priv_test to regress_priv_user4 with grant option; set session role regress_priv_user4; grant select on dep_priv_test to regress_priv_user5; \dp dep_priv_test - Access privileges - Schema | Name | Type | Access privileges | Column privileges | Policies ---------+---------------+-------+-------------------------------------------------+-------------------+---------- - public | dep_priv_test | table | regress_priv_user1=arwdDxtvz/regress_priv_user1+| | - | | | regress_priv_user2=r*/regress_priv_user1 +| | - | | | regress_priv_user3=r*/regress_priv_user1 +| | - | | | regress_priv_user4=r*/regress_priv_user2 +| | - | | | regress_priv_user4=r*/regress_priv_user3 +| | - | | | regress_priv_user5=r/regress_priv_user4 | | + Access privileges + Schema | Name | Type | Access privileges | Column privileges | Policies +--------+---------------+-------+------------------------------------------------+-------------------+---------- + public | dep_priv_test | table | regress_priv_user1=arwdDxtm/regress_priv_user1+| | + | | | regress_priv_user2=r*/regress_priv_user1 +| | + | | | regress_priv_user3=r*/regress_priv_user1 +| | + | | | regress_priv_user4=r*/regress_priv_user2 +| | + | | | regress_priv_user4=r*/regress_priv_user3 +| | + | | | regress_priv_user5=r/regress_priv_user4 | | (1 row) set session role regress_priv_user2; revoke select on dep_priv_test from regress_priv_user4 cascade; \dp dep_priv_test - Access privileges - Schema | Name | Type | Access privileges | Column privileges | Policies ---------+---------------+-------+-------------------------------------------------+-------------------+---------- - public | dep_priv_test | table | regress_priv_user1=arwdDxtvz/regress_priv_user1+| | - | | | regress_priv_user2=r*/regress_priv_user1 +| | - | | | regress_priv_user3=r*/regress_priv_user1 +| | - | | | regress_priv_user4=r*/regress_priv_user3 +| | - | | | regress_priv_user5=r/regress_priv_user4 | | + Access privileges + Schema | Name | Type | Access privileges | Column privileges | Policies +--------+---------------+-------+------------------------------------------------+-------------------+---------- + public | dep_priv_test | table | regress_priv_user1=arwdDxtm/regress_priv_user1+| | + | | | regress_priv_user2=r*/regress_priv_user1 +| | + | | | regress_priv_user3=r*/regress_priv_user1 +| | + | | | regress_priv_user4=r*/regress_priv_user3 +| | + | | | regress_priv_user5=r/regress_priv_user4 | | (1 row) set session role regress_priv_user3; revoke select on dep_priv_test from regress_priv_user4 cascade; \dp dep_priv_test - Access privileges - Schema | Name | Type | Access privileges | Column privileges | Policies ---------+---------------+-------+-------------------------------------------------+-------------------+---------- - public | dep_priv_test | table | regress_priv_user1=arwdDxtvz/regress_priv_user1+| | - | | | regress_priv_user2=r*/regress_priv_user1 +| | - | | | regress_priv_user3=r*/regress_priv_user1 | | + Access privileges + Schema | Name | Type | Access privileges | Column privileges | Policies +--------+---------------+-------+------------------------------------------------+-------------------+---------- + public | dep_priv_test | table | regress_priv_user1=arwdDxtm/regress_priv_user1+| | + | | | regress_priv_user2=r*/regress_priv_user1 +| | + | | | regress_priv_user3=r*/regress_priv_user1 | | (1 row) set session role regress_priv_user1; @@ -2849,68 +2849,79 @@ DROP SCHEMA regress_roleoption; DROP ROLE regress_roleoption_protagonist; DROP ROLE regress_roleoption_donor; DROP ROLE regress_roleoption_recipient; --- VACUUM and ANALYZE -CREATE ROLE regress_no_priv; -CREATE ROLE regress_only_vacuum; -CREATE ROLE regress_only_analyze; -CREATE ROLE regress_both; -CREATE ROLE regress_only_vacuum_all IN ROLE pg_vacuum_all_tables; -CREATE ROLE regress_only_analyze_all IN ROLE pg_analyze_all_tables; -CREATE ROLE regress_both_all IN ROLE pg_vacuum_all_tables, pg_analyze_all_tables; -CREATE TABLE vacanalyze_test (a INT); -GRANT VACUUM ON vacanalyze_test TO regress_only_vacuum, regress_both; -GRANT ANALYZE ON vacanalyze_test TO regress_only_analyze, regress_both; -SET ROLE regress_no_priv; -VACUUM vacanalyze_test; -WARNING: permission denied to vacuum "vacanalyze_test", skipping it -ANALYZE vacanalyze_test; -WARNING: permission denied to analyze "vacanalyze_test", skipping it -VACUUM (ANALYZE) vacanalyze_test; -WARNING: permission denied to vacuum "vacanalyze_test", skipping it -RESET ROLE; -SET ROLE regress_only_vacuum; -VACUUM vacanalyze_test; -ANALYZE vacanalyze_test; -WARNING: permission denied to analyze "vacanalyze_test", skipping it -VACUUM (ANALYZE) vacanalyze_test; -WARNING: permission denied to analyze "vacanalyze_test", skipping it -RESET ROLE; -SET ROLE regress_only_analyze; -VACUUM vacanalyze_test; -WARNING: permission denied to vacuum "vacanalyze_test", skipping it -ANALYZE vacanalyze_test; -VACUUM (ANALYZE) vacanalyze_test; -WARNING: permission denied to vacuum "vacanalyze_test", skipping it -RESET ROLE; -SET ROLE regress_both; -VACUUM vacanalyze_test; -ANALYZE vacanalyze_test; -VACUUM (ANALYZE) vacanalyze_test; -RESET ROLE; -SET ROLE regress_only_vacuum_all; -VACUUM vacanalyze_test; -ANALYZE vacanalyze_test; -WARNING: permission denied to analyze "vacanalyze_test", skipping it -VACUUM (ANALYZE) vacanalyze_test; -WARNING: permission denied to analyze "vacanalyze_test", skipping it +-- MAINTAIN +CREATE ROLE regress_no_maintain; +CREATE ROLE regress_maintain; +CREATE ROLE regress_maintain_all IN ROLE pg_maintain; +CREATE TABLE maintain_test (a INT); +CREATE INDEX ON maintain_test (a); +GRANT MAINTAIN ON maintain_test TO regress_maintain; +CREATE MATERIALIZED VIEW refresh_test AS SELECT 1; +GRANT MAINTAIN ON refresh_test TO regress_maintain; +CREATE SCHEMA reindex_test; +-- negative tests; should fail +SET ROLE regress_no_maintain; +VACUUM maintain_test; +WARNING: permission denied to vacuum "maintain_test", skipping it +ANALYZE maintain_test; +WARNING: permission denied to analyze "maintain_test", skipping it +VACUUM (ANALYZE) maintain_test; +WARNING: permission denied to vacuum "maintain_test", skipping it +CLUSTER maintain_test USING maintain_test_a_idx; +ERROR: must be owner of table maintain_test +REFRESH MATERIALIZED VIEW refresh_test; +ERROR: must be owner of table refresh_test +REINDEX TABLE maintain_test; +ERROR: must be owner of table maintain_test +REINDEX INDEX maintain_test_a_idx; +ERROR: must be owner of index maintain_test_a_idx +REINDEX SCHEMA reindex_test; +ERROR: must be owner of schema reindex_test +BEGIN; +LOCK TABLE maintain_test IN ACCESS SHARE MODE; +ERROR: permission denied for table maintain_test +COMMIT; +BEGIN; +LOCK TABLE maintain_test IN ACCESS EXCLUSIVE MODE; +ERROR: permission denied for table maintain_test +COMMIT; RESET ROLE; -SET ROLE regress_only_analyze_all; -VACUUM vacanalyze_test; -WARNING: permission denied to vacuum "vacanalyze_test", skipping it -ANALYZE vacanalyze_test; -VACUUM (ANALYZE) vacanalyze_test; -WARNING: permission denied to vacuum "vacanalyze_test", skipping it +SET ROLE regress_maintain; +VACUUM maintain_test; +ANALYZE maintain_test; +VACUUM (ANALYZE) maintain_test; +CLUSTER maintain_test USING maintain_test_a_idx; +REFRESH MATERIALIZED VIEW refresh_test; +REINDEX TABLE maintain_test; +REINDEX INDEX maintain_test_a_idx; +REINDEX SCHEMA reindex_test; +ERROR: must be owner of schema reindex_test +BEGIN; +LOCK TABLE maintain_test IN ACCESS SHARE MODE; +COMMIT; +BEGIN; +LOCK TABLE maintain_test IN ACCESS EXCLUSIVE MODE; +COMMIT; RESET ROLE; -SET ROLE regress_both_all; -VACUUM vacanalyze_test; -ANALYZE vacanalyze_test; -VACUUM (ANALYZE) vacanalyze_test; +SET ROLE regress_maintain_all; +VACUUM maintain_test; +ANALYZE maintain_test; +VACUUM (ANALYZE) maintain_test; +CLUSTER maintain_test USING maintain_test_a_idx; +REFRESH MATERIALIZED VIEW refresh_test; +REINDEX TABLE maintain_test; +REINDEX INDEX maintain_test_a_idx; +REINDEX SCHEMA reindex_test; +BEGIN; +LOCK TABLE maintain_test IN ACCESS SHARE MODE; +COMMIT; +BEGIN; +LOCK TABLE maintain_test IN ACCESS EXCLUSIVE MODE; +COMMIT; RESET ROLE; -DROP TABLE vacanalyze_test; -DROP ROLE regress_no_priv; -DROP ROLE regress_only_vacuum; -DROP ROLE regress_only_analyze; -DROP ROLE regress_both; -DROP ROLE regress_only_vacuum_all; -DROP ROLE regress_only_analyze_all; -DROP ROLE regress_both_all; +DROP TABLE maintain_test; +DROP MATERIALIZED VIEW refresh_test; +DROP SCHEMA reindex_test; +DROP ROLE regress_no_maintain; +DROP ROLE regress_maintain; +DROP ROLE regress_maintain_all; diff --git a/src/test/regress/expected/rowsecurity.out b/src/test/regress/expected/rowsecurity.out index 31509a0a6f8..a415ad168c5 100644 --- a/src/test/regress/expected/rowsecurity.out +++ b/src/test/regress/expected/rowsecurity.out @@ -94,22 +94,22 @@ CREATE POLICY p1r ON document AS RESTRICTIVE TO regress_rls_dave USING (cid <> 44); \dp Access privileges - Schema | Name | Type | Access privileges | Column privileges | Policies ---------------------+----------+-------+-----------------------------------------------+-------------------+-------------------------------------------- - regress_rls_schema | category | table | regress_rls_alice=arwdDxtvz/regress_rls_alice+| | - | | | =arwdDxtvz/regress_rls_alice | | - regress_rls_schema | document | table | regress_rls_alice=arwdDxtvz/regress_rls_alice+| | p1: + - | | | =arwdDxtvz/regress_rls_alice | | (u): (dlevel <= ( SELECT uaccount.seclv + - | | | | | FROM uaccount + - | | | | | WHERE (uaccount.pguser = CURRENT_USER)))+ - | | | | | p2r (RESTRICTIVE): + - | | | | | (u): ((cid <> 44) AND (cid < 50)) + - | | | | | to: regress_rls_dave + - | | | | | p1r (RESTRICTIVE): + - | | | | | (u): (cid <> 44) + - | | | | | to: regress_rls_dave - regress_rls_schema | uaccount | table | regress_rls_alice=arwdDxtvz/regress_rls_alice+| | - | | | =r/regress_rls_alice | | + Schema | Name | Type | Access privileges | Column privileges | Policies +--------------------+----------+-------+----------------------------------------------+-------------------+-------------------------------------------- + regress_rls_schema | category | table | regress_rls_alice=arwdDxtm/regress_rls_alice+| | + | | | =arwdDxtm/regress_rls_alice | | + regress_rls_schema | document | table | regress_rls_alice=arwdDxtm/regress_rls_alice+| | p1: + + | | | =arwdDxtm/regress_rls_alice | | (u): (dlevel <= ( SELECT uaccount.seclv + + | | | | | FROM uaccount + + | | | | | WHERE (uaccount.pguser = CURRENT_USER)))+ + | | | | | p2r (RESTRICTIVE): + + | | | | | (u): ((cid <> 44) AND (cid < 50)) + + | | | | | to: regress_rls_dave + + | | | | | p1r (RESTRICTIVE): + + | | | | | (u): (cid <> 44) + + | | | | | to: regress_rls_dave + regress_rls_schema | uaccount | table | regress_rls_alice=arwdDxtm/regress_rls_alice+| | + | | | =r/regress_rls_alice | | (3 rows) \d document diff --git a/src/test/regress/expected/vacuum.out b/src/test/regress/expected/vacuum.out index e0fb21b36e5..0035d158b7b 100644 --- a/src/test/regress/expected/vacuum.out +++ b/src/test/regress/expected/vacuum.out @@ -336,9 +336,7 @@ WARNING: permission denied to analyze "vacowned_part2", skipping it VACUUM (ANALYZE) vacowned_parted; WARNING: permission denied to vacuum "vacowned_parted", skipping it WARNING: permission denied to vacuum "vacowned_part1", skipping it -WARNING: permission denied to analyze "vacowned_part1", skipping it WARNING: permission denied to vacuum "vacowned_part2", skipping it -WARNING: permission denied to analyze "vacowned_part2", skipping it VACUUM (ANALYZE) vacowned_part1; WARNING: permission denied to vacuum "vacowned_part1", skipping it VACUUM (ANALYZE) vacowned_part2; @@ -360,7 +358,6 @@ ANALYZE vacowned_part2; WARNING: permission denied to analyze "vacowned_part2", skipping it VACUUM (ANALYZE) vacowned_parted; WARNING: permission denied to vacuum "vacowned_part2", skipping it -WARNING: permission denied to analyze "vacowned_part2", skipping it VACUUM (ANALYZE) vacowned_part1; VACUUM (ANALYZE) vacowned_part2; WARNING: permission denied to vacuum "vacowned_part2", skipping it @@ -383,7 +380,6 @@ WARNING: permission denied to analyze "vacowned_part2", skipping it VACUUM (ANALYZE) vacowned_parted; WARNING: permission denied to vacuum "vacowned_parted", skipping it WARNING: permission denied to vacuum "vacowned_part2", skipping it -WARNING: permission denied to analyze "vacowned_part2", skipping it VACUUM (ANALYZE) vacowned_part1; VACUUM (ANALYZE) vacowned_part2; WARNING: permission denied to vacuum "vacowned_part2", skipping it @@ -408,9 +404,7 @@ ANALYZE vacowned_part2; WARNING: permission denied to analyze "vacowned_part2", skipping it VACUUM (ANALYZE) vacowned_parted; WARNING: permission denied to vacuum "vacowned_part1", skipping it -WARNING: permission denied to analyze "vacowned_part1", skipping it WARNING: permission denied to vacuum "vacowned_part2", skipping it -WARNING: permission denied to analyze "vacowned_part2", skipping it VACUUM (ANALYZE) vacowned_part1; WARNING: permission denied to vacuum "vacowned_part1", skipping it VACUUM (ANALYZE) vacowned_part2; diff --git a/src/test/regress/sql/dependency.sql b/src/test/regress/sql/dependency.sql index 99b905a938a..8d74ed7122c 100644 --- a/src/test/regress/sql/dependency.sql +++ b/src/test/regress/sql/dependency.sql @@ -21,7 +21,7 @@ REVOKE SELECT ON deptest FROM GROUP regress_dep_group; DROP GROUP regress_dep_group; -- can't drop the user if we revoke the privileges partially -REVOKE SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, VACUUM, ANALYZE ON deptest FROM regress_dep_user; +REVOKE SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, MAINTAIN ON deptest FROM regress_dep_user; DROP USER regress_dep_user; -- now we are OK to drop him diff --git a/src/test/regress/sql/privileges.sql b/src/test/regress/sql/privileges.sql index 1bcaaba4eba..b2db1c6dd56 100644 --- a/src/test/regress/sql/privileges.sql +++ b/src/test/regress/sql/privileges.sql @@ -1853,66 +1853,73 @@ DROP ROLE regress_roleoption_protagonist; DROP ROLE regress_roleoption_donor; DROP ROLE regress_roleoption_recipient; --- VACUUM and ANALYZE -CREATE ROLE regress_no_priv; -CREATE ROLE regress_only_vacuum; -CREATE ROLE regress_only_analyze; -CREATE ROLE regress_both; -CREATE ROLE regress_only_vacuum_all IN ROLE pg_vacuum_all_tables; -CREATE ROLE regress_only_analyze_all IN ROLE pg_analyze_all_tables; -CREATE ROLE regress_both_all IN ROLE pg_vacuum_all_tables, pg_analyze_all_tables; - -CREATE TABLE vacanalyze_test (a INT); -GRANT VACUUM ON vacanalyze_test TO regress_only_vacuum, regress_both; -GRANT ANALYZE ON vacanalyze_test TO regress_only_analyze, regress_both; - -SET ROLE regress_no_priv; -VACUUM vacanalyze_test; -ANALYZE vacanalyze_test; -VACUUM (ANALYZE) vacanalyze_test; -RESET ROLE; - -SET ROLE regress_only_vacuum; -VACUUM vacanalyze_test; -ANALYZE vacanalyze_test; -VACUUM (ANALYZE) vacanalyze_test; -RESET ROLE; - -SET ROLE regress_only_analyze; -VACUUM vacanalyze_test; -ANALYZE vacanalyze_test; -VACUUM (ANALYZE) vacanalyze_test; -RESET ROLE; - -SET ROLE regress_both; -VACUUM vacanalyze_test; -ANALYZE vacanalyze_test; -VACUUM (ANALYZE) vacanalyze_test; -RESET ROLE; - -SET ROLE regress_only_vacuum_all; -VACUUM vacanalyze_test; -ANALYZE vacanalyze_test; -VACUUM (ANALYZE) vacanalyze_test; +-- MAINTAIN +CREATE ROLE regress_no_maintain; +CREATE ROLE regress_maintain; +CREATE ROLE regress_maintain_all IN ROLE pg_maintain; + +CREATE TABLE maintain_test (a INT); +CREATE INDEX ON maintain_test (a); +GRANT MAINTAIN ON maintain_test TO regress_maintain; +CREATE MATERIALIZED VIEW refresh_test AS SELECT 1; +GRANT MAINTAIN ON refresh_test TO regress_maintain; +CREATE SCHEMA reindex_test; + +-- negative tests; should fail +SET ROLE regress_no_maintain; +VACUUM maintain_test; +ANALYZE maintain_test; +VACUUM (ANALYZE) maintain_test; +CLUSTER maintain_test USING maintain_test_a_idx; +REFRESH MATERIALIZED VIEW refresh_test; +REINDEX TABLE maintain_test; +REINDEX INDEX maintain_test_a_idx; +REINDEX SCHEMA reindex_test; +BEGIN; +LOCK TABLE maintain_test IN ACCESS SHARE MODE; +COMMIT; +BEGIN; +LOCK TABLE maintain_test IN ACCESS EXCLUSIVE MODE; +COMMIT; RESET ROLE; -SET ROLE regress_only_analyze_all; -VACUUM vacanalyze_test; -ANALYZE vacanalyze_test; -VACUUM (ANALYZE) vacanalyze_test; +SET ROLE regress_maintain; +VACUUM maintain_test; +ANALYZE maintain_test; +VACUUM (ANALYZE) maintain_test; +CLUSTER maintain_test USING maintain_test_a_idx; +REFRESH MATERIALIZED VIEW refresh_test; +REINDEX TABLE maintain_test; +REINDEX INDEX maintain_test_a_idx; +REINDEX SCHEMA reindex_test; +BEGIN; +LOCK TABLE maintain_test IN ACCESS SHARE MODE; +COMMIT; +BEGIN; +LOCK TABLE maintain_test IN ACCESS EXCLUSIVE MODE; +COMMIT; RESET ROLE; -SET ROLE regress_both_all; -VACUUM vacanalyze_test; -ANALYZE vacanalyze_test; -VACUUM (ANALYZE) vacanalyze_test; +SET ROLE regress_maintain_all; +VACUUM maintain_test; +ANALYZE maintain_test; +VACUUM (ANALYZE) maintain_test; +CLUSTER maintain_test USING maintain_test_a_idx; +REFRESH MATERIALIZED VIEW refresh_test; +REINDEX TABLE maintain_test; +REINDEX INDEX maintain_test_a_idx; +REINDEX SCHEMA reindex_test; +BEGIN; +LOCK TABLE maintain_test IN ACCESS SHARE MODE; +COMMIT; +BEGIN; +LOCK TABLE maintain_test IN ACCESS EXCLUSIVE MODE; +COMMIT; RESET ROLE; -DROP TABLE vacanalyze_test; -DROP ROLE regress_no_priv; -DROP ROLE regress_only_vacuum; -DROP ROLE regress_only_analyze; -DROP ROLE regress_both; -DROP ROLE regress_only_vacuum_all; -DROP ROLE regress_only_analyze_all; -DROP ROLE regress_both_all; +DROP TABLE maintain_test; +DROP MATERIALIZED VIEW refresh_test; +DROP SCHEMA reindex_test; +DROP ROLE regress_no_maintain; +DROP ROLE regress_maintain; +DROP ROLE regress_maintain_all; |