1CREATE OR REPLACE FUNCTION chkrolattr() 2 RETURNS TABLE ("role" name, rolekeyword text, canlogin bool, replication bool) 3 AS $$ 4SELECT r.rolname, v.keyword, r.rolcanlogin, r.rolreplication 5 FROM pg_roles r 6 JOIN (VALUES(CURRENT_USER, 'current_user'), 7 (SESSION_USER, 'session_user'), 8 ('current_user', '-'), 9 ('session_user', '-'), 10 ('Public', '-'), 11 ('None', '-')) 12 AS v(uname, keyword) 13 ON (r.rolname = v.uname) 14 ORDER BY 1; 15$$ LANGUAGE SQL; 16 17CREATE OR REPLACE FUNCTION chksetconfig() 18 RETURNS TABLE (db name, "role" name, rolkeyword text, setconfig text[]) 19 AS $$ 20SELECT COALESCE(d.datname, 'ALL'), COALESCE(r.rolname, 'ALL'), 21 COALESCE(v.keyword, '-'), s.setconfig 22 FROM pg_db_role_setting s 23 LEFT JOIN pg_roles r ON (r.oid = s.setrole) 24 LEFT JOIN pg_database d ON (d.oid = s.setdatabase) 25 LEFT JOIN (VALUES(CURRENT_USER, 'current_user'), 26 (SESSION_USER, 'session_user')) 27 AS v(uname, keyword) 28 ON (r.rolname = v.uname) 29 WHERE (r.rolname) IN ('Public', 'current_user', 'regress_testrol1', 'regress_testrol2') 30ORDER BY 1, 2; 31$$ LANGUAGE SQL; 32 33CREATE OR REPLACE FUNCTION chkumapping() 34 RETURNS TABLE (umname name, umserver name, umoptions text[]) 35 AS $$ 36SELECT r.rolname, s.srvname, m.umoptions 37 FROM pg_user_mapping m 38 LEFT JOIN pg_roles r ON (r.oid = m.umuser) 39 JOIN pg_foreign_server s ON (s.oid = m.umserver) 40 ORDER BY 2; 41$$ LANGUAGE SQL; 42 43CREATE ROLE "Public"; 44CREATE ROLE "None"; 45CREATE ROLE "current_user"; 46CREATE ROLE "session_user"; 47CREATE ROLE "user"; 48 49CREATE ROLE current_user; -- error 50CREATE ROLE current_role; -- error 51CREATE ROLE session_user; -- error 52CREATE ROLE user; -- error 53CREATE ROLE all; -- error 54 55CREATE ROLE public; -- error 56CREATE ROLE "public"; -- error 57CREATE ROLE none; -- error 58CREATE ROLE "none"; -- error 59 60CREATE ROLE pg_abc; -- error 61CREATE ROLE "pg_abc"; -- error 62CREATE ROLE pg_abcdef; -- error 63CREATE ROLE "pg_abcdef"; -- error 64 65CREATE ROLE regress_testrol0 SUPERUSER LOGIN; 66CREATE ROLE regress_testrolx SUPERUSER LOGIN; 67CREATE ROLE regress_testrol2 SUPERUSER; 68CREATE ROLE regress_testrol1 SUPERUSER LOGIN IN ROLE regress_testrol2; 69 70\c - 71SET SESSION AUTHORIZATION regress_testrol1; 72SET ROLE regress_testrol2; 73 74-- ALTER ROLE 75BEGIN; 76SELECT * FROM chkrolattr(); 77ALTER ROLE CURRENT_USER WITH REPLICATION; 78SELECT * FROM chkrolattr(); 79ALTER ROLE "current_user" WITH REPLICATION; 80SELECT * FROM chkrolattr(); 81ALTER ROLE SESSION_USER WITH REPLICATION; 82SELECT * FROM chkrolattr(); 83ALTER ROLE "session_user" WITH REPLICATION; 84SELECT * FROM chkrolattr(); 85ALTER USER "Public" WITH REPLICATION; 86ALTER USER "None" WITH REPLICATION; 87SELECT * FROM chkrolattr(); 88ALTER USER regress_testrol1 WITH NOREPLICATION; 89ALTER USER regress_testrol2 WITH NOREPLICATION; 90SELECT * FROM chkrolattr(); 91ROLLBACK; 92 93ALTER ROLE USER WITH LOGIN; -- error 94ALTER ROLE CURRENT_ROLE WITH LOGIN; --error 95ALTER ROLE ALL WITH REPLICATION; -- error 96ALTER ROLE SESSION_ROLE WITH NOREPLICATION; -- error 97ALTER ROLE PUBLIC WITH NOREPLICATION; -- error 98ALTER ROLE "public" WITH NOREPLICATION; -- error 99ALTER ROLE NONE WITH NOREPLICATION; -- error 100ALTER ROLE "none" WITH NOREPLICATION; -- error 101ALTER ROLE nonexistent WITH NOREPLICATION; -- error 102 103-- ALTER USER 104BEGIN; 105SELECT * FROM chkrolattr(); 106ALTER USER CURRENT_USER WITH REPLICATION; 107SELECT * FROM chkrolattr(); 108ALTER USER "current_user" WITH REPLICATION; 109SELECT * FROM chkrolattr(); 110ALTER USER SESSION_USER WITH REPLICATION; 111SELECT * FROM chkrolattr(); 112ALTER USER "session_user" WITH REPLICATION; 113SELECT * FROM chkrolattr(); 114ALTER USER "Public" WITH REPLICATION; 115ALTER USER "None" WITH REPLICATION; 116SELECT * FROM chkrolattr(); 117ALTER USER regress_testrol1 WITH NOREPLICATION; 118ALTER USER regress_testrol2 WITH NOREPLICATION; 119SELECT * FROM chkrolattr(); 120ROLLBACK; 121 122ALTER USER USER WITH LOGIN; -- error 123ALTER USER CURRENT_ROLE WITH LOGIN; -- error 124ALTER USER ALL WITH REPLICATION; -- error 125ALTER USER SESSION_ROLE WITH NOREPLICATION; -- error 126ALTER USER PUBLIC WITH NOREPLICATION; -- error 127ALTER USER "public" WITH NOREPLICATION; -- error 128ALTER USER NONE WITH NOREPLICATION; -- error 129ALTER USER "none" WITH NOREPLICATION; -- error 130ALTER USER nonexistent WITH NOREPLICATION; -- error 131 132-- ALTER ROLE SET/RESET 133SELECT * FROM chksetconfig(); 134ALTER ROLE CURRENT_USER SET application_name to 'FOO'; 135ALTER ROLE SESSION_USER SET application_name to 'BAR'; 136ALTER ROLE "current_user" SET application_name to 'FOOFOO'; 137ALTER ROLE "Public" SET application_name to 'BARBAR'; 138ALTER ROLE ALL SET application_name to 'SLAP'; 139SELECT * FROM chksetconfig(); 140ALTER ROLE regress_testrol1 SET application_name to 'SLAM'; 141SELECT * FROM chksetconfig(); 142ALTER ROLE CURRENT_USER RESET application_name; 143ALTER ROLE SESSION_USER RESET application_name; 144ALTER ROLE "current_user" RESET application_name; 145ALTER ROLE "Public" RESET application_name; 146ALTER ROLE ALL RESET application_name; 147SELECT * FROM chksetconfig(); 148 149 150ALTER ROLE CURRENT_ROLE SET application_name to 'BAZ'; -- error 151ALTER ROLE USER SET application_name to 'BOOM'; -- error 152ALTER ROLE PUBLIC SET application_name to 'BOMB'; -- error 153ALTER ROLE nonexistent SET application_name to 'BOMB'; -- error 154 155-- ALTER USER SET/RESET 156SELECT * FROM chksetconfig(); 157ALTER USER CURRENT_USER SET application_name to 'FOO'; 158ALTER USER SESSION_USER SET application_name to 'BAR'; 159ALTER USER "current_user" SET application_name to 'FOOFOO'; 160ALTER USER "Public" SET application_name to 'BARBAR'; 161ALTER USER ALL SET application_name to 'SLAP'; 162SELECT * FROM chksetconfig(); 163ALTER USER regress_testrol1 SET application_name to 'SLAM'; 164SELECT * FROM chksetconfig(); 165ALTER USER CURRENT_USER RESET application_name; 166ALTER USER SESSION_USER RESET application_name; 167ALTER USER "current_user" RESET application_name; 168ALTER USER "Public" RESET application_name; 169ALTER USER ALL RESET application_name; 170SELECT * FROM chksetconfig(); 171 172 173ALTER USER CURRENT_USER SET application_name to 'BAZ'; -- error 174ALTER USER USER SET application_name to 'BOOM'; -- error 175ALTER USER PUBLIC SET application_name to 'BOMB'; -- error 176ALTER USER NONE SET application_name to 'BOMB'; -- error 177ALTER USER nonexistent SET application_name to 'BOMB'; -- error 178 179-- CREATE SCHEMA 180set client_min_messages to error; 181CREATE SCHEMA newschema1 AUTHORIZATION CURRENT_USER; 182CREATE SCHEMA newschema2 AUTHORIZATION "current_user"; 183CREATE SCHEMA newschema3 AUTHORIZATION SESSION_USER; 184CREATE SCHEMA newschema4 AUTHORIZATION regress_testrolx; 185CREATE SCHEMA newschema5 AUTHORIZATION "Public"; 186 187CREATE SCHEMA newschema6 AUTHORIZATION USER; -- error 188CREATE SCHEMA newschema6 AUTHORIZATION CURRENT_ROLE; -- error 189CREATE SCHEMA newschema6 AUTHORIZATION PUBLIC; -- error 190CREATE SCHEMA newschema6 AUTHORIZATION "public"; -- error 191CREATE SCHEMA newschema6 AUTHORIZATION NONE; -- error 192CREATE SCHEMA newschema6 AUTHORIZATION nonexistent; -- error 193 194SELECT n.nspname, r.rolname FROM pg_namespace n 195 JOIN pg_roles r ON (r.oid = n.nspowner) 196 WHERE n.nspname LIKE 'newschema_' ORDER BY 1; 197 198CREATE SCHEMA IF NOT EXISTS newschema1 AUTHORIZATION CURRENT_USER; 199CREATE SCHEMA IF NOT EXISTS newschema2 AUTHORIZATION "current_user"; 200CREATE SCHEMA IF NOT EXISTS newschema3 AUTHORIZATION SESSION_USER; 201CREATE SCHEMA IF NOT EXISTS newschema4 AUTHORIZATION regress_testrolx; 202CREATE SCHEMA IF NOT EXISTS newschema5 AUTHORIZATION "Public"; 203 204CREATE SCHEMA IF NOT EXISTS newschema6 AUTHORIZATION USER; -- error 205CREATE SCHEMA IF NOT EXISTS newschema6 AUTHORIZATION CURRENT_ROLE; -- error 206CREATE SCHEMA IF NOT EXISTS newschema6 AUTHORIZATION PUBLIC; -- error 207CREATE SCHEMA IF NOT EXISTS newschema6 AUTHORIZATION "public"; -- error 208CREATE SCHEMA IF NOT EXISTS newschema6 AUTHORIZATION NONE; -- error 209CREATE SCHEMA IF NOT EXISTS newschema6 AUTHORIZATION nonexistent; -- error 210 211SELECT n.nspname, r.rolname FROM pg_namespace n 212 JOIN pg_roles r ON (r.oid = n.nspowner) 213 WHERE n.nspname LIKE 'newschema_' ORDER BY 1; 214 215-- ALTER TABLE OWNER TO 216\c - 217SET SESSION AUTHORIZATION regress_testrol0; 218set client_min_messages to error; 219CREATE TABLE testtab1 (a int); 220CREATE TABLE testtab2 (a int); 221CREATE TABLE testtab3 (a int); 222CREATE TABLE testtab4 (a int); 223CREATE TABLE testtab5 (a int); 224CREATE TABLE testtab6 (a int); 225 226\c - 227SET SESSION AUTHORIZATION regress_testrol1; 228SET ROLE regress_testrol2; 229 230ALTER TABLE testtab1 OWNER TO CURRENT_USER; 231ALTER TABLE testtab2 OWNER TO "current_user"; 232ALTER TABLE testtab3 OWNER TO SESSION_USER; 233ALTER TABLE testtab4 OWNER TO regress_testrolx; 234ALTER TABLE testtab5 OWNER TO "Public"; 235 236ALTER TABLE testtab6 OWNER TO CURRENT_ROLE; -- error 237ALTER TABLE testtab6 OWNER TO USER; --error 238ALTER TABLE testtab6 OWNER TO PUBLIC; -- error 239ALTER TABLE testtab6 OWNER TO "public"; -- error 240ALTER TABLE testtab6 OWNER TO nonexistent; -- error 241 242SELECT c.relname, r.rolname 243 FROM pg_class c JOIN pg_roles r ON (r.oid = c.relowner) 244 WHERE relname LIKE 'testtab_' 245 ORDER BY 1; 246 247-- ALTER TABLE, VIEW, MATERIALIZED VIEW, FOREIGN TABLE, SEQUENCE are 248-- changed their owner in the same way. 249 250-- ALTER AGGREGATE 251\c - 252SET SESSION AUTHORIZATION regress_testrol0; 253CREATE AGGREGATE testagg1(int2) (SFUNC = int2_sum, STYPE = int8); 254CREATE AGGREGATE testagg2(int2) (SFUNC = int2_sum, STYPE = int8); 255CREATE AGGREGATE testagg3(int2) (SFUNC = int2_sum, STYPE = int8); 256CREATE AGGREGATE testagg4(int2) (SFUNC = int2_sum, STYPE = int8); 257CREATE AGGREGATE testagg5(int2) (SFUNC = int2_sum, STYPE = int8); 258CREATE AGGREGATE testagg5(int2) (SFUNC = int2_sum, STYPE = int8); 259CREATE AGGREGATE testagg6(int2) (SFUNC = int2_sum, STYPE = int8); 260CREATE AGGREGATE testagg7(int2) (SFUNC = int2_sum, STYPE = int8); 261CREATE AGGREGATE testagg8(int2) (SFUNC = int2_sum, STYPE = int8); 262CREATE AGGREGATE testagg9(int2) (SFUNC = int2_sum, STYPE = int8); 263 264\c - 265SET SESSION AUTHORIZATION regress_testrol1; 266SET ROLE regress_testrol2; 267 268ALTER AGGREGATE testagg1(int2) OWNER TO CURRENT_USER; 269ALTER AGGREGATE testagg2(int2) OWNER TO "current_user"; 270ALTER AGGREGATE testagg3(int2) OWNER TO SESSION_USER; 271ALTER AGGREGATE testagg4(int2) OWNER TO regress_testrolx; 272ALTER AGGREGATE testagg5(int2) OWNER TO "Public"; 273 274ALTER AGGREGATE testagg5(int2) OWNER TO CURRENT_ROLE; -- error 275ALTER AGGREGATE testagg5(int2) OWNER TO USER; -- error 276ALTER AGGREGATE testagg5(int2) OWNER TO PUBLIC; -- error 277ALTER AGGREGATE testagg5(int2) OWNER TO "public"; -- error 278ALTER AGGREGATE testagg5(int2) OWNER TO nonexistent; -- error 279 280SELECT p.proname, r.rolname 281 FROM pg_proc p JOIN pg_roles r ON (r.oid = p.proowner) 282 WHERE proname LIKE 'testagg_' 283 ORDER BY 1; 284 285-- CREATE USER MAPPING 286CREATE FOREIGN DATA WRAPPER test_wrapper; 287CREATE SERVER sv1 FOREIGN DATA WRAPPER test_wrapper; 288CREATE SERVER sv2 FOREIGN DATA WRAPPER test_wrapper; 289CREATE SERVER sv3 FOREIGN DATA WRAPPER test_wrapper; 290CREATE SERVER sv4 FOREIGN DATA WRAPPER test_wrapper; 291CREATE SERVER sv5 FOREIGN DATA WRAPPER test_wrapper; 292CREATE SERVER sv6 FOREIGN DATA WRAPPER test_wrapper; 293CREATE SERVER sv7 FOREIGN DATA WRAPPER test_wrapper; 294CREATE SERVER sv8 FOREIGN DATA WRAPPER test_wrapper; 295CREATE SERVER sv9 FOREIGN DATA WRAPPER test_wrapper; 296 297CREATE USER MAPPING FOR CURRENT_USER SERVER sv1 OPTIONS (user 'CURRENT_USER'); 298CREATE USER MAPPING FOR "current_user" SERVER sv2 OPTIONS (user '"current_user"'); 299CREATE USER MAPPING FOR USER SERVER sv3 OPTIONS (user 'USER'); 300CREATE USER MAPPING FOR "user" SERVER sv4 OPTIONS (user '"USER"'); 301CREATE USER MAPPING FOR SESSION_USER SERVER sv5 OPTIONS (user 'SESSION_USER'); 302CREATE USER MAPPING FOR PUBLIC SERVER sv6 OPTIONS (user 'PUBLIC'); 303CREATE USER MAPPING FOR "Public" SERVER sv7 OPTIONS (user '"Public"'); 304CREATE USER MAPPING FOR regress_testrolx SERVER sv8 OPTIONS (user 'regress_testrolx'); 305 306CREATE USER MAPPING FOR CURRENT_ROLE SERVER sv9 307 OPTIONS (user 'CURRENT_ROLE'); -- error 308CREATE USER MAPPING FOR nonexistent SERVER sv9 309 OPTIONS (user 'nonexistent'); -- error; 310 311SELECT * FROM chkumapping(); 312 313-- ALTER USER MAPPING 314ALTER USER MAPPING FOR CURRENT_USER SERVER sv1 315 OPTIONS (SET user 'CURRENT_USER_alt'); 316ALTER USER MAPPING FOR "current_user" SERVER sv2 317 OPTIONS (SET user '"current_user"_alt'); 318ALTER USER MAPPING FOR USER SERVER sv3 319 OPTIONS (SET user 'USER_alt'); 320ALTER USER MAPPING FOR "user" SERVER sv4 321 OPTIONS (SET user '"user"_alt'); 322ALTER USER MAPPING FOR SESSION_USER SERVER sv5 323 OPTIONS (SET user 'SESSION_USER_alt'); 324ALTER USER MAPPING FOR PUBLIC SERVER sv6 325 OPTIONS (SET user 'public_alt'); 326ALTER USER MAPPING FOR "Public" SERVER sv7 327 OPTIONS (SET user '"Public"_alt'); 328ALTER USER MAPPING FOR regress_testrolx SERVER sv8 329 OPTIONS (SET user 'regress_testrolx_alt'); 330 331ALTER USER MAPPING FOR CURRENT_ROLE SERVER sv9 332 OPTIONS (SET user 'CURRENT_ROLE_alt'); 333ALTER USER MAPPING FOR nonexistent SERVER sv9 334 OPTIONS (SET user 'nonexistent_alt'); -- error 335 336SELECT * FROM chkumapping(); 337 338-- DROP USER MAPPING 339DROP USER MAPPING FOR CURRENT_USER SERVER sv1; 340DROP USER MAPPING FOR "current_user" SERVER sv2; 341DROP USER MAPPING FOR USER SERVER sv3; 342DROP USER MAPPING FOR "user" SERVER sv4; 343DROP USER MAPPING FOR SESSION_USER SERVER sv5; 344DROP USER MAPPING FOR PUBLIC SERVER sv6; 345DROP USER MAPPING FOR "Public" SERVER sv7; 346DROP USER MAPPING FOR regress_testrolx SERVER sv8; 347 348DROP USER MAPPING FOR CURRENT_ROLE SERVER sv9; -- error 349DROP USER MAPPING FOR nonexistent SERVER sv; -- error 350SELECT * FROM chkumapping(); 351 352CREATE USER MAPPING FOR CURRENT_USER SERVER sv1 OPTIONS (user 'CURRENT_USER'); 353CREATE USER MAPPING FOR "current_user" SERVER sv2 OPTIONS (user '"current_user"'); 354CREATE USER MAPPING FOR USER SERVER sv3 OPTIONS (user 'USER'); 355CREATE USER MAPPING FOR "user" SERVER sv4 OPTIONS (user '"USER"'); 356CREATE USER MAPPING FOR SESSION_USER SERVER sv5 OPTIONS (user 'SESSION_USER'); 357CREATE USER MAPPING FOR PUBLIC SERVER sv6 OPTIONS (user 'PUBLIC'); 358CREATE USER MAPPING FOR "Public" SERVER sv7 OPTIONS (user '"Public"'); 359CREATE USER MAPPING FOR regress_testrolx SERVER sv8 OPTIONS (user 'regress_testrolx'); 360SELECT * FROM chkumapping(); 361 362-- DROP USER MAPPING IF EXISTS 363DROP USER MAPPING IF EXISTS FOR CURRENT_USER SERVER sv1; 364SELECT * FROM chkumapping(); 365DROP USER MAPPING IF EXISTS FOR "current_user" SERVER sv2; 366SELECT * FROM chkumapping(); 367DROP USER MAPPING IF EXISTS FOR USER SERVER sv3; 368SELECT * FROM chkumapping(); 369DROP USER MAPPING IF EXISTS FOR "user" SERVER sv4; 370SELECT * FROM chkumapping(); 371DROP USER MAPPING IF EXISTS FOR SESSION_USER SERVER sv5; 372SELECT * FROM chkumapping(); 373DROP USER MAPPING IF EXISTS FOR PUBLIC SERVER sv6; 374SELECT * FROM chkumapping(); 375DROP USER MAPPING IF EXISTS FOR "Public" SERVER sv7; 376SELECT * FROM chkumapping(); 377DROP USER MAPPING IF EXISTS FOR regress_testrolx SERVER sv8; 378SELECT * FROM chkumapping(); 379 380DROP USER MAPPING IF EXISTS FOR CURRENT_ROLE SERVER sv9; --error 381DROP USER MAPPING IF EXISTS FOR nonexistent SERVER sv9; -- error 382 383-- GRANT/REVOKE 384GRANT regress_testrol0 TO pg_signal_backend; -- success 385 386SET ROLE pg_signal_backend; --success 387RESET ROLE; 388CREATE SCHEMA test_schema AUTHORIZATION pg_signal_backend; --success 389SET ROLE regress_testrol2; 390 391UPDATE pg_proc SET proacl = null WHERE proname LIKE 'testagg_'; 392SELECT proname, proacl FROM pg_proc WHERE proname LIKE 'testagg_'; 393 394REVOKE ALL PRIVILEGES ON FUNCTION testagg1(int2) FROM PUBLIC; 395REVOKE ALL PRIVILEGES ON FUNCTION testagg2(int2) FROM PUBLIC; 396REVOKE ALL PRIVILEGES ON FUNCTION testagg3(int2) FROM PUBLIC; 397REVOKE ALL PRIVILEGES ON FUNCTION testagg4(int2) FROM PUBLIC; 398REVOKE ALL PRIVILEGES ON FUNCTION testagg5(int2) FROM PUBLIC; 399REVOKE ALL PRIVILEGES ON FUNCTION testagg6(int2) FROM PUBLIC; 400REVOKE ALL PRIVILEGES ON FUNCTION testagg7(int2) FROM PUBLIC; 401REVOKE ALL PRIVILEGES ON FUNCTION testagg8(int2) FROM PUBLIC; 402 403GRANT ALL PRIVILEGES ON FUNCTION testagg1(int2) TO PUBLIC; 404GRANT ALL PRIVILEGES ON FUNCTION testagg2(int2) TO CURRENT_USER; 405GRANT ALL PRIVILEGES ON FUNCTION testagg3(int2) TO "current_user"; 406GRANT ALL PRIVILEGES ON FUNCTION testagg4(int2) TO SESSION_USER; 407GRANT ALL PRIVILEGES ON FUNCTION testagg5(int2) TO "Public"; 408GRANT ALL PRIVILEGES ON FUNCTION testagg6(int2) TO regress_testrolx; 409GRANT ALL PRIVILEGES ON FUNCTION testagg7(int2) TO "public"; 410GRANT ALL PRIVILEGES ON FUNCTION testagg8(int2) 411 TO current_user, public, regress_testrolx; 412 413SELECT proname, proacl FROM pg_proc WHERE proname LIKE 'testagg_'; 414 415GRANT ALL PRIVILEGES ON FUNCTION testagg9(int2) TO CURRENT_ROLE; --error 416GRANT ALL PRIVILEGES ON FUNCTION testagg9(int2) TO USER; --error 417GRANT ALL PRIVILEGES ON FUNCTION testagg9(int2) TO NONE; --error 418GRANT ALL PRIVILEGES ON FUNCTION testagg9(int2) TO "none"; --error 419 420SELECT proname, proacl FROM pg_proc WHERE proname LIKE 'testagg_'; 421 422REVOKE ALL PRIVILEGES ON FUNCTION testagg1(int2) FROM PUBLIC; 423REVOKE ALL PRIVILEGES ON FUNCTION testagg2(int2) FROM CURRENT_USER; 424REVOKE ALL PRIVILEGES ON FUNCTION testagg3(int2) FROM "current_user"; 425REVOKE ALL PRIVILEGES ON FUNCTION testagg4(int2) FROM SESSION_USER; 426REVOKE ALL PRIVILEGES ON FUNCTION testagg5(int2) FROM "Public"; 427REVOKE ALL PRIVILEGES ON FUNCTION testagg6(int2) FROM regress_testrolx; 428REVOKE ALL PRIVILEGES ON FUNCTION testagg7(int2) FROM "public"; 429REVOKE ALL PRIVILEGES ON FUNCTION testagg8(int2) 430 FROM current_user, public, regress_testrolx; 431 432SELECT proname, proacl FROM pg_proc WHERE proname LIKE 'testagg_'; 433 434REVOKE ALL PRIVILEGES ON FUNCTION testagg9(int2) FROM CURRENT_ROLE; --error 435REVOKE ALL PRIVILEGES ON FUNCTION testagg9(int2) FROM USER; --error 436REVOKE ALL PRIVILEGES ON FUNCTION testagg9(int2) FROM NONE; --error 437REVOKE ALL PRIVILEGES ON FUNCTION testagg9(int2) FROM "none"; --error 438 439SELECT proname, proacl FROM pg_proc WHERE proname LIKE 'testagg_'; 440 441-- clean up 442\c 443 444DROP SCHEMA test_schema; 445DROP OWNED BY regress_testrol0, "Public", "current_user", regress_testrol1, regress_testrol2, regress_testrolx CASCADE; 446DROP ROLE regress_testrol0, regress_testrol1, regress_testrol2, regress_testrolx; 447DROP ROLE "Public", "None", "current_user", "session_user", "user"; 448