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 name enthä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
  ...
Copy

Der Wert der Namensspalte lautet:

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

Für die folgende Prozedur:

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

lautet Wert in der Spalte „Name“:

MY_DB.MY_SCHEMA."OUTPUT_MESSAGE(MESSAGE VARCHAR):VARCHAR"
Copy
Nach der Änderung:

Die Spalte name enthält nur die Typen der Argumente.

Zum Beispiel für die folgende Funktion:

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

Der Wert der Namensspalte lautet:

MY_DB.MY_SCHEMA.AREA_OF_CIRCLE(FLOAT)
Copy

Für die folgende Prozedur:

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

lautet Wert in der Spalte „Name“:

MY_DB.MY_SCHEMA.OUTPUT_MESSAGE(VARCHAR)
Copy

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

Ref: 2190