赤方偏移の助成金を表示したいと思います。
postgres のこのビューを見つけました:
CREATE OR REPLACE VIEW view_all_grants AS
SELECT
use.usename as subject,
nsp.nspname as namespace,
c.relname as item,
c.relkind as type,
use2.usename as owner,
c.relacl,
(use2.usename != use.usename and c.relacl::text !~ ('({|,)' || use.usename || '=')) as public
FROM
pg_user use
cross join pg_class c
left join pg_namespace nsp on (c.relnamespace = nsp.oid)
left join pg_user use2 on (c.relowner = use2.usesysid)
WHERE
c.relowner = use.usesysid or
c.relacl::text ~ ('({|,)(|' || use.usename || ')=')
ORDER BY
subject,
namespace,
item
::text
のキャストがrelacl
次のように失敗するため、これは機能しません。
ERROR: cannot cast type aclitem[] to character varying [SQL State=42846]
クエリを次のように変更する
CREATE OR REPLACE VIEW view_all_grants AS
SELECT
use.usename as subject,
nsp.nspname as namespace,
c.relname as item,
c.relkind as type,
use2.usename as owner,
c.relacl
-- , (use2.usename != use.usename and c.relacl::text !~ ('({|,)' || use.usename || '=')) as public
FROM
pg_user use
cross join pg_class c
left join pg_namespace nsp on (c.relnamespace = nsp.oid)
left join pg_user use2 on (c.relowner = use2.usesysid)
WHERE
c.relowner = use.usesysid
-- or c.relacl::text ~ ('({|,)(|' || use.usename || ')=')
ORDER BY
subject,
namespace,
item
ビューの作成を許可しますが、関連するすべてのデータが表示されていないことが懸念されます。
ビューを redshift で動作するように変更するにはどうすればよいですか? または redshift で許可を表示するためのより良い/代替方法はありますか?
更新: Redshift には、許可をチェックするための HAS_TABLE_PRIVILEGE 関数があります。(こちらをご覧ください)