mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-01-07 22:02:56 +00:00
* feat: supports value aliasing in TQL Signed-off-by: Dennis Zhuang <killme2008@gmail.com> * fix: invalid checking Signed-off-by: Dennis Zhuang <killme2008@gmail.com> * chore: remove invalid checking Signed-off-by: Dennis Zhuang <killme2008@gmail.com> * test: add explain test Signed-off-by: Dennis Zhuang <killme2008@gmail.com> * chore: improve parser Signed-off-by: Dennis Zhuang <killme2008@gmail.com> * test: add explain TQL-CTE Signed-off-by: Dennis Zhuang <killme2008@gmail.com> --------- Signed-off-by: Dennis Zhuang <killme2008@gmail.com>
110 lines
3.4 KiB
SQL
110 lines
3.4 KiB
SQL
CREATE TABLE test(i DOUBLE, j TIMESTAMP TIME INDEX, k STRING PRIMARY KEY);
|
|
|
|
-- insert two points at 1ms and one point at 2ms
|
|
INSERT INTO test VALUES (1, 1, "a"), (1, 1, "b"), (2, 2, "a");
|
|
|
|
-- SQLNESS SORT_RESULT 2 1
|
|
-- evaluate at 0s, 5s and 10s. No point at 0s.
|
|
TQL EVAL (0, 10, '5s') test;
|
|
|
|
-- SQLNESS SORT_RESULT 2 1
|
|
TQL EVAL (0, 10, '5s') {__name__="test"};
|
|
|
|
-- SQLNESS SORT_RESULT 2 1
|
|
TQL EVAL (0, 10, '5s') {__name__="test"} AS test_series;
|
|
|
|
-- SQLNESS SORT_RESULT 2 1
|
|
TQL EVAL (0, 10, '5s') count by (k) (test) AS c;
|
|
|
|
-- SQLNESS SORT_RESULT 2 1
|
|
TQL EVAL (0, 10, '5s') test{__schema__="public"};
|
|
|
|
-- SQLNESS SORT_RESULT 2 1
|
|
TQL EVAL (0, 10, '5s') test{__schema__="greptime_private"};
|
|
|
|
-- SQLNESS SORT_RESULT 2 1
|
|
TQL EVAL (0, 10, '5s') test{__database__="public"};
|
|
|
|
-- SQLNESS SORT_RESULT 2 1
|
|
TQL EVAL (0, 10, '5s') test{__database__="greptime_private"};
|
|
|
|
-- SQLNESS SORT_RESULT 2 1
|
|
TQL EVAL (0, 10, '5s') {__name__="test", __field__="i"};
|
|
|
|
-- NOT SUPPORTED: `__name__` matcher without equal condition
|
|
TQL EVAL (0, 10, '5s') {__name__!="test"};
|
|
|
|
TQL EVAL (0, 10, '5s') {__name__=~"test"};
|
|
|
|
-- the point at 1ms will be shadowed by the point at 2ms
|
|
TQL EVAL (0, 10, '5s') test{k="a"};
|
|
|
|
TQL EVAL (0, 10, '1s', '2s') test{k="a"};
|
|
|
|
-- SQLNESS SORT_RESULT 2 1
|
|
TQL EVAL (0, 10, '0.5') test;
|
|
|
|
-- SQLNESS SORT_RESULT 2 1
|
|
TQL EVAL (0, 10, 0.5) test;
|
|
|
|
|
|
TQL EVAL ('1970-01-01T00:00:00'::timestamp, '1970-01-01T00:00:00'::timestamp + '10 seconds'::interval, '1s') test{k="a"};
|
|
|
|
TQL EVAL (now() - now(), now() - (now() - '10 seconds'::interval), '1s') test{k="a"};
|
|
|
|
DROP TABLE test;
|
|
|
|
CREATE TABLE test (`Field_I` DOUBLE, `Ts_J` TIMESTAMP TIME INDEX, `Tag_K` STRING PRIMARY KEY);
|
|
|
|
INSERT INTO test VALUES (1, 1, "a"), (1, 1, "b"), (2, 2, "a");
|
|
|
|
-- SQLNESS SORT_RESULT 2 1
|
|
TQL EVAL (0, 10, '5s') test{__field__="Field_I"};
|
|
|
|
TQL EVAL (0, 10, '5s') test{__field__="field_i"};
|
|
|
|
drop table test;
|
|
|
|
CREATE TABLE metrics(val DOUBLE, ts TIMESTAMP TIME INDEX, host STRING PRIMARY KEY);
|
|
|
|
-- Insert sample data with fixed timestamps for predictable testing
|
|
INSERT INTO metrics VALUES
|
|
(10.0, '2024-01-01 00:00:00', 'host1'),
|
|
(15.0, '2024-01-01 06:00:00', 'host1'),
|
|
(20.0, '2024-01-01 12:00:00', 'host1'),
|
|
(25.0, '2024-01-01 18:00:00', 'host1'),
|
|
(30.0, '2024-01-02 00:00:00', 'host1'),
|
|
(35.0, '2024-01-02 06:00:00', 'host1'),
|
|
(40.0, '2024-01-02 12:00:00', 'host1'),
|
|
(12.0, '2024-01-01 02:00:00', 'host2'),
|
|
(18.0, '2024-01-01 08:00:00', 'host2'),
|
|
(22.0, '2024-01-01 14:00:00', 'host2');
|
|
|
|
-- Test TQL with date_trunc function
|
|
-- SQLNESS SORT_RESULT 2 1
|
|
TQL EVAL (date_trunc('day', '2024-01-01 10:00:00'::timestamp),
|
|
date_trunc('day', '2024-01-02 10:00:00'::timestamp),
|
|
'6h') last_over_time(metrics[12h]);
|
|
|
|
-- Test TQL with date_trunc and interval arithmetic (now() - interval '1' day pattern)
|
|
-- SQLNESS SORT_RESULT 2 1
|
|
TQL EVAL (date_trunc('day', '2024-01-02 00:00:00'::timestamp) - interval '1' day,
|
|
date_trunc('day', '2024-01-02 00:00:00'::timestamp),
|
|
'4h') metrics{host="host1"};
|
|
|
|
-- Test TQL with hour-based queries
|
|
-- SQLNESS SORT_RESULT 2 1
|
|
TQL EVAL ('2024-01-01 06:00:00'::timestamp,
|
|
'2024-01-01 18:00:00'::timestamp,
|
|
'3h',
|
|
'6h') metrics;
|
|
|
|
-- Test TQL with complex interval arithmetic
|
|
-- SQLNESS SORT_RESULT 2 1
|
|
TQL EVAL ('2024-01-01 00:00:00'::timestamp + interval '12' hour,
|
|
'2024-01-02 00:00:00'::timestamp - interval '6' hour,
|
|
'6h',
|
|
'6h') metrics{host="host2"};
|
|
|
|
DROP TABLE metrics;
|