Thread: Recursive SELECT problem

Recursive SELECT problem

From
"Dave Page"
Date:
Hi,

I'm trying to write a query to determine whether or not the current
login role has CREATEDB (or CREATEROLE) privileges, either directly or
inherited from a parent role.

The query:

SELECT EXISTS (SELECT 1 FROM pg_authid WHERE rolcreatedb = TRUE AND
pg_has_role(rolname, 'MEMBER')) AS has_createdb

does the job for CREATEDB, except that it doesn't honour rolinherit.
Anyone know how I can do this in pure SQL?

Thanks, Dave.


Re: Recursive SELECT problem

From
Tom Lane
Date:
"Dave Page" <dpage@vale-housing.co.uk> writes:
> I'm trying to write a query to determine whether or not the current
> login role has CREATEDB (or CREATEROLE) privileges, either directly or
> inherited from a parent role.

Those privileges don't inherit, so I'm not sure why you need a recursive
check.
        regards, tom lane


Re: Recursive SELECT problem

From
"Dave Page"
Date:

> -----Original Message-----
> From: Tom Lane [mailto:tgl@sss.pgh.pa.us]
> Sent: 17 May 2006 15:07
> To: Dave Page
> Cc: pgsql-sql@postgresql.org
> Subject: Re: [SQL] Recursive SELECT problem
>
> "Dave Page" <dpage@vale-housing.co.uk> writes:
> > I'm trying to write a query to determine whether or not the current
> > login role has CREATEDB (or CREATEROLE) privileges, either
> directly or
> > inherited from a parent role.
>
> Those privileges don't inherit, so I'm not sure why you need
> a recursive check.

Because I didn't realise they didn't inherit 'cos I missed the note at
the bottom of the CREATE ROLE page :-)

Thanks - that makes life significantly easier!

Regards, Dave.