SHOW GRANTS: Änderungen an der Ausgabe von Berechtigungen für Funktionen und Prozeduren (Ausstehend)¶
Achtung
Diese Verhaltensänderung ist in Bundle 2026_01 enthalten.
Den aktuellen Status des Bundles finden Sie unter Bundle-Verlauf.
In der Ausgabe des SHOW GRANTS-Befehls ändert sich der Wert in der Namensspalte für Funktionen und Prozeduren:
- Vor der Änderung:
Die Spalte
nameenthält die Namen und Typen der Argumente sowie den Rückgabetyp.Zum Beispiel für die folgende Funktion:
CREATE FUNCTION area_of_circle(radius FLOAT) RETURNS FLOAT ...
Der Wert der Namensspalte lautet:
MY_DB.MY_SCHEMA."AREA_OF_CIRCLE(RADIUS FLOAT):FLOAT"
Für die folgende Prozedur:
CREATE PROCEDURE output_message(message VARCHAR) RETURNS VARCHAR ...
lautet Wert in der Spalte „Name“:
MY_DB.MY_SCHEMA."OUTPUT_MESSAGE(MESSAGE VARCHAR):VARCHAR"
- Nach der Änderung:
Die Spalte
nameenthält nur die Typen der Argumente.Zum Beispiel für die folgende Funktion:
CREATE FUNCTION area_of_circle(radius FLOAT) RETURNS FLOAT ...
Der Wert der Namensspalte lautet:
MY_DB.MY_SCHEMA.AREA_OF_CIRCLE(FLOAT)
Für die folgende Prozedur:
CREATE PROCEDURE output_message(message VARCHAR) RETURNS VARCHAR ...
lautet Wert in der Spalte „Name“:
MY_DB.MY_SCHEMA.OUTPUT_MESSAGE(VARCHAR)
Durch diese Änderung ist es einfacher, den Wert in der Namensspalte von GRANT und REVOKE-Anweisungen zu verwenden, die Sie ausführen möchten.
Angenommen, Sie möchten die Berechtigungen für Funktionen und Prozeduren für die Rolle my_custom_role widerrufen. Sie können den Befehl SHOW GRANTS ausführen:
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) |
+-----------+------------+-----------------------------------------+
Dann können Sie die zurückgegebenen Werte kopieren und in REVOKE-Anweisungen zum Entziehen dieser Berechtigungen einfügen:
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