I'm upgrading our database from 8.4 to 9.2 and I've run across a view that is no longer working. When selecting from the view, I get a permission denied error on one of the referenced tables. However, I can run the view's query directly without problems and I have read access to all the tables the view accesses. I'm a bit confused as to what's causing this. I'm logged in as the postgres superuser and don't have any permissions set up for the views/tables in question. Any help would be appreciated.
basement_QA=# create or replace view vcredit_info as SELECT game_credit.developer_id, credit_submission.game_id, credit_submission.platform_id, game_credit.game_credit_title_id, game_credit_title.developer_title_id, ( SELECT min(substr(gv.release_date::text, 1, 4)::integer) AS min FROM game_version gv WHERE gv.approved = 1 AND gv.game_id = credit_submission.game_id AND gv.release_type_id = 1 AND gv.platform_id = credit_submission.platform_id) AS first_year, ( SELECT max(substr(gv.release_date::text, 1, 4)::integer) AS max FROM game_version gv WHERE gv.approved = 1 AND gv.game_id = credit_submission.game_id AND gv.release_type_id = 1 AND gv.platform_id = credit_submission.platform_id) AS last_year, developer_title.credit_title_category_id FROM game_credit JOIN credit_submission USING (credit_submission_id) JOIN game_status USING (game_id, platform_id) JOIN game_credit_title USING (game_credit_title_id) JOIN developer_title USING (developer_title_id) WHERE game_status.approved = 1 AND credit_submission.approved = 1; CREATE VIEW basement_QA=# select count(*) from vcredit_info where game_id = 30997; ERROR: permission denied for relation developer_title basement_QA=# select count(*) from developer_title; count ------- 224 (1 row) basement_QA=# select count(*) from (SELECT game_credit.developer_id, credit_submission.game_id, basement_QA(# credit_submission.platform_id, game_credit.game_credit_title_id, basement_QA(# game_credit_title.developer_title_id, basement_QA(# ( SELECT min(substr(gv.release_date::text, 1, 4)::integer) AS min basement_QA(# FROM game_version gv basement_QA(# WHERE gv.approved = 1 AND gv.game_id = credit_submission.game_id AND gv.release_type_id = 1 AND gv.platform_id = credit_submission.platform_id) AS first_year, basement_QA(# ( SELECT max(substr(gv.release_date::text, 1, 4)::integer) AS max basement_QA(# FROM game_version gv basement_QA(# WHERE gv.approved = 1 AND gv.game_id = credit_submission.game_id AND gv.release_type_id = 1 AND gv.platform_id = credit_submission.platform_id) AS last_year, basement_QA(# developer_title.credit_title_category_id basement_QA(# FROM game_credit basement_QA(# JOIN credit_submission USING (credit_submission_id) basement_QA(# JOIN game_status USING (game_id, platform_id) basement_QA(# JOIN game_credit_title USING (game_credit_title_id) basement_QA(# JOIN developer_title USING (developer_title_id) basement_QA(# WHERE game_status.approved = 1 AND credit_submission.approved = 1) as myview where myview.game_id = 30997; count ------- 66 (1 row) basement_QA=# select CURRENT_USER; current_user -------------- postgres (1 row) basement_QA=# \dp vcredit_info Access privileges Schema | Name | Type | Access privileges | Column access privileges --------+--------------+------+-------------------+-------------------------- public | vcredit_info | view | | (1 row) basement_QA=# \dp developer_title; Access privileges Schema | Name | Type | Access privileges | Column access privileges --------+-----------------+-------+-------------------+-------------------------- public | developer_title | table | | (1 row)