mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-01-05 21:02:58 +00:00
* feat: add vec_subvector function * change datatype of arg1 and arg2 from u64 to i64 * add sqlness test * improve description comments
379 lines
16 KiB
Plaintext
379 lines
16 KiB
Plaintext
SELECT vec_to_string(parse_vec('[1.0, 2.0]'));
|
|
|
|
+----------------------------------------------+
|
|
| vec_to_string(parse_vec(Utf8("[1.0, 2.0]"))) |
|
|
+----------------------------------------------+
|
|
| [1,2] |
|
|
+----------------------------------------------+
|
|
|
|
SELECT vec_to_string(parse_vec('[1.0, 2.0, 3.0]'));
|
|
|
|
+---------------------------------------------------+
|
|
| vec_to_string(parse_vec(Utf8("[1.0, 2.0, 3.0]"))) |
|
|
+---------------------------------------------------+
|
|
| [1,2,3] |
|
|
+---------------------------------------------------+
|
|
|
|
SELECT vec_to_string(parse_vec('[]'));
|
|
|
|
+--------------------------------------+
|
|
| vec_to_string(parse_vec(Utf8("[]"))) |
|
|
+--------------------------------------+
|
|
| [] |
|
|
+--------------------------------------+
|
|
|
|
SELECT vec_to_string(vec_add('[1.0, 2.0]', '[3.0, 4.0]'));
|
|
|
|
+---------------------------------------------------------------+
|
|
| vec_to_string(vec_add(Utf8("[1.0, 2.0]"),Utf8("[3.0, 4.0]"))) |
|
|
+---------------------------------------------------------------+
|
|
| [4,6] |
|
|
+---------------------------------------------------------------+
|
|
|
|
SELECT vec_to_string(vec_add(parse_vec('[1.0, 2.0]'), '[3.0, 4.0]'));
|
|
|
|
+--------------------------------------------------------------------------+
|
|
| vec_to_string(vec_add(parse_vec(Utf8("[1.0, 2.0]")),Utf8("[3.0, 4.0]"))) |
|
|
+--------------------------------------------------------------------------+
|
|
| [4,6] |
|
|
+--------------------------------------------------------------------------+
|
|
|
|
SELECT vec_to_string(vec_add('[1.0, 2.0]', parse_vec('[3.0, 4.0]')));
|
|
|
|
+--------------------------------------------------------------------------+
|
|
| vec_to_string(vec_add(Utf8("[1.0, 2.0]"),parse_vec(Utf8("[3.0, 4.0]")))) |
|
|
+--------------------------------------------------------------------------+
|
|
| [4,6] |
|
|
+--------------------------------------------------------------------------+
|
|
|
|
SELECT vec_to_string(vec_mul('[1.0, 2.0]', '[3.0, 4.0]'));
|
|
|
|
+---------------------------------------------------------------+
|
|
| vec_to_string(vec_mul(Utf8("[1.0, 2.0]"),Utf8("[3.0, 4.0]"))) |
|
|
+---------------------------------------------------------------+
|
|
| [3,8] |
|
|
+---------------------------------------------------------------+
|
|
|
|
SELECT vec_to_string(vec_mul(parse_vec('[1.0, 2.0]'), '[3.0, 4.0]'));
|
|
|
|
+--------------------------------------------------------------------------+
|
|
| vec_to_string(vec_mul(parse_vec(Utf8("[1.0, 2.0]")),Utf8("[3.0, 4.0]"))) |
|
|
+--------------------------------------------------------------------------+
|
|
| [3,8] |
|
|
+--------------------------------------------------------------------------+
|
|
|
|
SELECT vec_to_string(vec_mul('[1.0, 2.0]', parse_vec('[3.0, 4.0]')));
|
|
|
|
+--------------------------------------------------------------------------+
|
|
| vec_to_string(vec_mul(Utf8("[1.0, 2.0]"),parse_vec(Utf8("[3.0, 4.0]")))) |
|
|
+--------------------------------------------------------------------------+
|
|
| [3,8] |
|
|
+--------------------------------------------------------------------------+
|
|
|
|
SELECT vec_to_string(vec_sub('[1.0, 1.0]', '[1.0, 2.0]'));
|
|
|
|
+---------------------------------------------------------------+
|
|
| vec_to_string(vec_sub(Utf8("[1.0, 1.0]"),Utf8("[1.0, 2.0]"))) |
|
|
+---------------------------------------------------------------+
|
|
| [0,-1] |
|
|
+---------------------------------------------------------------+
|
|
|
|
SELECT vec_to_string(vec_sub('[-1.0, -1.0]', '[1.0, 2.0]'));
|
|
|
|
+-----------------------------------------------------------------+
|
|
| vec_to_string(vec_sub(Utf8("[-1.0, -1.0]"),Utf8("[1.0, 2.0]"))) |
|
|
+-----------------------------------------------------------------+
|
|
| [-2,-3] |
|
|
+-----------------------------------------------------------------+
|
|
|
|
SELECT vec_to_string(vec_sub('[1.0, 1.0]', parse_vec('[1.0, 2.0]')));
|
|
|
|
+--------------------------------------------------------------------------+
|
|
| vec_to_string(vec_sub(Utf8("[1.0, 1.0]"),parse_vec(Utf8("[1.0, 2.0]")))) |
|
|
+--------------------------------------------------------------------------+
|
|
| [0,-1] |
|
|
+--------------------------------------------------------------------------+
|
|
|
|
SELECT vec_to_string(vec_sub('[-1.0, -1.0]', parse_vec('[1.0, 2.0]')));
|
|
|
|
+----------------------------------------------------------------------------+
|
|
| vec_to_string(vec_sub(Utf8("[-1.0, -1.0]"),parse_vec(Utf8("[1.0, 2.0]")))) |
|
|
+----------------------------------------------------------------------------+
|
|
| [-2,-3] |
|
|
+----------------------------------------------------------------------------+
|
|
|
|
SELECT vec_to_string(vec_sub(parse_vec('[1.0, 1.0]'), '[1.0, 2.0]'));
|
|
|
|
+--------------------------------------------------------------------------+
|
|
| vec_to_string(vec_sub(parse_vec(Utf8("[1.0, 1.0]")),Utf8("[1.0, 2.0]"))) |
|
|
+--------------------------------------------------------------------------+
|
|
| [0,-1] |
|
|
+--------------------------------------------------------------------------+
|
|
|
|
SELECT vec_to_string(vec_sub(parse_vec('[-1.0, -1.0]'), '[1.0, 2.0]'));
|
|
|
|
+----------------------------------------------------------------------------+
|
|
| vec_to_string(vec_sub(parse_vec(Utf8("[-1.0, -1.0]")),Utf8("[1.0, 2.0]"))) |
|
|
+----------------------------------------------------------------------------+
|
|
| [-2,-3] |
|
|
+----------------------------------------------------------------------------+
|
|
|
|
SELECT vec_elem_sum('[1.0, 2.0, 3.0]');
|
|
|
|
+---------------------------------------+
|
|
| vec_elem_sum(Utf8("[1.0, 2.0, 3.0]")) |
|
|
+---------------------------------------+
|
|
| 6.0 |
|
|
+---------------------------------------+
|
|
|
|
SELECT vec_elem_sum('[-1.0, -2.0, -3.0]');
|
|
|
|
+------------------------------------------+
|
|
| vec_elem_sum(Utf8("[-1.0, -2.0, -3.0]")) |
|
|
+------------------------------------------+
|
|
| -6.0 |
|
|
+------------------------------------------+
|
|
|
|
SELECT vec_elem_sum(parse_vec('[1.0, 2.0, 3.0]'));
|
|
|
|
+--------------------------------------------------+
|
|
| vec_elem_sum(parse_vec(Utf8("[1.0, 2.0, 3.0]"))) |
|
|
+--------------------------------------------------+
|
|
| 6.0 |
|
|
+--------------------------------------------------+
|
|
|
|
SELECT vec_elem_sum(parse_vec('[-1.0, -2.0, -3.0]'));
|
|
|
|
+-----------------------------------------------------+
|
|
| vec_elem_sum(parse_vec(Utf8("[-1.0, -2.0, -3.0]"))) |
|
|
+-----------------------------------------------------+
|
|
| -6.0 |
|
|
+-----------------------------------------------------+
|
|
|
|
SELECT vec_to_string(vec_div('[1.0, 2.0]', '[3.0, 4.0]'));
|
|
|
|
+---------------------------------------------------------------+
|
|
| vec_to_string(vec_div(Utf8("[1.0, 2.0]"),Utf8("[3.0, 4.0]"))) |
|
|
+---------------------------------------------------------------+
|
|
| [0.33333334,0.5] |
|
|
+---------------------------------------------------------------+
|
|
|
|
SELECT vec_to_string(vec_div(parse_vec('[1.0, 2.0]'), '[3.0, 4.0]'));
|
|
|
|
+--------------------------------------------------------------------------+
|
|
| vec_to_string(vec_div(parse_vec(Utf8("[1.0, 2.0]")),Utf8("[3.0, 4.0]"))) |
|
|
+--------------------------------------------------------------------------+
|
|
| [0.33333334,0.5] |
|
|
+--------------------------------------------------------------------------+
|
|
|
|
SELECT vec_to_string(vec_div('[1.0, 2.0]', parse_vec('[3.0, 4.0]')));
|
|
|
|
+--------------------------------------------------------------------------+
|
|
| vec_to_string(vec_div(Utf8("[1.0, 2.0]"),parse_vec(Utf8("[3.0, 4.0]")))) |
|
|
+--------------------------------------------------------------------------+
|
|
| [0.33333334,0.5] |
|
|
+--------------------------------------------------------------------------+
|
|
|
|
SELECT vec_to_string(vec_div('[1.0, -2.0]', parse_vec('[0.0, 0.0]')));
|
|
|
|
+---------------------------------------------------------------------------+
|
|
| vec_to_string(vec_div(Utf8("[1.0, -2.0]"),parse_vec(Utf8("[0.0, 0.0]")))) |
|
|
+---------------------------------------------------------------------------+
|
|
| [inf,-inf] |
|
|
+---------------------------------------------------------------------------+
|
|
|
|
SELECT vec_elem_product('[1.0, 2.0, 3.0, 4.0]');
|
|
|
|
+------------------------------------------------+
|
|
| vec_elem_product(Utf8("[1.0, 2.0, 3.0, 4.0]")) |
|
|
+------------------------------------------------+
|
|
| 24.0 |
|
|
+------------------------------------------------+
|
|
|
|
SELECT vec_elem_product('[-1.0, -2.0, -3.0, 4.0]');
|
|
|
|
+---------------------------------------------------+
|
|
| vec_elem_product(Utf8("[-1.0, -2.0, -3.0, 4.0]")) |
|
|
+---------------------------------------------------+
|
|
| -24.0 |
|
|
+---------------------------------------------------+
|
|
|
|
SELECT vec_elem_product(parse_vec('[1.0, 2.0, 3.0, 4.0]'));
|
|
|
|
+-----------------------------------------------------------+
|
|
| vec_elem_product(parse_vec(Utf8("[1.0, 2.0, 3.0, 4.0]"))) |
|
|
+-----------------------------------------------------------+
|
|
| 24.0 |
|
|
+-----------------------------------------------------------+
|
|
|
|
SELECT vec_elem_product(parse_vec('[-1.0, -2.0, -3.0, 4.0]'));
|
|
|
|
+--------------------------------------------------------------+
|
|
| vec_elem_product(parse_vec(Utf8("[-1.0, -2.0, -3.0, 4.0]"))) |
|
|
+--------------------------------------------------------------+
|
|
| -24.0 |
|
|
+--------------------------------------------------------------+
|
|
|
|
SELECT vec_to_string(vec_norm('[0.0, 2.0, 3.0]'));
|
|
|
|
+--------------------------------------------------+
|
|
| vec_to_string(vec_norm(Utf8("[0.0, 2.0, 3.0]"))) |
|
|
+--------------------------------------------------+
|
|
| [0,0.5547002,0.8320503] |
|
|
+--------------------------------------------------+
|
|
|
|
SELECT vec_to_string(vec_norm('[1.0, 2.0, 3.0]'));
|
|
|
|
+--------------------------------------------------+
|
|
| vec_to_string(vec_norm(Utf8("[1.0, 2.0, 3.0]"))) |
|
|
+--------------------------------------------------+
|
|
| [0.26726124,0.5345225,0.8017837] |
|
|
+--------------------------------------------------+
|
|
|
|
SELECT vec_to_string(vec_norm('[7.0, 8.0, 9.0]'));
|
|
|
|
+--------------------------------------------------+
|
|
| vec_to_string(vec_norm(Utf8("[7.0, 8.0, 9.0]"))) |
|
|
+--------------------------------------------------+
|
|
| [0.5025707,0.5743665,0.64616233] |
|
|
+--------------------------------------------------+
|
|
|
|
SELECT vec_to_string(vec_norm('[7.0, -8.0, 9.0]'));
|
|
|
|
+---------------------------------------------------+
|
|
| vec_to_string(vec_norm(Utf8("[7.0, -8.0, 9.0]"))) |
|
|
+---------------------------------------------------+
|
|
| [0.5025707,-0.5743665,0.64616233] |
|
|
+---------------------------------------------------+
|
|
|
|
SELECT vec_to_string(vec_norm(parse_vec('[7.0, -8.0, 9.0]')));
|
|
|
|
+--------------------------------------------------------------+
|
|
| vec_to_string(vec_norm(parse_vec(Utf8("[7.0, -8.0, 9.0]")))) |
|
|
+--------------------------------------------------------------+
|
|
| [0.5025707,-0.5743665,0.64616233] |
|
|
+--------------------------------------------------------------+
|
|
|
|
SELECT vec_to_string(vec_sum(v))
|
|
FROM (
|
|
SELECT '[1.0, 2.0, 3.0]' AS v
|
|
UNION ALL
|
|
SELECT '[-1.0, -2.0, -3.0]' AS v
|
|
UNION ALL
|
|
SELECT '[4.0, 5.0, 6.0]' AS v
|
|
);
|
|
|
|
+---------------------------+
|
|
| vec_to_string(vec_sum(v)) |
|
|
+---------------------------+
|
|
| [4,5,6] |
|
|
+---------------------------+
|
|
|
|
SELECT vec_to_string(vec_product(v))
|
|
FROM (
|
|
SELECT '[1.0, 2.0, 3.0]' AS v
|
|
UNION ALL
|
|
SELECT '[-1.0, -2.0, -3.0]' AS v
|
|
UNION ALL
|
|
SELECT '[4.0, 5.0, 6.0]' AS v
|
|
);
|
|
|
|
+-------------------------------+
|
|
| vec_to_string(vec_product(v)) |
|
|
+-------------------------------+
|
|
| [-4,-20,-54] |
|
|
+-------------------------------+
|
|
|
|
SELECT vec_dim('[7.0, 8.0, 9.0, 10.0]');
|
|
|
|
+----------------------------------------+
|
|
| vec_dim(Utf8("[7.0, 8.0, 9.0, 10.0]")) |
|
|
+----------------------------------------+
|
|
| 4 |
|
|
+----------------------------------------+
|
|
|
|
SELECT v, vec_dim(v)
|
|
FROM (
|
|
SELECT '[1.0, 2.0, 3.0]' AS v
|
|
UNION ALL
|
|
SELECT '[-1.0]' AS v
|
|
UNION ALL
|
|
SELECT '[4.0, 5.0, 6.0]' AS v
|
|
) Order By vec_dim(v) ASC;
|
|
|
|
+-----------------+------------+
|
|
| v | vec_dim(v) |
|
|
+-----------------+------------+
|
|
| [-1.0] | 1 |
|
|
| [1.0, 2.0, 3.0] | 3 |
|
|
| [4.0, 5.0, 6.0] | 3 |
|
|
+-----------------+------------+
|
|
|
|
SELECT v, vec_dim(v)
|
|
FROM (
|
|
SELECT '[1.0, 2.0, 3.0]' AS v
|
|
UNION ALL
|
|
SELECT '[-1.0]' AS v
|
|
UNION ALL
|
|
SELECT '[7.0, 8.0, 9.0, 10.0]' AS v
|
|
) Order By vec_dim(v) ASC;
|
|
|
|
+-----------------------+------------+
|
|
| v | vec_dim(v) |
|
|
+-----------------------+------------+
|
|
| [-1.0] | 1 |
|
|
| [1.0, 2.0, 3.0] | 3 |
|
|
| [7.0, 8.0, 9.0, 10.0] | 4 |
|
|
+-----------------------+------------+
|
|
|
|
SELECT vec_to_string(vec_subvector('[1.0,2.0,3.0,4.0,5.0]', 0, 3));
|
|
|
|
+-------------------------------------------------------------------------------+
|
|
| vec_to_string(vec_subvector(Utf8("[1.0,2.0,3.0,4.0,5.0]"),Int64(0),Int64(3))) |
|
|
+-------------------------------------------------------------------------------+
|
|
| [1,2,3] |
|
|
+-------------------------------------------------------------------------------+
|
|
|
|
SELECT vec_to_string(vec_subvector('[1.0,2.0,3.0,4.0,5.0]', 5, 5));
|
|
|
|
+-------------------------------------------------------------------------------+
|
|
| vec_to_string(vec_subvector(Utf8("[1.0,2.0,3.0,4.0,5.0]"),Int64(5),Int64(5))) |
|
|
+-------------------------------------------------------------------------------+
|
|
| [] |
|
|
+-------------------------------------------------------------------------------+
|
|
|
|
SELECT v, vec_to_string(vec_subvector(v, 3, 5))
|
|
FROM (
|
|
SELECT '[1.0, 2.0, 3.0, 4.0, 5.0]' AS v
|
|
UNION ALL
|
|
SELECT '[-1.0, -2.0, -3.0, -4.0, -5.0, -6.0]' AS v
|
|
UNION ALL
|
|
SELECT '[4.0, 5.0, 6.0, 10, -8, 100]' AS v
|
|
) ORDER BY v;
|
|
|
|
+--------------------------------------+---------------------------------------------------+
|
|
| v | vec_to_string(vec_subvector(v,Int64(3),Int64(5))) |
|
|
+--------------------------------------+---------------------------------------------------+
|
|
| [-1.0, -2.0, -3.0, -4.0, -5.0, -6.0] | [-4,-5] |
|
|
| [1.0, 2.0, 3.0, 4.0, 5.0] | [4,5] |
|
|
| [4.0, 5.0, 6.0, 10, -8, 100] | [10,-8] |
|
|
+--------------------------------------+---------------------------------------------------+
|
|
|
|
SELECT vec_to_string(vec_subvector(v, 0, 5))
|
|
FROM (
|
|
SELECT '[1.1, 2.2, 3.3, 4.4, 5.5]' AS v
|
|
UNION ALL
|
|
SELECT '[-1.1, -2.1, -3.1, -4.1, -5.1, -6.1]' AS v
|
|
UNION ALL
|
|
SELECT '[4.0, 5.0, 6.0, 10, -8, 100]' AS v
|
|
) ORDER BY v;
|
|
|
|
+---------------------------------------------------+
|
|
| vec_to_string(vec_subvector(v,Int64(0),Int64(5))) |
|
|
+---------------------------------------------------+
|
|
| [-1.1,-2.1,-3.1,-4.1,-5.1] |
|
|
| [1.1,2.2,3.3,4.4,5.5] |
|
|
| [4,5,6,10,-8] |
|
|
+---------------------------------------------------+
|
|
|