Basicamente porque não foi possível alterar retroativamente como as visualizações funcionam. Eu gostaria de ser compatível com
SECURITY INVOKER
(ou equivalente) para visualizações, mas, até onde sei, esse recurso não existe atualmente. Você pode filtrar o acesso à própria visualização com segurança de linha normalmente.
As tabelas acessadas pela view também terão suas regras de segurança de linha aplicadas. No entanto, eles verão o
current_user
como o criador da visualização porque as visualizações acessam tabelas (e outras visualizações) com os direitos do usuário que criou/possui a visualização. Talvez valha a pena levantar isso em pgsql-hackers se você estiver disposto a intervir e ajudar no desenvolvimento do recurso que você precisa, ou pgsql-general caso contrário?
Dito isso, enquanto as visualizações acessam as tabelas como o usuário criador e alteram
current_user
portanto, eles não impedem que você use GUCs personalizados, o session_user
, ou outras informações contextuais em políticas de segurança de linha. Você pode usar a segurança de linha com visualizações, mas não (utilmente) para filtrar com base em current_user
.