Skip to main content
Rust SDK はバージョン 0.0.1 です。
このページは、villagesql クレート API のリファレンスです。 入門チュートリアルについては、Rust で拡張機能を構築する を参照してください。 カスタム型については、Rust のカスタム型 を参照してください。

InValue

InValue は、サーバーが各関数の引数に対して渡す列挙型です。 関数は args: &[InValue] を受け取り、その値を使用する前に各引数をチェックする必要があります。
常に Null を明示的にパターンマッチングしてください。 .unwrap() を呼び出すか、値のバリアントのみをパターンマッチングすると、バグになります。 SQL NULL はエラーではなく、通常の入力です。

VdfReturn

VdfReturn は、関数がサーバーに返す値です。 関連する関数のいずれかを使用して構築します。 警告とエラー: warning は、残りの結果セットで処理を続けることが理にかなう、ユーザー入力の検証エラーに使用します。 厳密モードでは、MySQL は INSERT および UPDATE で警告をエラーに昇格させます。 error は、処理を続行することが安全でない場合に使用します。たとえば、保存されたデータを破損したり、内部の不変条件に違反したりする場合です。 致命的なエラーは、ステートメント全体を中止します。

extension! マクロ

extension! は、サーバーが VEB ファイルをロードするときに呼び出す VEF エントリポイントを生成します。 これは、クレート内に正確に 1 つ存在する必要があります。
どちらのセクションもオプションです。 純粋な関数拡張機能では types: を省略し、型のみの拡張機能では funcs: を省略します。 空の extension! ブロック (関数も型もなし) は有効ですが、何も行わない拡張機能が生成されます。

func! マクロ

func! は、SQL で呼び出すことができる関数を宣言します。 位置引数:
func! で使用する 型定数:

custom_type! マクロ

custom_type! は、新しい列タイプを登録します。 type_namepersisted_lengthmax_decode_buffer_lengthencodedecode、および compare が必要です。 hashdefault はオプションですが、推奨されます。
default フィールドは、列のデフォルト値ではありません。 これは、起動時のプローブです。 サーバーは、拡張機能をロードするときに encode(default) を呼び出して、コールバックが機能していることを確認します。 encode がデフォルトに対して Err を返す場合、拡張機能のロードは失敗します。

custom! マクロ

villagesql::custom!("type_name") は、func! 宣言でカスタム型を参照します。
villagesql::Type::* がパラメータリストまたは戻り値の位置に表示される場所であれば、どこでも使用できます。 文字列は、対応する custom_type! で宣言された type_name と一致する必要があります。

manifest.json フィールド

すべての拡張機能には、Cargo.toml の横に manifest.json が必要です。
name の検証ルール: 文字で始まり、文字または数字で終わり、最大 64 文字。 マニフェストが無効な場合、INSTALL EXTENSION は失敗します。