Preciso de uma consulta que possa ser executada no banco de dados Postgres de um usuário e determinar se ele tem permissão para criar procedimentos/funções. Precisa ser uma consulta apenas porque se trata de uma verificação de inicialização do software que distribuo, e os usuários o conectam aos seus próprios bancos de dados, que às vezes são compartilhados e eles não têm permissões de procedimento.
Preciso de uma maneira somente SQL para determinar se eles têm a capacidade de usar CREATE FUNCTION
. A documentação afirma que:
Para poder criar uma função, você deve ter privilégio USAGE nos tipos de argumento e no tipo de retorno.
Tentei usar este SQL, mas não tenho certeza se ele me dará algo útil.
SELECT * FROM information_schema.role_usage_grants
WHERE grantee = 'postgres';
postgres postgres prism_v4 information_schema cardinal_number DOMAIN USAGE YES
postgres postgres prism_v4 information_schema character_data DOMAIN USAGE YES
postgres postgres prism_v4 information_schema sql_identifier DOMAIN USAGE YES
postgres postgres prism_v4 information_schema time_stamp DOMAIN USAGE YES
postgres postgres prism_v4 information_schema yes_or_no DOMAIN USAGE YES
No MySQL posso usar SHOW GRANTS FOR CURRENT_USER();
e verificarCREATE_ROUTINE