Let's say I have two Postgresql database groups, "authors" and "editors", and one usertwo users, "maxwell" and "ernest".
create role authors inherit;authors;
create role editors inherit;editors;
create user maxwellmaxwell;
create inherit;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
I would like to write a performant function that returns a list of the roles (preferably their oid's) that maxwell belongs to, something like this:
create or replace function get_all_roles() returns oid[] ...
It should return the oids for maxwell, authors, and editors (but not ernest).
But I am not sure how to do it when there is inheritance.