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_name、persisted_length、max_decode_buffer_length、encode、decode、および compare が必要です。 hash と default はオプションですが、推奨されます。
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 は失敗します。
