воскресенье, 27 марта 2016 г.

ALTER ROLE ... SET ROLE ...

Команду SET ROLE можно использовать вместе с ALTER ROLE ... SET или ALTER DATABASE ... SET ...
В документации такой синтаксис не описан, но работает.
В результате, подключаемся под одной ролью и тут же переходим в другую. Если нужно запутаться, то это верная дорога.

postgres=# create role usr1 login;
CREATE ROLE
postgres=# create role usr2 login;
CREATE ROLE
postgres=# grant usr1 to usr2;
GRANT ROLE
postgres=# alter role usr2 set role usr1;
ALTER ROLE
postgres=# \c - usr2
You are now connected to database "postgres" as user "usr2".
postgres=> select session_user, current_user;
 session_user | current_user
--------------+--------------
 usr2         | usr1
(1 row)
postgres=> select * from pg_db_role_setting;
 setdatabase | setrole |  setconfig 
-------------+---------+-------------
           0 |   24803 | {role=usr1}
(1 row)

Комментариев нет: