Is there a way that I can hide a view's definition from a user that has only been granted just the SELECT privilege on it?
Code: Select all
dbadmin=> create view public.dual_view as select * from dual;
CREATE VIEW
dbadmin=> create user beth;
CREATE USER
dbadmin=> \c dbadmin beth
You are now connected to database "dbadmin" as user "beth".
dbadmin=> select * from public.dual_view;
ERROR 4367: Permission denied for relation dual_view
dbadmin=> \c dbadmin dbadmin
You are now connected to database "dbadmin" as user "dbadmin".
dbadmin=> grant select on public.dual_view to beth;
GRANT PRIVILEGE
dbadmin=> \c dbadmin beth
You are now connected to database "dbadmin" as user "beth".
dbadmin=> select * from public.dual_view;
dummy
-------
X
(1 row)
dbadmin=> select view_definition from views where table_name = 'dual_view';
view_definition
---------------------------------------
SELECT dual.dummy FROM v_catalog.dual
(1 row)
Thank in advance!