メインコンテンツへスキップ
複数の数値カラムがひとまとまりで、それらを 1 つの値としてクエリしたいときに vsql_cube を使用します。AND 条件を連ねれば、行が範囲内に入るかどうかは判定できますが、距離で行をランク付けすることはできません。cube 型はその両方を行います。これは PostgreSQL の cube 拡張機能の移植です。PostgreSQL の関数名の多くはそのまま引き継がれています。cube() コンストラクタ、演算子、およびそれらのサポート関数 (cube_contained、cube_overlap、distance_taxicab、distance_chebyshev) は、以下の名前付き関数になります。

インストール

インストールスクリプト、Docker イメージ、またはリリース tarball で VillageSQL をインストールした場合、vsql_cube.veb はすでにサーバーの lib/veb/ ディレクトリにあります。1 つのステートメントでサーバーにインストールします。
インストールされたことを確認します。
自分でビルドするには、リポジトリのビルド手順に従ってください。

追加される機能

cube 型

カラムを `cube`(N) として宣言します。N は値が持てる最大の次元数で、1 から 100 までです。cube は MySQL の予約語なのでバッククォートが必要で、次元数は必須です。
値は座標の文字列として書きます。カラムがそれを解析します。

関数

例

目標の読み取り値に最も近い 2 つのセンサーを見つけ、次に領域内のセンサーを見つけます。
cube 引数はカラムから次元数を得るため、呼び出しが動作するのは、cube 引数のいずれかがカラムの値であるか、cube_union や cube_enlarge のようにカラムの次元数を保つ関数の結果である場合です。cube_dim(cube_point_nd(1, 2)) のようにそのような引数を持たない呼び出しは、ERROR 3219 (HY000): Cannot initialize function 'cube_dim': cannot determine type parameters for vsql_cube.cube in argument 1 で失敗します。同じ理由で、cube_point_nd() で包むのではなく、素の座標文字列を挿入してください。cube_point_nd、cube_box_nd、cube_subset、および cube_add_dim の各座標引数には、カンマ区切りの文字列も渡せます。リストは端から端へつながります。したがって、cube_point_nd('1,2,3') と cube_point_nd(1, 2, 3) は同じ点を作ります。 座標がカラムにある場合は文字列を渡してください。これは個別の引数では表現できない唯一のケースです。

関連項目