2009年12月30日水曜日

groovyとPostgreSQLでロールのメンバーを一覧表示する

groovyとPostgreSQLでロールのメンバーを一覧表示するには、以下のコードを実行します。


import groovy.sql.Sql

sql = Sql.newInstance(
"jdbc:postgresql://localhost:5432/test1",
"postgres",
"postgres",
"org.postgresql.Driver")

roleName = "employee"
query = """
select
rl.rolname as role_name, mrl.rolname as member, grl.rolname as grantor, admin_option
from
pg_auth_members mem
join pg_authid rl
on (mem.roleid = rl.oid)
join pg_authid mrl
on (mem.member = mrl.oid)
join pg_authid grl
on (mem.grantor = grl.oid)
where rl.rolname = ${roleName}
"""
// ロールのメンバーを一覧表示
sql.eachRow(query){
// ロール名
println "role_name:${it.role_name}"
// メンバー
println "member:${it.member}"
// 付与者
println "grantor:${it.grantor}"
// アドミンオプション
println "admin_option:${it.admin_option}"
println "----"
}


動作環境
Groovy 1.6.3, JDK6 Update16, Postgres 8.4.0,
8.4-701JDBC4

関連情報
pg_auth_members
http://www.postgresql.org/docs/8.4/interactive/catalog-pg-auth-members.html

0 件のコメント:

コメントを投稿