SET [ SESSION | LOCAL ] SESSION AUTHORIZATION username SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT RESET SESSION AUTHORIZATION
このコマンドはセッションのユーザ識別子、並びに、現在のSQLセッションコンテキストにおける現在のユーザ識別子をusernameに設定します。 ユーザ名は、識別子として書くことも、文字列リテラルとして書くこともできます。 このコマンドを使用して、例えば、一時的に非特権ユーザとなり、その後に特権ユーザに戻ることが可能です。
セッションのユーザ識別子はクライアントから渡される(おそらくは認証された)ユーザ名で初期化されます。 現在のユーザ識別子は通常セッションのユーザ識別子と同一ですが、"setuid"関数や似たような機構によって一時的に変更することができます。 現在のユーザ識別子は権限の検査に関係します。
セッションのユーザ識別子は、最初のセッションユーザ (認証されたユーザ) がスーパーユーザ権限を持っている場合にのみ変更できます。 スーパーユーザ権限を持っていない場合、コマンドは認証されたユーザ名を指定しなければ受け入れられません。
SESSION修飾子およびLOCAL修飾子は、通常のSETコマンドの場合と同じように機能します。
DEFAULT形式およびRESET形式は、セッションと現在のユーザ識別子を元の認証ユーザにリセットします。 これらの形式は常に受け入れられます。
SELECT SESSION_USER, CURRENT_USER; session_user | current_user --------------+-------------- peter | peter SET SESSION AUTHORIZATION 'paul'; SELECT SESSION_USER, CURRENT_USER; session_user | current_user --------------+-------------- paul | paul