Estou tentando encontrar referências para qual a diferença entre EXECUTE
e ALL
está em:
GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON { FUNCTION | ALL FUNCTIONS IN SCHEMA }...
mas tudo o que posso encontrar é o que os documentos dizem:
EXECUTE Permite o uso da função especificada e o uso de quaisquer operadores implementados sobre a função. Este é o único tipo de privilégio aplicável a funções. (Esta sintaxe também funciona para funções agregadas.)
Por exemplo, eu sei disso para esquemas ALL = CREATE + USAGE
, mas eu queria verificar isso em referência a funções:
Este é o único tipo de privilégio aplicável a funções.
no trecho acima dos documentos implica que para funções ALL = EXECUTE
e que:
GRANT ALL ON ALL FUNCTIONS...
é equivalente a:
GRANT EXECUTE ON ALL FUNCTIONS...
A única permissão aplicável a funções é EXECUTE, então quando você usar ALL o postgresql tentará aplicar todas as permissões disponíveis para funções, e por enquanto isso é apenas "EXECUTE".
Então significa exatamente o mesmo.
https://www.postgresql.org/docs/10/static/sql-grant.html
Mas tenha cuidado se mais tipos de permissões para funções forem implementadas em novas versões do postgresql, isso pode dar errado (mas não consigo ver além de executar).