Re: [HACKERS] Role members

From: David Fetter <david(at)fetter(dot)org>
To: Akmal Akmalhojaev <akmal(dot)ilh(at)gmail(dot)com>
Cc: PostgreSQL General <pgsql-general(at)postgresql(dot)org>
Subject: Re: [HACKERS] Role members
Date: 2007-05-21 15:25:48
Message-ID: 20070521152548.GB11913@fetter.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general pgsql-hackers

On Mon, May 21, 2007 at 02:21:52PM +0400, Akmal Akmalhojaev wrote:
> Hello! I have the following question.

Moving to -general.

> For example I have a role ID1 with members ID2 and ID3.
> Role ID2 has also members ID4 and ID5. It means that roles ID4 and ID5 are
> members of ID1.
> The question: Is there any function in PostgreSQL, that finds all the
> members of role ID1 - even such members, as ID4 and ID5.

Here's a function I've written in SQL:

CREATE OR REPLACE FUNCTION get_roles_under(OID)
RETURNS SETOF OID
LANGUAGE sql
AS $$
SELECT
$1
UNION
SELECT
member
FROM
pg_catalog.pg_auth_members
WHERE
roleid = $1
UNION
SELECT
get_roles_over(roleid) AS "roleid"
FROM
pg_catalog.pg_auth_members
WHERE
roleid IN (
SELECT
member
FROM
pg_catalog.pg_auth_members
WHERE
roleid = $1
)
$$;

Cheers,
D
--
David Fetter <david(at)fetter(dot)org> http://fetter.org/
phone: +1 415 235 3778 AIM: dfetter666
Skype: davidfetter

Remember to vote!
Consider donating to PostgreSQL: http://www.postgresql.org/about/donate

In response to

  • Role members at 2007-05-21 10:21:52 from Akmal Akmalhojaev

Responses

Browse pgsql-general by date

  From Date Subject
Next Message novnov 2007-05-21 16:03:12 Re: Trigger function which inserts into table; values from lookup
Previous Message William Leite Araújo 2007-05-21 15:16:31 Re: Trigger function which inserts into table; values from lookup

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2007-05-21 15:26:25 Re: pg_get_tabledef
Previous Message Karl O. Pinc 2007-05-21 15:16:57 Re: COPY into a view; help w. design & patch