The following bug has been logged online:
Bug reference: 3540
Logged by: Richard Rowell
Email address: richard.rowell@gmail.com
PostgreSQL version: 8.2
Operating system: Linux
Description: "REVOKE CREATE ON SCHEMA" public doesn't work
Details:
richard@meowth:~/download$ createdb perm_test
CREATE DATABASE
richard@meowth:~/download$ psql -U postgres perm_test
Welcome to psql 8.2.4, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit
perm_test=> create schema foo;
CREATE SCHEMA
perm_test=# create role bar login;
CREATE ROLE
perm_test=> revoke create on schema foo from bar;
REVOKE
perm_test=# revoke create on schema public from bar;
REVOKE
perm_test=# \q
richard@meowth:~/download$ psql -U bar perm_test
Welcome to psql 8.2.4, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit
perm_test=> create table foo.test (uid integer);
ERROR: permission denied for schema foo
perm_test=> create table test (uid integer);
CREATE TABLE