Digamos que eu tenha dois grupos de banco de dados Postgresql, "autores" e "editores", e dois usuários, "maxwell" e "ernest".
create role authors;
create role editors;
create user maxwell;
create user ernest;
grant authors to editors; --editors can do what authors can do
grant editors to maxwell; --maxwell is an editor
grant authors to ernest; --ernest is an author
Eu gostaria de escrever uma função performante que retornasse uma lista dos papéis (de preferência seus oid's) aos quais o maxwell pertence, algo assim:
create or replace function get_all_roles() returns oid[] ...
Deve retornar os oids para maxwell, autores e editores (mas não ernest).
Mas não tenho certeza de como fazê-lo quando há herança.