2

にリストされている PID をさらに調べて、セッション認証を設定するpg_stat_activityために最後に成功した呼び出しを知りたいと思います。SET SESSION AUTHORIZATIONPostgreSQL 9.0 で必要なテーブルまたはビューはどれですか?

4

1 に答える 1

2

少なくとも 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呼び出しを後続のステートメントに関連付けることです。

于 2013-12-14T03:51:05.623 に答える