メインコンテンツへスキップ

VillageSQL is a drop-in replacement for MySQL with extensions.

All examples on this page work on VillageSQL. Install Now →
VillageSQL 拡張機能は、villagesql クレートを使って Rust で書けます。SDK がすべての FFI マーシャリングを処理します。あなたは通常の Rust を書き、extension! マクロが、サーバーがロード時に呼び出す C のエントリポイントを生成します。

Rust を選ぶべき場面

次の場合、Rust が正しい選択です。
  • Rust を好み、C++ のコードベースを必要としない
  • ガベージコレクタなしでメモリ安全性が欲しい
  • 新しい拡張機能を構築しており、既存の C++ 依存関係がない
既存の C++ コードベースがある場合、または現時点で最も完全なカスタム型ビルダー API が必要な場合は、C++ 拡張機能の作成を参照してください。
API は拡張機能の開発に対して安定していますが、カスタム型ビルダー API はまだ成熟途上です。

前提条件

必要なものは次のとおりです。
  • Rust の stable ツールチェーン — rustup.rs からインストール
  • cargo-vsql — パッケージング、インストール、およびテストのための Cargo サブコマンド
SDK リポジトリから cargo-vsql をインストールします。

新しいクレートのセットアップ

ライブラリクレートを作成し、SDK を追加して、設定します。
次に Cargo.toml でクレートの種類を設定します。
Cargo.toml と同じ場所に manifest.json を追加します。

関数を書く

Rust での拡張機能の構築のページに、ROT-13 の例を使った完全な手順があります。要点は次のとおりです。fn(&[InValue]) -> VdfReturn を実装し、func! で登録し、全体を extension! で包みます。
カスタム型(バイナリ格納、順序付け、ハッシュ化)については、Rust のカスタム型を参照してください。

拡張機能のテスト

mysql-test/t/basic.test にテストを書きます。
VillageSQL のビルドディレクトリを設定し、期待される結果を生成してから、実行します。
成功した実行は、テストファイルごとに [ pass ] を出力します。

SQL でのインストール

パッケージングしてインストールします。
次に SQL で実行します。

関連項目