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 ...
la valeur de la colonne name est :
MY_DB.MY_SCHEMA."AREA_OF_CIRCLE(RADIUS FLOAT):FLOAT"
Pour la procédure suivante :
CREATE PROCEDURE output_message(message VARCHAR) RETURNS VARCHAR ...
la valeur dans la colonne name est :
MY_DB.MY_SCHEMA."OUTPUT_MESSAGE(MESSAGE VARCHAR):VARCHAR"
- Après la modification:
La colonne
namecomprend uniquement les types des arguments.Par exemple, pour la fonction suivante :
CREATE FUNCTION area_of_circle(radius FLOAT) RETURNS FLOAT ...
la valeur de la colonne name est :
MY_DB.MY_SCHEMA.AREA_OF_CIRCLE(FLOAT)
Pour la procédure suivante :
CREATE PROCEDURE output_message(message VARCHAR) RETURNS VARCHAR ...
la valeur dans la colonne name est :
MY_DB.MY_SCHEMA.OUTPUT_MESSAGE(VARCHAR)
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');
+-----------+------------+-----------------------------------------+
| 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;
REVOKE USAGE ON PROCEDURE MY_DB.MY_SCHEMA.OUTPUT_MESSAGE(VARCHAR) FROM ROLE my_custom_role;
Réf : 2190