This came across my desk today from GSN Games. Lenoy, looks like you might have taken a look at this at some point. Is this expected behavior?
Seems that if you change the owner of a view, it hoses other users' permissions.
recreator:
create user user3 ;
dbadmin=> create schema test ;
CREATE SCHEMA
dbadmin=> create view test.view_x as select * from vendor_dimension ;
CREATE VIEW
dbadmin=> grant select on schema test to user3 ;
GRANT PRIVILEGE
dbadmin=> grant select on test.view_x to user3 ;
WARNING 5682: USAGE privilege on schema "test" also needs to be granted to "user3"
GRANT PRIVILEGE
dbadmin=> grant usage on schema test to user3 ;
GRANT PRIVILEGE
dbadmin=> \c dbadmin user3
You are now connected to database "dbadmin" as user "user3".
dbadmin=> select * from test.view_x ;
vendor_key | vendor_name | vendor_address | vendor_city | vendor_state | vendor_region | deal_size | last_deal_update
------------+------------------------+-----------------+------------------+--------------+---------------+-----------+------------------
6 | Food Suppliers | 359 Pine St | Concord | CA | West | 202865 | 2003-02-02
...
dbadmin=> \c dbadmin dbadmin
Password:
You are now connected to database "dbadmin" as user "dbadmin".
dbadmin=> alter view test.view_x owner to user1 ;
ALTER VIEW
dbadmin=> \c dbadmin user3
You are now connected to database "dbadmin" as user "user3".
dbadmin=> select * from test.view_x ;
ERROR 4367: Permission denied for relation view_x
What is also weird here is that if I switch back to dbadmin, I can see that user3 NO LONGER has SELECT on test.view_x. If I regrant it, I see that it gets the grant, but the grantor is user1. Totally strange.