mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-01-09 06:42:57 +00:00
* fix: support unknown for timestamp function Signed-off-by: yihong0618 <zouzou0208@gmail.com> * fix: some sqlness now no error Signed-off-by: yihong0618 <zouzou0208@gmail.com> * fix: make clippy happy Signed-off-by: yihong0618 <zouzou0208@gmail.com> * fix: address comments Signed-off-by: yihong0618 <zouzou0208@gmail.com> * fix: address comments Signed-off-by: yihong0618 <zouzou0208@gmail.com> --------- Signed-off-by: yihong0618 <zouzou0208@gmail.com>
353 lines
14 KiB
Plaintext
353 lines
14 KiB
Plaintext
CREATE TABLE angles (
|
|
ts timestamp(3) time index,
|
|
unit STRING PRIMARY KEY,
|
|
val DOUBLE,
|
|
);
|
|
|
|
Affected Rows: 0
|
|
|
|
INSERT INTO TABLE angles VALUES
|
|
(0, 'radians', 0),
|
|
(0, 'degrees', 0),
|
|
(5000, 'radians', 1.5708), -- π/2
|
|
(5000, 'degrees', 90),
|
|
(10000, 'radians', 3.1416), -- π
|
|
(10000, 'degrees', 180),
|
|
(15000, 'radians', 4.7124), -- 3π/2
|
|
(15000, 'degrees', 270),
|
|
(20000, 'radians', 6.2832), -- 2π
|
|
(20000, 'degrees', 360),
|
|
(25000, 'positive', 42.5),
|
|
(25000, 'negative', -17.3),
|
|
(30000, 'zero', 0),
|
|
(30000, 'small_pos', 0.001),
|
|
(35000, 'small_neg', -0.001);
|
|
|
|
Affected Rows: 15
|
|
|
|
-- Test pi() function (returns constant π ≈ 3.141592653589793)
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
TQL EVAL (0, 20, '5s') pi();
|
|
|
|
+---------------------+-------------------+
|
|
| time | pi() |
|
|
+---------------------+-------------------+
|
|
| 1970-01-01T00:00:00 | 3.141592653589793 |
|
|
| 1970-01-01T00:00:05 | 3.141592653589793 |
|
|
| 1970-01-01T00:00:10 | 3.141592653589793 |
|
|
| 1970-01-01T00:00:15 | 3.141592653589793 |
|
|
| 1970-01-01T00:00:20 | 3.141592653589793 |
|
|
+---------------------+-------------------+
|
|
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
TQL EVAL (0, 20, '5s') pi() + 1;
|
|
|
|
+---------------------+-------------------+
|
|
| time | pi() + Float64(1) |
|
|
+---------------------+-------------------+
|
|
| 1970-01-01T00:00:00 | 4.141592653589793 |
|
|
| 1970-01-01T00:00:05 | 4.141592653589793 |
|
|
| 1970-01-01T00:00:10 | 4.141592653589793 |
|
|
| 1970-01-01T00:00:15 | 4.141592653589793 |
|
|
| 1970-01-01T00:00:20 | 4.141592653589793 |
|
|
+---------------------+-------------------+
|
|
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
TQL EVAL (0, 20, '5s') angles{unit="radians"} * pi();
|
|
|
|
+---------------------+--------------------+
|
|
| time | angles.val * .pi() |
|
|
+---------------------+--------------------+
|
|
| 1970-01-01T00:00:00 | 0.0 |
|
|
| 1970-01-01T00:00:05 | 4.934813740258847 |
|
|
| 1970-01-01T00:00:10 | 9.869627480517694 |
|
|
| 1970-01-01T00:00:15 | 14.80444122077654 |
|
|
| 1970-01-01T00:00:20 | 19.73925496103539 |
|
|
+---------------------+--------------------+
|
|
|
|
-- Test rad() function (converts degrees to radians)
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
TQL EVAL (0, 20, '5s') rad(angles{unit="degrees"});
|
|
|
|
+---------------------+--------------------+---------+
|
|
| ts | radians(val) | unit |
|
|
+---------------------+--------------------+---------+
|
|
| 1970-01-01T00:00:00 | 0.0 | degrees |
|
|
| 1970-01-01T00:00:05 | 1.5707963267948966 | degrees |
|
|
| 1970-01-01T00:00:10 | 3.141592653589793 | degrees |
|
|
| 1970-01-01T00:00:15 | 4.71238898038469 | degrees |
|
|
| 1970-01-01T00:00:20 | 6.283185307179586 | degrees |
|
|
+---------------------+--------------------+---------+
|
|
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
TQL EVAL (0, 20, '5s') rad(angles);
|
|
|
|
+---------------------+---------------------+---------+
|
|
| ts | radians(val) | unit |
|
|
+---------------------+---------------------+---------+
|
|
| 1970-01-01T00:00:00 | 0.0 | degrees |
|
|
| 1970-01-01T00:00:00 | 0.0 | radians |
|
|
| 1970-01-01T00:00:05 | 0.02741563189032693 | radians |
|
|
| 1970-01-01T00:00:05 | 1.5707963267948966 | degrees |
|
|
| 1970-01-01T00:00:10 | 0.05483126378065386 | radians |
|
|
| 1970-01-01T00:00:10 | 3.141592653589793 | degrees |
|
|
| 1970-01-01T00:00:15 | 0.08224689567098079 | radians |
|
|
| 1970-01-01T00:00:15 | 4.71238898038469 | degrees |
|
|
| 1970-01-01T00:00:20 | 0.10966252756130772 | radians |
|
|
| 1970-01-01T00:00:20 | 6.283185307179586 | degrees |
|
|
+---------------------+---------------------+---------+
|
|
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
TQL EVAL (0, 20, '5s') scalar(rad(angles{unit="degrees"}));
|
|
|
|
+---------------------+----------------------+
|
|
| ts | scalar(radians(val)) |
|
|
+---------------------+----------------------+
|
|
| 1970-01-01T00:00:00 | 0.0 |
|
|
| 1970-01-01T00:00:05 | 1.5707963267948966 |
|
|
| 1970-01-01T00:00:10 | 3.141592653589793 |
|
|
| 1970-01-01T00:00:15 | 4.71238898038469 |
|
|
| 1970-01-01T00:00:20 | 6.283185307179586 |
|
|
+---------------------+----------------------+
|
|
|
|
-- Test deg() function (converts radians to degrees)
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
TQL EVAL (0, 20, '5s') deg(angles{unit="radians"});
|
|
|
|
+---------------------+--------------------+---------+
|
|
| ts | degrees(val) | unit |
|
|
+---------------------+--------------------+---------+
|
|
| 1970-01-01T00:00:00 | 0.0 | radians |
|
|
| 1970-01-01T00:00:05 | 90.00021045914971 | radians |
|
|
| 1970-01-01T00:00:10 | 180.00042091829943 | radians |
|
|
| 1970-01-01T00:00:15 | 270.0006313774491 | radians |
|
|
| 1970-01-01T00:00:20 | 360.00084183659885 | radians |
|
|
+---------------------+--------------------+---------+
|
|
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
TQL EVAL (0, 20, '5s') deg(angles);
|
|
|
|
+---------------------+--------------------+---------+
|
|
| ts | degrees(val) | unit |
|
|
+---------------------+--------------------+---------+
|
|
| 1970-01-01T00:00:00 | 0.0 | degrees |
|
|
| 1970-01-01T00:00:00 | 0.0 | radians |
|
|
| 1970-01-01T00:00:05 | 5156.620156177409 | degrees |
|
|
| 1970-01-01T00:00:05 | 90.00021045914971 | radians |
|
|
| 1970-01-01T00:00:10 | 10313.240312354817 | degrees |
|
|
| 1970-01-01T00:00:10 | 180.00042091829943 | radians |
|
|
| 1970-01-01T00:00:15 | 15469.860468532228 | degrees |
|
|
| 1970-01-01T00:00:15 | 270.0006313774491 | radians |
|
|
| 1970-01-01T00:00:20 | 20626.480624709635 | degrees |
|
|
| 1970-01-01T00:00:20 | 360.00084183659885 | radians |
|
|
+---------------------+--------------------+---------+
|
|
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
TQL EVAL (0, 20, '5s') scalar(deg(angles{unit="radians"}));
|
|
|
|
+---------------------+----------------------+
|
|
| ts | scalar(degrees(val)) |
|
|
+---------------------+----------------------+
|
|
| 1970-01-01T00:00:00 | 0.0 |
|
|
| 1970-01-01T00:00:05 | 90.00021045914971 |
|
|
| 1970-01-01T00:00:10 | 180.00042091829943 |
|
|
| 1970-01-01T00:00:15 | 270.0006313774491 |
|
|
| 1970-01-01T00:00:20 | 360.00084183659885 |
|
|
+---------------------+----------------------+
|
|
|
|
-- Test conversions with pi()
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
TQL EVAL (0, 20, '5s') rad(deg(pi()));
|
|
|
|
Error: 2000(InvalidSyntax), expected type vector in call to function 'deg', got scalar
|
|
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
TQL EVAL (0, 20, '5s') deg(rad(pi()));
|
|
|
|
Error: 2000(InvalidSyntax), expected type vector in call to function 'rad', got scalar
|
|
|
|
-- Test with arithmetic operations
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
TQL EVAL (0, 20, '5s') deg(angles{unit="radians"}) + rad(angles{unit="degrees"});
|
|
|
|
++
|
|
++
|
|
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
TQL EVAL (0, 20, '5s') deg(pi() * 2);
|
|
|
|
Error: 2000(InvalidSyntax), expected type vector in call to function 'deg', got scalar
|
|
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
TQL EVAL (0, 20, '5s') rad(180 * angles{unit="radians"});
|
|
|
|
+---------------------+-----------------------------+---------+
|
|
| ts | radians(Float64(180) * val) | unit |
|
|
+---------------------+-----------------------------+---------+
|
|
| 1970-01-01T00:00:00 | 0.0 | radians |
|
|
| 1970-01-01T00:00:05 | 4.934813740258846 | radians |
|
|
| 1970-01-01T00:00:10 | 9.869627480517693 | radians |
|
|
| 1970-01-01T00:00:15 | 14.80444122077654 | radians |
|
|
| 1970-01-01T00:00:20 | 19.739254961035385 | radians |
|
|
+---------------------+-----------------------------+---------+
|
|
|
|
-- Test sgn() function (returns sign of values: -1, 0, or 1)
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
TQL EVAL (0, 35, '5s') sgn(angles{unit="positive"});
|
|
|
|
+---------------------+-------------+----------+
|
|
| ts | signum(val) | unit |
|
|
+---------------------+-------------+----------+
|
|
| 1970-01-01T00:00:25 | 1.0 | positive |
|
|
| 1970-01-01T00:00:30 | 1.0 | positive |
|
|
| 1970-01-01T00:00:35 | 1.0 | positive |
|
|
+---------------------+-------------+----------+
|
|
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
TQL EVAL (0, 35, '5s') sgn(angles{unit="negative"});
|
|
|
|
+---------------------+-------------+----------+
|
|
| ts | signum(val) | unit |
|
|
+---------------------+-------------+----------+
|
|
| 1970-01-01T00:00:25 | -1.0 | negative |
|
|
| 1970-01-01T00:00:30 | -1.0 | negative |
|
|
| 1970-01-01T00:00:35 | -1.0 | negative |
|
|
+---------------------+-------------+----------+
|
|
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
TQL EVAL (0, 35, '5s') sgn(angles{unit="zero"});
|
|
|
|
+---------------------+-------------+------+
|
|
| ts | signum(val) | unit |
|
|
+---------------------+-------------+------+
|
|
| 1970-01-01T00:00:30 | 0.0 | zero |
|
|
| 1970-01-01T00:00:35 | 0.0 | zero |
|
|
+---------------------+-------------+------+
|
|
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
TQL EVAL (0, 35, '5s') sgn(angles{unit="small_pos"});
|
|
|
|
+---------------------+-------------+-----------+
|
|
| ts | signum(val) | unit |
|
|
+---------------------+-------------+-----------+
|
|
| 1970-01-01T00:00:30 | 1.0 | small_pos |
|
|
| 1970-01-01T00:00:35 | 1.0 | small_pos |
|
|
+---------------------+-------------+-----------+
|
|
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
TQL EVAL (0, 35, '5s') sgn(angles{unit="small_neg"});
|
|
|
|
+---------------------+-------------+-----------+
|
|
| ts | signum(val) | unit |
|
|
+---------------------+-------------+-----------+
|
|
| 1970-01-01T00:00:35 | -1.0 | small_neg |
|
|
+---------------------+-------------+-----------+
|
|
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
TQL EVAL (25, 35, '5s') sgn(angles);
|
|
|
|
+---------------------+-------------+-----------+
|
|
| ts | signum(val) | unit |
|
|
+---------------------+-------------+-----------+
|
|
| 1970-01-01T00:00:25 | -1.0 | negative |
|
|
| 1970-01-01T00:00:25 | 1.0 | degrees |
|
|
| 1970-01-01T00:00:25 | 1.0 | positive |
|
|
| 1970-01-01T00:00:25 | 1.0 | radians |
|
|
| 1970-01-01T00:00:30 | -1.0 | negative |
|
|
| 1970-01-01T00:00:30 | 0.0 | zero |
|
|
| 1970-01-01T00:00:30 | 1.0 | degrees |
|
|
| 1970-01-01T00:00:30 | 1.0 | positive |
|
|
| 1970-01-01T00:00:30 | 1.0 | radians |
|
|
| 1970-01-01T00:00:30 | 1.0 | small_pos |
|
|
| 1970-01-01T00:00:35 | -1.0 | negative |
|
|
| 1970-01-01T00:00:35 | -1.0 | small_neg |
|
|
| 1970-01-01T00:00:35 | 0.0 | zero |
|
|
| 1970-01-01T00:00:35 | 1.0 | degrees |
|
|
| 1970-01-01T00:00:35 | 1.0 | positive |
|
|
| 1970-01-01T00:00:35 | 1.0 | radians |
|
|
| 1970-01-01T00:00:35 | 1.0 | small_pos |
|
|
+---------------------+-------------+-----------+
|
|
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
TQL EVAL (25, 35, '5s') scalar(sgn(angles{unit="positive"}));
|
|
|
|
+---------------------+---------------------+
|
|
| ts | scalar(signum(val)) |
|
|
+---------------------+---------------------+
|
|
| 1970-01-01T00:00:25 | 1.0 |
|
|
| 1970-01-01T00:00:30 | 1.0 |
|
|
| 1970-01-01T00:00:35 | 1.0 |
|
|
+---------------------+---------------------+
|
|
|
|
-- FIXME: test sgn with arithmetic operations
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
TQL EVAL (25, 35, '5s') sgn(angles - 42.5);
|
|
|
|
+---------------------+-----------------------------+-----------+
|
|
| ts | signum(val - Float64(42.5)) | unit |
|
|
+---------------------+-----------------------------+-----------+
|
|
| 1970-01-01T00:00:25 | -1.0 | negative |
|
|
| 1970-01-01T00:00:25 | -1.0 | radians |
|
|
| 1970-01-01T00:00:25 | 0.0 | positive |
|
|
| 1970-01-01T00:00:25 | 1.0 | degrees |
|
|
| 1970-01-01T00:00:30 | -1.0 | negative |
|
|
| 1970-01-01T00:00:30 | -1.0 | radians |
|
|
| 1970-01-01T00:00:30 | -1.0 | small_pos |
|
|
| 1970-01-01T00:00:30 | -1.0 | zero |
|
|
| 1970-01-01T00:00:30 | 0.0 | positive |
|
|
| 1970-01-01T00:00:30 | 1.0 | degrees |
|
|
| 1970-01-01T00:00:35 | -1.0 | negative |
|
|
| 1970-01-01T00:00:35 | -1.0 | radians |
|
|
| 1970-01-01T00:00:35 | -1.0 | small_neg |
|
|
| 1970-01-01T00:00:35 | -1.0 | small_pos |
|
|
| 1970-01-01T00:00:35 | -1.0 | zero |
|
|
| 1970-01-01T00:00:35 | 0.0 | positive |
|
|
| 1970-01-01T00:00:35 | 1.0 | degrees |
|
|
+---------------------+-----------------------------+-----------+
|
|
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
TQL EVAL (0, 35, '5s') sgn(angles{unit="radians"} - pi());
|
|
|
|
+---------------------+----------------------------+
|
|
| time | signum(angles.val - .pi()) |
|
|
+---------------------+----------------------------+
|
|
| 1970-01-01T00:00:00 | -1.0 |
|
|
| 1970-01-01T00:00:05 | -1.0 |
|
|
| 1970-01-01T00:00:10 | 1.0 |
|
|
| 1970-01-01T00:00:15 | 1.0 |
|
|
| 1970-01-01T00:00:20 | 1.0 |
|
|
| 1970-01-01T00:00:25 | 1.0 |
|
|
| 1970-01-01T00:00:30 | 1.0 |
|
|
| 1970-01-01T00:00:35 | 1.0 |
|
|
+---------------------+----------------------------+
|
|
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
TQL EVAL (25, 35, '5s') sgn(angles) * angles;
|
|
|
|
+-----------+---------------------+---------------------------+
|
|
| unit | ts | lhs.signum(val) * rhs.val |
|
|
+-----------+---------------------+---------------------------+
|
|
| degrees | 1970-01-01T00:00:25 | 360.0 |
|
|
| degrees | 1970-01-01T00:00:30 | 360.0 |
|
|
| degrees | 1970-01-01T00:00:35 | 360.0 |
|
|
| negative | 1970-01-01T00:00:25 | 17.3 |
|
|
| negative | 1970-01-01T00:00:30 | 17.3 |
|
|
| negative | 1970-01-01T00:00:35 | 17.3 |
|
|
| positive | 1970-01-01T00:00:25 | 42.5 |
|
|
| positive | 1970-01-01T00:00:30 | 42.5 |
|
|
| positive | 1970-01-01T00:00:35 | 42.5 |
|
|
| radians | 1970-01-01T00:00:25 | 6.2832 |
|
|
| radians | 1970-01-01T00:00:30 | 6.2832 |
|
|
| radians | 1970-01-01T00:00:35 | 6.2832 |
|
|
| small_neg | 1970-01-01T00:00:35 | 0.001 |
|
|
| small_pos | 1970-01-01T00:00:30 | 0.001 |
|
|
| small_pos | 1970-01-01T00:00:35 | 0.001 |
|
|
| zero | 1970-01-01T00:00:30 | 0.0 |
|
|
| zero | 1970-01-01T00:00:35 | 0.0 |
|
|
+-----------+---------------------+---------------------------+
|
|
|
|
Drop table angles;
|
|
|
|
Affected Rows: 0
|
|
|