Skip to main content
VillageSQL は MySQL のトラッキングフォークであり、ドロップイン置換として機能します。MySQL のプラグインおよびコンポーネントインターフェースは、MySQL と同様に VillageSQL でも動作します。VillageSQL は、VillageSQL 拡張フレームワーク(VEF)を提供します。新しい機能(カスタム SQL 関数、カスタム型、統合など)を追加するには、VEF 拡張機能が適切なモデルです。

どこに配置するか

新しいものを構築する場合は、独自のリポジトリに VEF 拡張機能を構築します。プラグインとコンポーネントも機能しますが、VEF が適切なモデルです。詳しくは、プラグインとコンポーネントの代わりに拡張機能を使用する理由をご覧ください。 VillageSQL Server リポジトリに属するコントリビューション:

プラグインとコンポーネントの代わりに拡張機能を使用する理由

MySQL プラグインとコンポーネントは VillageSQL で動作します。VEF 拡張機能では、さらに多くの機能を利用できます。
  • カスタム型 — 新しい列タイプを定義できます。これは、プラグインや UDF ではできません。
  • パッケージング.veb ファイルとして配布され、INSTALL EXTENSION でインストールされます。
  • 再起動は不要 — 拡張機能は実行時にロードおよびアンロードされます。
  • バージョン管理 — 拡張機能のマニフェストで宣言され、サーバーによって強制されます。

新しい拡張機能の開始

VEF には 2 つの SDK があり、どちらも同じフレームワークを通じて登録します。 現時点では C++ SDK のほうが充実しています(mysql_services、sql_query、statement_event、列ストレージ)。Rust SDK は、関数(集約、可変長引数、および prerun/postrun の状態管理を含む)、カスタム型、および 4 つのプレビュー機能(status_var、sys_var、thread_worker、keyring)に対応しています。Rustにおけるプレビュー機能を参照してください。

VEF で必要な機能がサポートされていない場合

VEF はまだ発展中です。まだ存在しないフックまたは機能が必要な場合は、次の手順を実行します。
  • サーバーリポジトリに、必要なものを説明する Issue を提出します。
  • リクエストがすでにある場合は、既存の Issue に賛成票を投じます。
  • フックを VEF に追加する PR を提出します。 フレームワークの改善は、サーバーリポジトリで歓迎されます。