Команды SET ROLE и GRANT в PostgreSQL отличаются по назначению.
Команда SET ROLE позволяет временно «стать» определённой ролью, в результате чего сессия получает доступ к её привилегиям и создаёт объекты базы данных от имени этой роли. 14 Команда разрешает выбрать любую роль, прямым или косвенным членом которой является оригинальная роль, под которой был выполнен вход в систему. 34
Команда GRANT, в свою очередь, используется для добавления участников в групповую роль. 1 При выполнении этой команды устанавливается привилегия на объект или группу объектов для конкретной роли. 2
Таким образом, SET ROLE позволяет использовать привилегии определённой роли, а GRANT — управлять членством ролей в группах и назначать привилегии.