SHOW GRANTS: alterações na saída para concessões em relação a funções e procedimentos (pendente)¶
Atenção
Esta mudança de comportamento faz parte do pacote 2026_01.
Para saber o status atual do pacote, consulte Histórico do pacote.
Na saída do comando SHOW GRANTS, o valor na coluna de nome mudou para funções e procedimentos:
- Antes da mudança:
A coluna
nameinclui os nomes e tipos dos argumentos e o tipo de retorno.Por exemplo, para a seguinte função:
CREATE FUNCTION area_of_circle(radius FLOAT) RETURNS FLOAT ...
o valor da coluna de nome é:
MY_DB.MY_SCHEMA."AREA_OF_CIRCLE(RADIUS FLOAT):FLOAT"
Para o seguinte procedimento:
CREATE PROCEDURE output_message(message VARCHAR) RETURNS VARCHAR ...
o valor da coluna de nome é:
MY_DB.MY_SCHEMA."OUTPUT_MESSAGE(MESSAGE VARCHAR):VARCHAR"
- Após a mudança:
A coluna
nameinclui apenas os tipos dos argumentos.Por exemplo, para a seguinte função:
CREATE FUNCTION area_of_circle(radius FLOAT) RETURNS FLOAT ...
o valor da coluna de nome é:
MY_DB.MY_SCHEMA.AREA_OF_CIRCLE(FLOAT)
Para o seguinte procedimento:
CREATE PROCEDURE output_message(message VARCHAR) RETURNS VARCHAR ...
o valor da coluna de nome é:
MY_DB.MY_SCHEMA.OUTPUT_MESSAGE(VARCHAR)
Esta mudança facilita o uso do valor na coluna de nome nas instruções GRANT e REVOKE que você deseja executar.
Por exemplo, suponha que você queira revogar os privilégios concedidos nas funções e nos procedimentos à função my_custom_role. Você pode executar o comando SHOW GRANTS:
SHOW GRANTS TO ROLE my_custom_role
->> SELECT "privilege", "granted_on", "name"
FROM $1
WHERE "granted_on" IN ('FUNCTION', 'PROCEDURE');
+-----------+------------+-----------------------------------------+
| privilege | granted_on | name |
|-----------+------------+-----------------------------------------|
| USAGE | FUNCTION | MY_DB.MY_SCHEMA.AREA_OF_CIRCLE(FLOAT) |
| USAGE | PROCEDURE | MY_DB.MY_SCHEMA.OUTPUT_MESSAGE(VARCHAR) |
+-----------+------------+-----------------------------------------+
Em seguida, copie e cole os valores retornados nas instruções REVOKE para revogar os privilégios:
REVOKE USAGE ON FUNCTION MY_DB.MY_SCHEMA.AREA_OF_CIRCLE(FLOAT) FROM ROLE my_custom_role;
REVOKE USAGE ON PROCEDURE MY_DB.MY_SCHEMA.OUTPUT_MESSAGE(VARCHAR) FROM ROLE my_custom_role;
Ref: 2190