Re: Bug / shortcoming in has_*_privilege

Robert Haas <robertmhaas@gmail.com>

From: Robert Haas <robertmhaas@gmail.com>
To: Jim Nasby <jim@nasby.net>
Cc: PGSQL Hackers <pgsql-hackers@postgresql.org>
Date: 2010-06-11T00:46:33Z
Lists: pgsql-hackers
On Thu, Jun 10, 2010 at 5:54 PM, Jim Nasby <jim@nasby.net> wrote:
> test_us@workbook=# select has_table_privilege( 'public', 'test', 'SELECT' );
> ERROR:  role "public" does not exist
> test_us@workbook=#
>
> So there's no way to see if a particular privilege has been granted to public. ISTM 'public' should be accepted, since you can't use it as a role name anyway...
>
> test_us@workbook=# create role public;
> ERROR:  role name "public" is reserved
> test_us@workbook=# create role "public";
> ERROR:  role name "public" is reserved

It's a bit sticky - you could make that work for
has_table_privilege(name, oid, text) or has_table_privilege(name,
text, text), but what would you do about the versions whose first
argument is an oid?  It would seem a bit awkward to have the behavior
by asymmetrical, although I guess we could...

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise Postgres Company