にリストされている PID をさらに調べて、セッション認証を設定するpg_stat_activity
ために最後に成功した呼び出しを知りたいと思います。SET SESSION AUTHORIZATION
PostgreSQL 9.0 で必要なテーブルまたはビューはどれですか?
1 に答える
少なくとも 9.4 以前のバージョンでは、PostgreSQL はその情報を公開しません。
のユーザー IDpg_stat_activity
はログイン ユーザーです。RESET SESSION AUTHORIZATION
戻るのはユーザーです。SET SESSION AUTHORIZATION
やのときは変わりませんSET ROLE
。
現在の有効なセッション承認と現在のロールに関する情報は、バックエンドの内部にあります。などを使用してローカルでバックエンドにアクセスできますがSELECT current_user, current_role
、プロセス間でアクセスする方法はありません。
pg_stat_activity
維持やクエリのコストを高くすることなく追加できるのであれば、それがあればいいかもしれません。ただし、PostgreSQL の内部に入り込み、情報を公開するためのパッチを開発する必要があります。
驚いたことに、log_line_prefix
有効な役割と有効なセッション ユーザーを示す書式記号が含まれていないようです。PgBouncer によるセッション認証の使用を考えると、何かを見逃したに違いないと感じるほど奇妙です。
いずれにせよ、これを行う唯一の方法は、ログを掘り下げて pid とセッション ID を記録し、成功したSET SESSION AUTHORIZATION
呼び出しを後続のステートメントに関連付けることです。