@@ -1356,6 +1356,64 @@ SELECT has_table_privilege('regress_user1', 'testns.acltest1', 'INSERT'); -- no
1356
1356
(1 row)
1357
1357
1358
1358
ALTER DEFAULT PRIVILEGES FOR ROLE regress_user1 REVOKE EXECUTE ON FUNCTIONS FROM public;
1359
+ ALTER DEFAULT PRIVILEGES IN SCHEMA testns GRANT USAGE ON SCHEMAS TO regress_user2; -- error
1360
+ ERROR: cannot use IN SCHEMA clause when using GRANT/REVOKE ON SCHEMAS
1361
+ ALTER DEFAULT PRIVILEGES GRANT USAGE ON SCHEMAS TO regress_user2;
1362
+ CREATE SCHEMA testns2;
1363
+ SELECT has_schema_privilege('regress_user2', 'testns2', 'USAGE'); -- yes
1364
+ has_schema_privilege
1365
+ ----------------------
1366
+ t
1367
+ (1 row)
1368
+
1369
+ SELECT has_schema_privilege('regress_user2', 'testns2', 'CREATE'); -- no
1370
+ has_schema_privilege
1371
+ ----------------------
1372
+ f
1373
+ (1 row)
1374
+
1375
+ ALTER DEFAULT PRIVILEGES REVOKE USAGE ON SCHEMAS FROM regress_user2;
1376
+ CREATE SCHEMA testns3;
1377
+ SELECT has_schema_privilege('regress_user2', 'testns3', 'USAGE'); -- no
1378
+ has_schema_privilege
1379
+ ----------------------
1380
+ f
1381
+ (1 row)
1382
+
1383
+ SELECT has_schema_privilege('regress_user2', 'testns3', 'CREATE'); -- no
1384
+ has_schema_privilege
1385
+ ----------------------
1386
+ f
1387
+ (1 row)
1388
+
1389
+ ALTER DEFAULT PRIVILEGES GRANT ALL ON SCHEMAS TO regress_user2;
1390
+ CREATE SCHEMA testns4;
1391
+ SELECT has_schema_privilege('regress_user2', 'testns4', 'USAGE'); -- yes
1392
+ has_schema_privilege
1393
+ ----------------------
1394
+ t
1395
+ (1 row)
1396
+
1397
+ SELECT has_schema_privilege('regress_user2', 'testns4', 'CREATE'); -- yes
1398
+ has_schema_privilege
1399
+ ----------------------
1400
+ t
1401
+ (1 row)
1402
+
1403
+ ALTER DEFAULT PRIVILEGES REVOKE ALL ON SCHEMAS FROM regress_user2;
1404
+ CREATE SCHEMA testns5;
1405
+ SELECT has_schema_privilege('regress_user2', 'testns5', 'USAGE'); -- no
1406
+ has_schema_privilege
1407
+ ----------------------
1408
+ f
1409
+ (1 row)
1410
+
1411
+ SELECT has_schema_privilege('regress_user2', 'testns5', 'CREATE'); -- no
1412
+ has_schema_privilege
1413
+ ----------------------
1414
+ f
1415
+ (1 row)
1416
+
1359
1417
SET ROLE regress_user1;
1360
1418
CREATE FUNCTION testns.foo() RETURNS int AS 'select 1' LANGUAGE sql;
1361
1419
SELECT has_function_privilege('regress_user2', 'testns.foo()', 'EXECUTE'); -- no
@@ -1403,6 +1461,10 @@ SELECT count(*)
1403
1461
1404
1462
DROP SCHEMA testns CASCADE;
1405
1463
NOTICE: drop cascades to table testns.acltest1
1464
+ DROP SCHEMA testns2 CASCADE;
1465
+ DROP SCHEMA testns3 CASCADE;
1466
+ DROP SCHEMA testns4 CASCADE;
1467
+ DROP SCHEMA testns5 CASCADE;
1406
1468
SELECT d.* -- check that entries went away
1407
1469
FROM pg_default_acl d LEFT JOIN pg_namespace n ON defaclnamespace = n.oid
1408
1470
WHERE nspname IS NULL AND defaclnamespace != 0;
0 commit comments