SHOW GRANTS : modifications de la sortie pour les privilèges accordés sur les fonctions et les procédures (en attente)

Attention

Ce changement de comportement fait partie du bundle 2026_01.

Pour connaître le statut actuel du bundle, reportez-vous à Historique du bundle.

Dans la sortie de la commande SHOW GRANTS, la valeur dans la colonne des noms change pour les fonctions et les procédures :

Avant la modification:

La colonne name (nom) comprend les noms et les types des arguments et le type de retour.

Par exemple, pour la fonction suivante :

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

la valeur de la colonne name est :

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

Pour la procédure suivante :

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

la valeur dans la colonne name est :

MY_DB.MY_SCHEMA."OUTPUT_MESSAGE(MESSAGE VARCHAR):VARCHAR"
Copy
Après la modification:

La colonne name comprend uniquement les types des arguments.

Par exemple, pour la fonction suivante :

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

la valeur de la colonne name est :

MY_DB.MY_SCHEMA.AREA_OF_CIRCLE(FLOAT)
Copy

Pour la procédure suivante :

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

la valeur dans la colonne name est :

MY_DB.MY_SCHEMA.OUTPUT_MESSAGE(VARCHAR)
Copy

Cette modification facilite l’utilisation de la valeur de la colonne name dans les instructions GRANT et REVOKE que vous voulez exécuter.

Par exemple, supposons que vous souhaitiez révoquer les privilèges accordés sur les fonctions et les procédures au rôle my_custom_role. Vous pouvez exécuter la commande 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) |
+-----------+------------+-----------------------------------------+

Vous pouvez ensuite copier et coller les valeurs retournées dans les instructions REVOKE pour révoquer ces privilèges :

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

Réf : 2190