Skip to main content
データベースにカスタムの型、関数、および機能を追加するには、VillageSQLの拡張機能をインストールします。

コマンド構文

VERSION が指定されると、サーバーは {name}-{version}.veb を開き、 バージョンをマニフェストと照合し、一致しない場合は中止します。
この句を省略すると {name}.veb がインストールされます。または、バージョン付きの VEB のみが存在する場合は、一意の {name}-{version}.veb がインストールされます。 バージョンの選択を参照してください。
拡張機能は、コンパイルされたライブラリとメタデータを含む.veb(VillageSQL拡張機能バンドル)ファイルとして配布されます。

バージョンの選択

veb_dir 内の VEB ファイルの名前は、{name}.veb(バージョンなし)または {name}-{version}.veb(バージョン付き)のいずれかになります。特定のバージョン付き VEB をインストールするには、VERSION 句を追加します。
VERSION を指定すると、サーバーは vsql_uuid-0.2.0.veb を開き、その manifest.json 内のバージョンが 0.2.0 と一致することを確認します。 VERSION を指定しない場合、サーバーは次のようにファイルを解決します。
  • {name}.veb が存在する場合は、それをインストールします。バージョンはその manifest.json から読み取られます。
  • それ以外の場合、{name}-{version}.veb がちょうど 1 つ存在すれば、それをインストールします。ファイル名内のバージョンはその manifest.json と照合して検証されます。
  • それ以外の場合、インストールは失敗し、バージョンを指定する必要があります。
複数のバージョン付き VEB が存在し、バージョンなしの VEB が存在しない場合、INSTALL EXTENSIONMultiple versions of extension '<name>' found in '<dir>'; specify a version with INSTALL EXTENSION <name> VERSION 'x.y.z' で失敗します。明示的な VERSION 句を付けて再実行してください。

拡張機能の命名規則

VillageSQLは、異なるコンテキストで異なる命名規則を使用します。
  • SQLコマンド: アンダースコアを使用します: INSTALL EXTENSION vsql_uuid
  • リポジトリ名: ハイフンを使用します: github.com/villagesql/vsql-uuid
  • ファイル名: アンダースコアを使用します: vsql_uuid.veb
  • manifest.json: SQLと一致するようにアンダースコアを使用します: "name": "vsql_uuid"
例:

必要な権限

INSTALL EXTENSIONUNINSTALL EXTENSION、および ALTER EXTENSION は、 EXTENSION_ADMIN 動的権限によって保護されています。これらのステートメントは、 実行中のサーバーにネイティブの拡張機能コードをロードするため、管理権限を必要とし、 権限のないアカウントでは使用できません。 EXTENSION_ADMIN は、グローバルスコープ(ON *.*)で付与される動的権限です。
下位互換性のためのフォールバックとして SUPER も受け入れられます。そのため、 すでに SUPER を保持しているアカウントは、別途付与を受けなくてもこれらの ステートメントを実行できます。 --initialize または --initialize-insecure によって作成されたデータディレクトリは、 root@localhostEXTENSION_ADMIN を直接付与するため、新しいサーバーで手動の付与は 不要です。既存のデータディレクトリをその場でアップグレードした場合、SUPER を保持する すべてのユーザーアカウントに EXTENSION_ADMIN が付与されます。ただしこれは、いずれの アカウントもまだその権限を保持していない場合に限られるため、一度アップグレードされた サーバーが後のアップグレードで再度補填されることはありません。予約された mysql.* システムアカウントは除外されます。 どちらの権限も持たないアカウントは、拡張機能の処理が始まる前に拒否されます。
権限の取り消しも同じ方法で行います。
取り消しは次回の接続時ではなく、直ちに有効になります。サーバーは、拡張機能の DDL ステートメントごとに、アカウントの現在の権限に対して EXTENSION_ADMIN/SUPER を チェックします。そのため、既存のセッションが取り消し後も権限を保持し続けることは ありません。そのセッションの次のステートメントは、上に示したものと同じ ERROR 1227 (42000) で失敗します。

前提条件

  • 実行中のVillageSQLサーバーインスタンス
  • 管理者権限(rootまたは同等の権限)

組み込み拡張機能のインストール

VillageSQLに付属する組み込み拡張機能は、すでにveb_dirにあります。単に有効にするだけです。

インストールの確認

出力:

機能のテスト

外部拡張機能のインストール

別途ダウンロードまたは構築された拡張機能の場合:
外部拡張機能をインストールする前に、サーバーでveb_dirを構成する必要があります。 veb_dirの構成を参照してください。

1. .vebファイルのコピー

サーバーの拡張機能ディレクトリを見つけて、そこに.vebファイルをコピーします。

2. 拡張機能のインストール

想定されるバージョンを固定するには(CI やスクリプト化されたロールアウトで役立ちます)、 VERSION 句を含めます。
マニフェストが異なるバージョンを報告する場合、インストールは失敗し、何も 登録されません。
これはフォールバックファイルのパス({name}-{version}.veb が存在しない場合)です。 先に示した Version mismatch in '<file>' エラーとは異なるコードパスであり、 そちらはバージョン付きのファイル自体が存在する場合に発生します。

3. インストールの確認

トラブルシューティング

さらにトラブルシューティングについては、拡張機能の管理を参照してください。

次のステップ

拡張機能の管理

インストールされた拡張機能を監視およびトラブルシューティングします。

利用可能な拡張機能

インストールできる拡張機能を参照します。

拡張機能の作成

独自の拡張機能を構築します。