Hello,

I tried to generalize a function that creates partitions
for a table and found out it's impossible to do it for grants.

Basically, what I want is a child table that takes it's grants
from parent table.  IMHO quite reasonable request.  But I don't
see a way to do it in pl/pgsql.  (Writing parser in plpgsql
for aclitemout() output does not count.)

The form for the create statement is:

  CREATE TABLE part (
    [pre-9.0]    LIKE parent INCLUDING INDEXES INCLUDING CONSTRAINTS
    [9.0+]       LIKE parent INCLUDING ALL    -- skips grants
  ) INHERITS (parent);

Unless I'm missing something obvious, there is no way to take grants
from parent table.

My suggestions:

1) Have 'GRANTS' option for LIKE.  Seems obvious.

2) Include 'GRANTS' option in 'ALL'.  Also obvious.

3) Have a way to format aclitem into something
   that can used to create GRANT statement easily.  Eg:

     pg_get_privilege_info(
          IN priv aclitem,
          OUT rolename text,
          OUT privlist text[],
          OUT privlist_with_grant_option text[]);

   This allows doing complex introspection in pl/pgsql
   and also helps tools that want to re-create table structure
   in other databases.

Although 1)+2) and 3) seem like alternatives, I suggest doing all of them,
thus improving GRANT usage across the board.

Comments?

-- 
marko

NB: this mail is about designing and accepting TODO-items.
I might do them myself sometime, but I don't mind if anyone
implements them before me..


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to