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 name inclui 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
  ...
Copy

o valor da coluna de nome é:

MY_DB.MY_SCHEMA."AREA_OF_CIRCLE(RADIUS FLOAT):FLOAT"
Copy

Para o seguinte procedimento:

CREATE PROCEDURE output_message(message VARCHAR)
  RETURNS VARCHAR
  ...
Copy

o valor da coluna de nome é:

MY_DB.MY_SCHEMA."OUTPUT_MESSAGE(MESSAGE VARCHAR):VARCHAR"
Copy
Após a mudança:

A coluna name inclui apenas os tipos dos argumentos.

Por exemplo, para a seguinte função:

CREATE FUNCTION area_of_circle(radius FLOAT)
  RETURNS FLOAT
  ...
Copy

o valor da coluna de nome é:

MY_DB.MY_SCHEMA.AREA_OF_CIRCLE(FLOAT)
Copy

Para o seguinte procedimento:

CREATE PROCEDURE output_message(message VARCHAR)
  RETURNS VARCHAR
  ...
Copy

o valor da coluna de nome é:

MY_DB.MY_SCHEMA.OUTPUT_MESSAGE(VARCHAR)
Copy

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');
Copy
+-----------+------------+-----------------------------------------+
| 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;
Copy
REVOKE USAGE ON PROCEDURE MY_DB.MY_SCHEMA.OUTPUT_MESSAGE(VARCHAR) FROM ROLE my_custom_role;
Copy

Ref: 2190