This looks busted: rhaas=# create role clerks; CREATE ROLE rhaas=# create role bob in role clerks; CREATE ROLE rhaas=# create schema foo; CREATE SCHEMA rhaas=# grant usage on schema foo to bob, clerks; GRANT rhaas=# create aggregate foo.sum(basetype=text,sfunc=textcat,stype=text,initcond=''); CREATE AGGREGATE rhaas=# alter aggregate foo.sum(text) owner to bob; ALTER AGGREGATE rhaas=# set role bob; SET rhaas=> alter aggregate foo.sum(text) owner to clerks; ERROR: permission denied for function foo
Eh? There's no function called foo. There's a schema called foo, which seems to be the real problem: clerks needs to have CREATE on foo in order for bob to complete the rename. But somehow the error message is confused about what type of object it's dealing with. [ Credit: The above example is adapted from an EDB-internal regression test, the failure of which was what alerted me to this problem. ] -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers