@ -3293,3 +3293,30 @@ DROP SCHEMA reindex_test;
DROP ROLE regress_no_maintain;
DROP ROLE regress_maintain;
DROP ROLE regress_maintain_all;
-- grantor selection
CREATE ROLE regress_grantor1;
CREATE ROLE regress_grantor2 ROLE regress_grantor1;
CREATE ROLE regress_grantor3;
CREATE TABLE grantor_test1 ();
CREATE TABLE grantor_test2 ();
CREATE TABLE grantor_test3 ();
GRANT SELECT ON grantor_test2 TO regress_grantor1 WITH GRANT OPTION;
GRANT SELECT, UPDATE ON grantor_test3 TO regress_grantor2 WITH GRANT OPTION;
SET ROLE regress_grantor1;
GRANT SELECT, UPDATE ON grantor_test1 TO regress_grantor3;
ERROR: permission denied for table grantor_test1
GRANT SELECT, UPDATE ON grantor_test2 TO regress_grantor3;
WARNING: not all privileges were granted for "grantor_test2"
GRANT SELECT, UPDATE ON grantor_test3 TO regress_grantor3;
RESET ROLE;
SELECT * FROM information_schema.table_privileges t
WHERE grantor LIKE 'regress_grantor%' ORDER BY ROW(t.*);
grantor | grantee | table_catalog | table_schema | table_name | privilege_type | is_grantable | with_hierarchy
------------------+------------------+---------------+--------------+---------------+----------------+--------------+----------------
regress_grantor1 | regress_grantor3 | regression | public | grantor_test2 | SELECT | NO | YES
regress_grantor2 | regress_grantor3 | regression | public | grantor_test3 | SELECT | NO | YES
regress_grantor2 | regress_grantor3 | regression | public | grantor_test3 | UPDATE | NO | NO
(3 rows)
DROP TABLE grantor_test1, grantor_test2, grantor_test3;
DROP ROLE regress_grantor1, regress_grantor2, regress_grantor3;