Disable ACLs for the database objects for the Greenplum due to
performance issue. Reviewed By: Ashesh Fixes #3415pull/17/head
parent
e2b0cf6727
commit
e5048b4d0b
|
@ -0,0 +1,7 @@
|
|||
SELECT
|
||||
'datacl' AS deftype,
|
||||
'PUBLIC' AS grantee,
|
||||
NULL AS grantor,
|
||||
NULL AS privileges,
|
||||
NULL AS grantable
|
||||
LIMIT 0;
|
|
@ -0,0 +1,7 @@
|
|||
SELECT
|
||||
'datacl' AS deftype,
|
||||
'PUBLIC' AS grantee,
|
||||
NULL AS grantor,
|
||||
NULL AS privileges,
|
||||
NULL AS grantable
|
||||
LIMIT 0;
|
|
@ -1,34 +1,7 @@
|
|||
SELECT 'lanacl' as deftype, COALESCE(gt.rolname, 'PUBLIC') grantee, g.rolname grantor,
|
||||
array_agg(privilege_type) as privileges, array_agg(is_grantable) as grantable
|
||||
FROM
|
||||
(SELECT
|
||||
d.grantee, d.grantor, d.is_grantable,
|
||||
CASE d.privilege_type
|
||||
WHEN 'USAGE' THEN 'U'
|
||||
ELSE 'UNKNOWN'
|
||||
END AS privilege_type
|
||||
FROM
|
||||
(SELECT lanacl FROM pg_language lan
|
||||
LEFT OUTER JOIN pg_shdescription descr ON (lan.oid=descr.objoid AND descr.classoid='pg_language'::regclass)
|
||||
WHERE lan.oid = {{ lid|qtLiteral }}::OID
|
||||
) acl,
|
||||
(SELECT
|
||||
u_grantor.oid AS grantor,
|
||||
grantee.oid AS grantee,
|
||||
pr.type AS privilege_type,
|
||||
aclcontains(lan1.lanacl, makeaclitem(grantee.oid, u_grantor.oid, pr.type, true)) AS is_grantable
|
||||
FROM pg_language lan1, pg_authid u_grantor, (
|
||||
SELECT pg_authid.oid, pg_authid.rolname
|
||||
FROM pg_authid
|
||||
UNION ALL
|
||||
SELECT 0::oid AS oid, 'PUBLIC') grantee(oid, rolname),
|
||||
(SELECT 'USAGE') pr(type)
|
||||
WHERE aclcontains(lan1.lanacl, makeaclitem(grantee.oid, u_grantor.oid, pr.type, false))
|
||||
AND (pg_has_role(u_grantor.oid, 'USAGE'::text) OR pg_has_role(grantee.oid, 'USAGE'::text)
|
||||
OR grantee.rolname = 'PUBLIC'::name)
|
||||
AND lan1.oid = {{ lid|qtLiteral }}::OID
|
||||
) d
|
||||
) d
|
||||
LEFT JOIN pg_catalog.pg_roles g ON (d.grantor = g.oid)
|
||||
LEFT JOIN pg_catalog.pg_roles gt ON (d.grantee = gt.oid)
|
||||
GROUP BY g.rolname, gt.rolname
|
||||
SELECT
|
||||
'lanacl' AS deftype,
|
||||
'PUBLIC' AS grantee,
|
||||
NULL AS grantor,
|
||||
NULL AS privileges,
|
||||
NULL AS grantable
|
||||
LIMIT 0;
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
SELECT
|
||||
'datacl' AS deftype,
|
||||
'PUBLIC' AS grantee,
|
||||
NULL AS grantor,
|
||||
NULL AS privileges,
|
||||
NULL AS grantable
|
||||
LIMIT 0;
|
|
@ -1,38 +1,6 @@
|
|||
SELECT
|
||||
COALESCE(gt.rolname, 'PUBLIC') AS grantee,
|
||||
g.rolname AS grantor, array_agg(privilege_type) AS privileges,
|
||||
array_agg(is_grantable) AS grantable
|
||||
FROM
|
||||
(SELECT
|
||||
(d).grantee AS grantee,
|
||||
(d).grantor AS grantor,
|
||||
(d).is_grantable AS is_grantable,
|
||||
CASE (d).privilege_type
|
||||
WHEN 'EXECUTE' THEN 'X'
|
||||
ELSE 'UNKNOWN' END AS privilege_type
|
||||
FROM
|
||||
(SELECT
|
||||
u_grantor.oid AS grantor,
|
||||
grantee.oid AS grantee,
|
||||
pr.type AS privilege_type,
|
||||
aclcontains(c.proacl, makeaclitem(grantee.oid, u_grantor.oid, pr.type, true)) AS is_grantable
|
||||
FROM pg_proc c, pg_namespace nc, pg_authid u_grantor, (
|
||||
SELECT pg_authid.oid, pg_authid.rolname
|
||||
FROM pg_authid
|
||||
UNION ALL
|
||||
SELECT 0::oid AS oid, 'PUBLIC') grantee(oid, rolname),
|
||||
(SELECT 'EXECUTE') pr(type)
|
||||
WHERE c.pronamespace = nc.oid
|
||||
AND (
|
||||
c.proacl is NULL
|
||||
OR aclcontains(c.proacl, makeaclitem(grantee.oid, u_grantor.oid, pr.type, false))
|
||||
)
|
||||
AND (pg_has_role(u_grantor.oid, 'USAGE'::text)
|
||||
OR pg_has_role(grantee.oid, 'USAGE'::text)
|
||||
OR grantee.rolname = 'PUBLIC'::name)
|
||||
AND c.oid = {{ fnid }}::OID
|
||||
) d
|
||||
) d
|
||||
LEFT JOIN pg_catalog.pg_roles g ON (d.grantor = g.oid)
|
||||
LEFT JOIN pg_catalog.pg_roles gt ON (d.grantee = gt.oid)
|
||||
GROUP BY g.rolname, gt.rolname;
|
||||
'PUBLIC' AS grantee,
|
||||
NULL AS grantor,
|
||||
NULL AS privileges,
|
||||
NULL AS grantable
|
||||
LIMIT 0;
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
SELECT
|
||||
'relacl' AS deftype,
|
||||
'PUBLIC' AS grantee,
|
||||
NULL AS grantor,
|
||||
NULL AS privileges,
|
||||
NULL AS grantable
|
||||
LIMIT 0;
|
|
@ -0,0 +1,7 @@
|
|||
SELECT
|
||||
'attacl' AS deftype,
|
||||
'PUBLIC' AS grantee,
|
||||
NULL AS grantor,
|
||||
NULL AS privileges,
|
||||
NULL AS grantable
|
||||
LIMIT 0;
|
|
@ -0,0 +1,7 @@
|
|||
SELECT
|
||||
'relacl' AS deftype,
|
||||
'PUBLIC' AS grantee,
|
||||
NULL AS grantor,
|
||||
NULL AS privileges,
|
||||
NULL AS grantable
|
||||
LIMIT 0;
|
|
@ -1,38 +1,7 @@
|
|||
{# Fetch privileges for schema #}
|
||||
SELECT
|
||||
'nspacl' as deftype, COALESCE(gt.rolname, 'PUBLIC') AS grantee,
|
||||
g.rolname AS grantor, array_agg(b.privilege_type) AS privileges,
|
||||
array_agg(b.is_grantable) AS grantable
|
||||
FROM
|
||||
(SELECT
|
||||
(d).grantee AS grantee, (d).grantor AS grantor,
|
||||
(d).is_grantable AS is_grantable,
|
||||
CASE (d).privilege_type
|
||||
WHEN 'CREATE' THEN 'C'
|
||||
WHEN 'USAGE' THEN 'U'
|
||||
ELSE 'UNKNOWN - ' || (d).privilege_type
|
||||
END AS privilege_type
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
u_grantor.oid AS grantor,
|
||||
grantee.oid AS grantee,
|
||||
pr.type AS privilege_type,
|
||||
aclcontains(nc.nspacl, makeaclitem(grantee.oid, u_grantor.oid, pr.type, true)) AS is_grantable
|
||||
FROM pg_namespace nc, pg_authid u_grantor, (
|
||||
SELECT pg_authid.oid, pg_authid.rolname
|
||||
FROM pg_authid
|
||||
UNION ALL
|
||||
SELECT 0::oid AS oid, 'PUBLIC') grantee(oid, rolname),
|
||||
( SELECT 'CREATE'
|
||||
UNION ALL
|
||||
SELECT 'USAGE') pr(type)
|
||||
WHERE aclcontains(nc.nspacl, makeaclitem(grantee.oid, u_grantor.oid, pr.type, false))
|
||||
AND (pg_has_role(u_grantor.oid, 'USAGE'::text) OR pg_has_role(grantee.oid, 'USAGE'::text)
|
||||
OR grantee.rolname = 'PUBLIC'::name)
|
||||
AND nc.oid = {{ scid|qtLiteral }}::OID
|
||||
) a
|
||||
) b
|
||||
LEFT JOIN pg_catalog.pg_roles g ON (b.grantor = g.oid)
|
||||
LEFT JOIN pg_catalog.pg_roles gt ON (b.grantee = gt.oid)
|
||||
GROUP BY g.rolname, gt.rolname;
|
||||
'nspacl' AS deftype,
|
||||
'PUBLIC' AS grantee,
|
||||
NULL AS grantor,
|
||||
NULL AS privileges,
|
||||
NULL AS grantable
|
||||
LIMIT 0;
|
||||
|
|
|
@ -1,38 +1,7 @@
|
|||
{# Fetch privileges for schema #}
|
||||
SELECT
|
||||
'nspacl' as deftype, COALESCE(gt.rolname, 'PUBLIC') AS grantee,
|
||||
g.rolname AS grantor, array_agg(b.privilege_type) AS privileges,
|
||||
array_agg(b.is_grantable) AS grantable
|
||||
FROM
|
||||
(SELECT
|
||||
(a).grantee AS grantee, (a).grantor AS grantor,
|
||||
(a).is_grantable AS is_grantable,
|
||||
CASE (a).privilege_type
|
||||
WHEN 'CREATE' THEN 'C'
|
||||
WHEN 'USAGE' THEN 'U'
|
||||
ELSE 'UNKNOWN - ' || (a).privilege_type
|
||||
END AS privilege_type
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
u_grantor.oid AS grantor,
|
||||
grantee.oid AS grantee,
|
||||
pr.type AS privilege_type,
|
||||
aclcontains(nc.nspacl, makeaclitem(grantee.oid, u_grantor.oid, pr.type, true)) AS is_grantable
|
||||
FROM pg_namespace nc, pg_authid u_grantor, (
|
||||
SELECT pg_authid.oid, pg_authid.rolname
|
||||
FROM pg_authid
|
||||
UNION ALL
|
||||
SELECT 0::oid AS oid, 'PUBLIC') grantee(oid, rolname),
|
||||
( SELECT 'CREATE'
|
||||
UNION ALL
|
||||
SELECT 'USAGE') pr(type)
|
||||
WHERE aclcontains(nc.nspacl, makeaclitem(grantee.oid, u_grantor.oid, pr.type, false))
|
||||
AND (pg_has_role(u_grantor.oid, 'USAGE'::text) OR pg_has_role(grantee.oid, 'USAGE'::text)
|
||||
OR grantee.rolname = 'PUBLIC'::name)
|
||||
AND nc.oid = {{ scid|qtLiteral }}::OID
|
||||
) a
|
||||
) b
|
||||
LEFT JOIN pg_catalog.pg_roles g ON (b.grantor = g.oid)
|
||||
LEFT JOIN pg_catalog.pg_roles gt ON (b.grantee = gt.oid)
|
||||
GROUP BY g.rolname, gt.rolname;
|
||||
'nspacl' AS deftype,
|
||||
'PUBLIC' AS grantee,
|
||||
NULL AS grantor,
|
||||
NULL AS privileges,
|
||||
NULL AS grantable
|
||||
LIMIT 0;
|
||||
|
|
|
@ -1,74 +1,8 @@
|
|||
{# ============================ Get ACLs ========================= #}
|
||||
{% if vid %}
|
||||
SELECT
|
||||
'datacl' as deftype,
|
||||
COALESCE(gt.rolname, 'PUBLIC') grantee,
|
||||
g.rolname grantor,
|
||||
array_agg(privilege_type) as privileges,
|
||||
array_agg(is_grantable) as grantable
|
||||
FROM
|
||||
(SELECT
|
||||
d.grantee, d.grantor, d.is_grantable,
|
||||
CASE d.privilege_type
|
||||
WHEN 'DELETE' THEN 'd'
|
||||
WHEN 'INSERT' THEN 'a'
|
||||
WHEN 'REFERENCES' THEN 'x'
|
||||
WHEN 'SELECT' THEN 'r'
|
||||
WHEN 'TRIGGER' THEN 't'
|
||||
WHEN 'UPDATE' THEN 'w'
|
||||
WHEN 'TRUNCATE' THEN 'D'
|
||||
ELSE 'UNKNOWN'
|
||||
END AS privilege_type
|
||||
FROM
|
||||
(SELECT
|
||||
relacl
|
||||
FROM
|
||||
pg_class cl
|
||||
LEFT OUTER JOIN pg_shdescription descr ON (
|
||||
cl.oid=descr.objoid AND descr.classoid='pg_class'::regclass)
|
||||
WHERE
|
||||
cl.oid = {{ vid }}::OID AND relkind = 'v'
|
||||
) acl,
|
||||
(SELECT
|
||||
(d).grantee AS grantee,
|
||||
(d).grantor AS grantor,
|
||||
(d).is_grantable AS is_grantable,
|
||||
(d).privilege_type AS privilege_type
|
||||
FROM
|
||||
(SELECT
|
||||
u_grantor.oid AS grantor,
|
||||
grantee.oid AS grantee,
|
||||
pr.type AS privilege_type,
|
||||
aclcontains(c.relacl, makeaclitem(grantee.oid, u_grantor.oid, pr.type, true)) AS is_grantable
|
||||
FROM pg_class c, pg_namespace nc, pg_authid u_grantor, (
|
||||
SELECT pg_authid.oid, pg_authid.rolname
|
||||
FROM pg_authid
|
||||
UNION ALL
|
||||
SELECT 0::oid AS oid, 'PUBLIC') grantee(oid, rolname),
|
||||
( SELECT 'SELECT'
|
||||
UNION ALL
|
||||
SELECT 'INSERT'
|
||||
UNION ALL
|
||||
SELECT 'UPDATE'
|
||||
UNION ALL
|
||||
SELECT 'DELETE'
|
||||
UNION ALL
|
||||
SELECT 'TRUNCATE'
|
||||
UNION ALL
|
||||
SELECT 'REFERENCES'
|
||||
UNION ALL
|
||||
SELECT 'TRIGGER') pr(type)
|
||||
WHERE c.relnamespace = nc.oid
|
||||
AND (c.relkind = ANY (ARRAY['r'::"char", 'v'::"char"]))
|
||||
AND aclcontains(c.relacl, makeaclitem(grantee.oid, u_grantor.oid, pr.type, false))
|
||||
AND (pg_has_role(u_grantor.oid, 'USAGE'::text) OR pg_has_role(grantee.oid, 'USAGE'::text)
|
||||
OR grantee.rolname = 'PUBLIC'::name)
|
||||
AND c.oid = {{ vid }}
|
||||
) d
|
||||
) d
|
||||
) d
|
||||
LEFT JOIN pg_catalog.pg_roles g ON (d.grantor = g.oid)
|
||||
LEFT JOIN pg_catalog.pg_roles gt ON (d.grantee = gt.oid)
|
||||
GROUP BY
|
||||
g.rolname, gt.rolname
|
||||
{% endif %}
|
||||
'datacl' AS deftype,
|
||||
'PUBLIC' AS grantee,
|
||||
NULL AS grantor,
|
||||
NULL AS privileges,
|
||||
NULL AS grantable
|
||||
LIMIT 0;
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
SELECT
|
||||
'datacl' AS deftype,
|
||||
'PUBLIC' AS grantee,
|
||||
NULL AS grantor,
|
||||
NULL AS privileges,
|
||||
NULL AS grantable
|
||||
LIMIT 0;
|
|
@ -0,0 +1,7 @@
|
|||
SELECT
|
||||
'spcacl' AS deftype,
|
||||
'PUBLIC' AS grantee,
|
||||
NULL AS grantor,
|
||||
NULL AS privileges,
|
||||
NULL AS grantable
|
||||
LIMIT 0;
|
Loading…
Reference in New Issue