ユーザー定義関数 (UDF) は、使用する前にサーバーにロードする必要があります。 MySQL では、実行時の手動 UDF ロードおよびサーバー起動時の自動ロードがサポートされています。
UDF がロードされている間、UDF に関する情報は セクション5.7.2「ユーザー定義関数情報の取得」 で説明されているように使用できます。
UDF を手動でロードするには、CREATE FUNCTION
ステートメントを使用します。 例:
CREATE FUNCTION metaphon
RETURNS STRING
SONAME 'udf_example.so';
UDF ファイルのベース名は、プラットフォームによって異なります。 一般的な接尾辞は、.so
for Unix および Unix のようなシステム、.dll
for Windows です。
CREATE FUNCTION
には、次の効果があります:
UDF がサーバーにロードされ、すぐに使用できるようになります。
UDF が
mysql.func
システムテーブルに登録され、サーバーの再起動後も保持されます。 このため、CREATE FUNCTION
には、mysql
システムデータベースに対するINSERT
権限が必要です。UDF は、インストールされている UDF に関する実行時情報を提供するパフォーマンススキーマ
user_defined_functions
テーブルに追加されます。 セクション5.7.2「ユーザー定義関数情報の取得」を参照してください。
UDF の自動ロードは、通常のサーバー起動シーケンス中に発生します:
mysql.func
テーブルに登録されている UDF がインストールされます。起動時にインストールされるコンポーネントまたはプラグインは、関連 UDF を自動的にインストールする場合があります。
UDF の自動インストールでは、UDF がパフォーマンススキーマ
user_defined_functions
テーブルに追加され、インストールされた UDF に関する実行時情報が提供されます。
--skip-grant-tables
オプションを使用してサーバーを起動した場合、mysql.func
テーブルに登録されている UDF はロードされず、使用できません。 これは、コンポーネントまたはプラグインによって自動的にインストールされる UDF には適用されません。
UDF を削除するには、DROP FUNCTION
ステートメントを使用します。 例:
DROP FUNCTION metaphon;
DROP FUNCTION
には、次の効果があります:
UDF をアンロードして使用できないようにします。
mysql.func
システムテーブルから UDF が削除されます。 このため、DROP FUNCTION
には、mysql
システムデータベースに対するDELETE
権限が必要です。 UDF がmysql.func
テーブルに登録されなくなったため、サーバーはその後の再起動時に UDF をロードしません。インストールされている UDF に関する実行時情報を提供する UDF がパフォーマンススキーマ
user_defined_functions
テーブルから削除されます。
DROP FUNCTION
を使用して、CREATE FUNCTION
を使用するのではなく、コンポーネントまたはプラグインによって自動的にインストールされる UDF を削除することはできません。 このような UDF は、UDF をインストールしたコンポーネントまたはプラグインがアンインストールされると、自動的に削除されます。