mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-10-28 06:36:18 +00:00
feat: introduce vector type (#4964)
* feat: introduce vector type Signed-off-by: Zhenchi <zhongzc_arch@outlook.com> * test: fix prepared stmt Signed-off-by: Zhenchi <zhongzc_arch@outlook.com> * test: add grpc test Signed-off-by: Zhenchi <zhongzc_arch@outlook.com> * test: parse vector value Signed-off-by: Zhenchi <zhongzc_arch@outlook.com> * test: column to row Signed-off-by: Zhenchi <zhongzc_arch@outlook.com> * test: sqlness Signed-off-by: Zhenchi <zhongzc_arch@outlook.com> * fix: merge issue Signed-off-by: Zhenchi <zhongzc_arch@outlook.com> * refactor: add check for bytes size Signed-off-by: Zhenchi <zhongzc_arch@outlook.com> * Update tests/cases/standalone/common/types/vector/vector.sql Co-authored-by: Ruihang Xia <waynestxia@gmail.com> * chore: update proto Signed-off-by: Zhenchi <zhongzc_arch@outlook.com> * chore: simplify cargo Signed-off-by: Zhenchi <zhongzc_arch@outlook.com> * chore: address comment Signed-off-by: Zhenchi <zhongzc_arch@outlook.com> --------- Signed-off-by: Zhenchi <zhongzc_arch@outlook.com> Co-authored-by: Ruihang Xia <waynestxia@gmail.com>
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
CREATE TABLE t (ts TIMESTAMP TIME INDEX, v VECTOR(3));
|
||||
|
||||
Affected Rows: 0
|
||||
|
||||
INSERT INTO t VALUES
|
||||
(1, "[1.0, 2.0, 3.0]"),
|
||||
(2, "[4.0, 5.0, 6.0]"),
|
||||
(3, "[7.0, 8.0, 9.0]");
|
||||
|
||||
Affected Rows: 3
|
||||
|
||||
-- SQLNESS PROTOCOL MYSQL
|
||||
SELECT * FROM t;
|
||||
|
||||
+----------------------------+---------+
|
||||
| ts | v |
|
||||
+----------------------------+---------+
|
||||
| 1970-01-01 00:00:00.001000 | [1,2,3] |
|
||||
| 1970-01-01 00:00:00.002000 | [4,5,6] |
|
||||
| 1970-01-01 00:00:00.003000 | [7,8,9] |
|
||||
+----------------------------+---------+
|
||||
|
||||
-- SQLNESS PROTOCOL POSTGRES
|
||||
SELECT * FROM t;
|
||||
|
||||
+----------------------------+-----------+
|
||||
| ts | v |
|
||||
+----------------------------+-----------+
|
||||
| 1970-01-01 00:00:00.001000 | "[1,2,3]" |
|
||||
| 1970-01-01 00:00:00.002000 | "[4,5,6]" |
|
||||
| 1970-01-01 00:00:00.003000 | "[7,8,9]" |
|
||||
+----------------------------+-----------+
|
||||
|
||||
-- Unexpected dimension --
|
||||
INSERT INTO t VALUES
|
||||
(4, "[1.0]");
|
||||
|
||||
Error: 1004(InvalidArguments), Invalid Vector: Failed to parse [1.0] to Vector value: wrong dimension
|
||||
|
||||
-- Invalid vector value --
|
||||
INSERT INTO t VALUES
|
||||
(5, "1.0,2.0,3.0");
|
||||
|
||||
Error: 1004(InvalidArguments), Invalid Vector: Failed to parse 1.0,2.0,3.0 to Vector value: not properly enclosed in brackets
|
||||
|
||||
-- Invalid vector value --
|
||||
INSERT INTO t VALUES
|
||||
(6, "[30h, 40s, 50m]");
|
||||
|
||||
Error: 1004(InvalidArguments), Invalid Vector: Failed to parse [30h, 40s, 50m] to Vector value: elements are not all float32
|
||||
|
||||
CREATE TABLE t2 (ts TIMESTAMP TIME INDEX, v VECTOR(3) DEFAULT '[1.0, 2.0, 3.0]');
|
||||
|
||||
Affected Rows: 0
|
||||
|
||||
INSERT INTO t2 (ts) VALUES
|
||||
(1),
|
||||
(2),
|
||||
(3);
|
||||
|
||||
Affected Rows: 3
|
||||
|
||||
-- SQLNESS PROTOCOL MYSQL
|
||||
SELECT * FROM t2;
|
||||
|
||||
+----------------------------+---------+
|
||||
| ts | v |
|
||||
+----------------------------+---------+
|
||||
| 1970-01-01 00:00:00.001000 | [1,2,3] |
|
||||
| 1970-01-01 00:00:00.002000 | [1,2,3] |
|
||||
| 1970-01-01 00:00:00.003000 | [1,2,3] |
|
||||
+----------------------------+---------+
|
||||
|
||||
-- SQLNESS PROTOCOL POSTGRES
|
||||
SELECT * FROM t2;
|
||||
|
||||
+----------------------------+-----------+
|
||||
| ts | v |
|
||||
+----------------------------+-----------+
|
||||
| 1970-01-01 00:00:00.001000 | "[1,2,3]" |
|
||||
| 1970-01-01 00:00:00.002000 | "[1,2,3]" |
|
||||
| 1970-01-01 00:00:00.003000 | "[1,2,3]" |
|
||||
+----------------------------+-----------+
|
||||
|
||||
DROP TABLE t;
|
||||
|
||||
Affected Rows: 0
|
||||
|
||||
DROP TABLE t2;
|
||||
|
||||
Affected Rows: 0
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
CREATE TABLE t (ts TIMESTAMP TIME INDEX, v VECTOR(3));
|
||||
|
||||
INSERT INTO t VALUES
|
||||
(1, "[1.0, 2.0, 3.0]"),
|
||||
(2, "[4.0, 5.0, 6.0]"),
|
||||
(3, "[7.0, 8.0, 9.0]");
|
||||
|
||||
-- SQLNESS PROTOCOL MYSQL
|
||||
SELECT * FROM t;
|
||||
|
||||
-- SQLNESS PROTOCOL POSTGRES
|
||||
SELECT * FROM t;
|
||||
|
||||
-- Unexpected dimension --
|
||||
INSERT INTO t VALUES
|
||||
(4, "[1.0]");
|
||||
|
||||
-- Invalid vector value --
|
||||
INSERT INTO t VALUES
|
||||
(5, "1.0,2.0,3.0");
|
||||
|
||||
-- Invalid vector value --
|
||||
INSERT INTO t VALUES
|
||||
(6, "[30h, 40s, 50m]");
|
||||
|
||||
CREATE TABLE t2 (ts TIMESTAMP TIME INDEX, v VECTOR(3) DEFAULT '[1.0, 2.0, 3.0]');
|
||||
|
||||
INSERT INTO t2 (ts) VALUES
|
||||
(1),
|
||||
(2),
|
||||
(3);
|
||||
|
||||
-- SQLNESS PROTOCOL MYSQL
|
||||
SELECT * FROM t2;
|
||||
|
||||
-- SQLNESS PROTOCOL POSTGRES
|
||||
SELECT * FROM t2;
|
||||
|
||||
DROP TABLE t;
|
||||
|
||||
DROP TABLE t2;
|
||||
Reference in New Issue
Block a user