SHOW GRANTS:関数およびプロシージャに対する付与の出力の変更(保留中)

注意

この動作変更は2026_01バンドルにあります。

バンドルの現在のステータスについては、 バンドル履歴 をご参照ください。

SHOW GRANTS コマンドの出力では、名前列の値は、関数とプロシージャのために変更されます。

変更前:

name 列には、引数の名前と型、および戻り型が含まれます。

たとえば、次の関数の場合

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

名前列の値は次のとおりです。

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

次のプロシージャの場合

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

名前列の値は次のとおりです。

MY_DB.MY_SCHEMA."OUTPUT_MESSAGE(MESSAGE VARCHAR):VARCHAR"
Copy
変更後:

name 列には、引数の型のみが含まれます。

たとえば、次の関数の場合

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

名前列の値は次のとおりです。

MY_DB.MY_SCHEMA.AREA_OF_CIRCLE(FLOAT)
Copy

次のプロシージャの場合

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

名前列の値は次のとおりです。

MY_DB.MY_SCHEMA.OUTPUT_MESSAGE(VARCHAR)
Copy

この変更により、実行する GRANT および REVOKE ステートメントの名前列の値が使いやすくなります。

たとえば、 my_custom_role ロールに付与された関数とプロシージャの権限を取り消したいとします。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) |
+-----------+------------+-----------------------------------------+

その後、戻り値をコピーして REVOKE ステートメントに貼り付け、これらの権限を取り消すことができます。

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

参照:2190