CREATE USER regress_dep_user; CREATE USER regress_dep_user2; CREATE USER regress_dep_user3; CREATEGROUP regress_dep_group;
CREATETABLE deptest (f1 serial primarykey, f2 text);
GRANTSELECTONTABLE deptest TOGROUP regress_dep_group; GRANTALLONTABLE deptest TO regress_dep_user, regress_dep_user2;
-- can't drop neither because they have privileges somewhere DROP USER regress_dep_user; DROPGROUP regress_dep_group;
-- if we revoke the privileges we can drop the group REVOKESELECTON deptest FROMGROUP regress_dep_group; DROPGROUP regress_dep_group;
-- can't drop the user if we revoke the privileges partially REVOKESELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, MAINTAIN ON deptest FROM regress_dep_user; DROP USER regress_dep_user;
-- now we are OK to drop him REVOKETRIGGERON deptest FROM regress_dep_user; DROP USER regress_dep_user;
-- we are OK too if we drop the privileges all at once REVOKEALLON deptest FROM regress_dep_user2; DROP USER regress_dep_user2;
-- can't drop the owner of an object -- the error message detail here would include a pg_toast_nnn name that -- is not constant, so suppress it
\set VERBOSITY terse ALTERTABLE deptest OWNER TO regress_dep_user3; DROP USER regress_dep_user3;
\set VERBOSITY default
-- if we drop the object, we can drop the user too DROPTABLE deptest; DROP USER regress_dep_user3;
-- Test DROP OWNED CREATE USER regress_dep_user0; CREATE USER regress_dep_user1; CREATE USER regress_dep_user2; SET SESSION AUTHORIZATION regress_dep_user0; -- permission denied DROP OWNED BY regress_dep_user1; DROP OWNED BY regress_dep_user0, regress_dep_user2;
REASSIGN OWNED BY regress_dep_user0 TO regress_dep_user1;
REASSIGN OWNED BY regress_dep_user1 TO regress_dep_user0; -- this one is allowed DROP OWNED BY regress_dep_user0;
CREATETABLE deptest1 (f1 intunique); GRANTALLON deptest1 TO regress_dep_user1 WITHGRANTOPTION;
SET SESSION AUTHORIZATION regress_dep_user1; CREATETABLE deptest (a serial primarykey, b text); GRANTALLON deptest1 TO regress_dep_user2;
RESET SESSION AUTHORIZATION;
\z deptest1
DROP OWNED BY regress_dep_user1; -- all grants revoked
\z deptest1 -- table was dropped
\d deptest
-- Test REASSIGN OWNED GRANTALLON deptest1 TO regress_dep_user1; GRANTCREATEONDATABASE regression TO regress_dep_user1;
SET SESSION AUTHORIZATION regress_dep_user1; CREATESCHEMA deptest; CREATETABLE deptest (a serial primarykey, b text); ALTERDEFAULT PRIVILEGES FOR ROLE regress_dep_user1 INSCHEMA deptest GRANTALLON TABLES TO regress_dep_user2; CREATE FUNCTION deptest_func() RETURNS void LANGUAGE plpgsql AS $$ BEGIN END; $$; CREATE TYPE deptest_enum AS ENUM ('red'); CREATE TYPE deptest_range AS RANGE (SUBTYPE = int4);
CREATETABLE deptest2 (f1 int); -- make a serial column the hard way CREATE SEQUENCE ss1; ALTERTABLE deptest2 ALTER f1 SETDEFAULT nextval('ss1'); ALTER SEQUENCE ss1 OWNED BY deptest2.f1;
-- When reassigning ownership of a composite type, its pg_class entry -- should match CREATE TYPE deptest_t AS (a int); SELECT typowner = relowner FROM pg_type JOIN pg_class c ON typrelid = c.oid WHERE typname = 'deptest_t';
RESET SESSION AUTHORIZATION;
REASSIGN OWNED BY regress_dep_user1 TO regress_dep_user2;
\dt deptest
SELECT typowner = relowner FROM pg_type JOIN pg_class c ON typrelid = c.oid WHERE typname = 'deptest_t';
-- doesn't work: grant still exists DROP USER regress_dep_user1; DROP OWNED BY regress_dep_user1; DROP USER regress_dep_user1;
DROP USER regress_dep_user2; DROP OWNED BY regress_dep_user2, regress_dep_user0; DROP USER regress_dep_user2; DROP USER regress_dep_user0;
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-08-08)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.