Advertisement
Guest User

Untitled

a guest
Oct 12th, 2012
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. select * from (
  2. select
  3. schemas.nspname
  4. from
  5. (
  6. select
  7. nspname,
  8. nspowner
  9. from pg_namespace
  10. ) schemas,
  11. (
  12. SELECT usesysid FROM pg_user WHERE usename = 'postgres'
  13. ) owner
  14. where
  15. schemas.nspowner = owner.usesysid
  16. union
  17. /*granted schemas*/
  18. select
  19. s.nspname
  20. from
  21. (
  22. select
  23. nspname,
  24. cast(unnest(nspacl) as name) membership
  25. from pg_namespace
  26. ) s,
  27. (
  28. select
  29. *
  30. from
  31. (
  32. select
  33. groname,
  34. unnest(grolist) usesysid
  35. from
  36. pg_group
  37. ) groups
  38. join
  39. (
  40. SELECT usesysid FROM pg_user WHERE usename = 'postgres'
  41. ) users on
  42. groups.usesysid = users.usesysid
  43. ) roles
  44. where
  45. strpos(s.membership, roles.groname) > 0
  46. union
  47. /* no nspacl defined => access to public */
  48. select
  49. nspname
  50. from pg_namespace
  51. where
  52. nspacl is null
  53. union
  54. /* public defined explicitly */
  55. select
  56. nspname
  57. from
  58. (
  59. select
  60. nspname,
  61. cast(unnest(nspacl) as name) membership
  62. from pg_namespace
  63. ) schemas
  64. where
  65. substring(schemas.membership, 1, 1) = '='
  66. ) As sc
  67. where sc.nspname !~ '^pg_temp' And sc.nspname !~ '^pg_toast'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement