Hi Tom,

With PG 8.0 I was using a query using makeaclitem() and aclcontains()
to extract permissions.  Here is a sample query for database
permissions ...

SELECT
        ((grantee.name)::character varying)     AS grantee,
        ((nc.datname)::character varying)        AS database,
        (pr."type")                                         AS privilege_type,
        (
        CASE
                WHEN aclcontains(nc.datacl, makeaclitem(grantee.usesysid,
grantee.grosysid, u_grantor.usesysid, pr."type", true))
                THEN 'YES'::text
                ELSE 'NO'::text
        END)                                                AS is_grantable,
        ('NO')                                                AS with_hierarchy
FROM
        pg_database nc,
        pg_user u_grantor,
        (((((   SELECT pg_user.usesysid, 0, pg_user.usename  FROM pg_user )
                  UNION ALL
                 ( SELECT 0, pg_group.grosysid, pg_group.groname  FROM pg_group
                  )
        )) UNION ALL (  SELECT 0, 0, 'PUBLIC' ) )) grantee(usesysid, grosysid,
name),
        (((((   SELECT 'CREATE' ) UNION ALL (   SELECT 'TEMP' ) )) UNION ALL (
SELECT 'USAGE' ) )) pr("type")
WHERE
        aclcontains(nc.datacl, makeaclitem(grantee.usesysid, grantee.grosysid,
u_grantor.usesysid, pr."type", false))
        AND (grantee.name = 'postgres'::name)


What is the recommended manner to extract object permissions for 8.1
now that these functions are not available?

regards,
-Niels


---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?

               http://archives.postgresql.org

Reply via email to