Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- select * from (
- select
- schemas.nspname
- from
- (
- select
- nspname,
- nspowner
- from pg_namespace
- ) schemas,
- (
- SELECT usesysid FROM pg_user WHERE usename = 'postgres'
- ) owner
- where
- schemas.nspowner = owner.usesysid
- union
- /*granted schemas*/
- select
- s.nspname
- from
- (
- select
- nspname,
- cast(unnest(nspacl) as name) membership
- from pg_namespace
- ) s,
- (
- select
- *
- from
- (
- select
- groname,
- unnest(grolist) usesysid
- from
- pg_group
- ) groups
- join
- (
- SELECT usesysid FROM pg_user WHERE usename = 'postgres'
- ) users on
- groups.usesysid = users.usesysid
- ) roles
- where
- strpos(s.membership, roles.groname) > 0
- union
- /* no nspacl defined => access to public */
- select
- nspname
- from pg_namespace
- where
- nspacl is null
- union
- /* public defined explicitly */
- select
- nspname
- from
- (
- select
- nspname,
- cast(unnest(nspacl) as name) membership
- from pg_namespace
- ) schemas
- where
- substring(schemas.membership, 1, 1) = '='
- ) As sc
- where sc.nspname !~ '^pg_temp' And sc.nspname !~ '^pg_toast'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement