Files
greptimedb/tests/cases/distributed/optimizer/windowed_sort.sql
Ruihang Xia bbb6f8685e feat: implement commutativity rule for prom-related plans (#5875)
* feat: implement commutativity rule for prom-related plans

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

* fix range manipulate deserializer

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

* blocklist in commutativity rule

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

* change dictionary type

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

* handle partition and ordering

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

* fix clippy

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

* update tests

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

* add rate, increase and delta

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

* update sqlness result

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

* regexp_replace uses empty string instead of null value

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

* update sqlness result

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

* update sqlness result

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

* update sqlness result again

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

---------

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>
2025-05-13 09:06:25 +00:00

124 lines
3.1 KiB
SQL

-- test if handle aliased sort expr correctly
CREATE TABLE IF NOT EXISTS lightning (
collect_time TIMESTAMP(9) NOT NULL,
collect_time_utc TIMESTAMP(9) NULL,
peak_current FLOAT NULL,
TIME INDEX (collect_time)
)
ENGINE=mito
WITH(
'compaction.twcs.time_window' = '7d',
'compaction.type' = 'twcs'
);
-- insert some data, with collect_time = collect_time_utc + 8 hour
INSERT INTO lightning VALUES
('2025-03-01 16:00:00', '2025-03-01 08:00:00', 1.0),
('2025-03-01 17:00:00', '2025-03-01 09:00:00', 1.0),
('2025-03-01 18:00:00', '2025-03-01 10:00:00', 1.0),
('2025-03-01 19:00:00', '2025-03-01 11:00:00', 1.0),
('2025-03-01 20:00:00', '2025-03-01 12:00:00', 1.0),
('2025-03-01 21:00:00', '2025-03-01 13:00:00', 1.0),
('2025-03-01 22:00:00', '2025-03-01 14:00:00', 1.0),
('2025-03-01 23:00:00', '2025-03-01 15:00:00', 1.0)
;
-- notice the alias make order by not applicable for window sort
-- note due to alias there is a tiny difference in the output between standalone/distributed
-- which is acceptable
SELECT
collect_time_utc AS collect_time,
peak_current,
FROM
lightning
ORDER BY
collect_time ASC;
-- SQLNESS REPLACE (-+) -
-- SQLNESS REPLACE (\s\s+) _
-- SQLNESS REPLACE (peers.*) REDACTED
-- SQLNESS REPLACE (metrics.*) REDACTED
-- SQLNESS REPLACE region=\d+\(\d+,\s+\d+\) region=REDACTED
EXPLAIN ANALYZE SELECT
collect_time_utc AS collect_time,
peak_current,
FROM
lightning
ORDER BY
collect_time ASC;
-- also try alias with different name with time index
SELECT
collect_time_utc AS collect_time_0,
peak_current,
FROM
lightning
ORDER BY
collect_time_0 ASC;
-- SQLNESS REPLACE (-+) -
-- SQLNESS REPLACE (\s\s+) _
-- SQLNESS REPLACE (peers.*) REDACTED
-- SQLNESS REPLACE (metrics.*) REDACTED
-- SQLNESS REPLACE region=\d+\(\d+,\s+\d+\) region=REDACTED
-- SQLNESS REPLACE num_ranges=\d+ num_ranges=REDACTED
EXPLAIN ANALYZE SELECT
collect_time_utc AS collect_time_0,
peak_current,
FROM
lightning
ORDER BY
collect_time_0 ASC;
-- try more complex alias with time index
SELECT
collect_time AS true_collect_time,
collect_time_utc AS collect_time,
peak_current,
FROM
lightning
ORDER BY
true_collect_time DESC;
-- SQLNESS REPLACE (-+) -
-- SQLNESS REPLACE (\s\s+) _
-- SQLNESS REPLACE (peers.*) REDACTED
-- SQLNESS REPLACE (metrics.*) REDACTED
-- SQLNESS REPLACE region=\d+\(\d+,\s+\d+\) region=REDACTED
-- SQLNESS REPLACE num_ranges=\d+ num_ranges=REDACTED
EXPLAIN ANALYZE SELECT
collect_time AS true_collect_time,
collect_time_utc AS collect_time,
peak_current,
FROM
lightning
ORDER BY
true_collect_time DESC;
-- this should also do windowed sort
SELECT
collect_time_utc AS collect_time,
collect_time AS true_collect_time,
peak_current,
FROM
lightning
ORDER BY
true_collect_time DESC;
-- SQLNESS REPLACE (-+) -
-- SQLNESS REPLACE (\s\s+) _
-- SQLNESS REPLACE (peers.*) REDACTED
-- SQLNESS REPLACE (metrics.*) REDACTED
-- SQLNESS REPLACE region=\d+\(\d+,\s+\d+\) region=REDACTED
-- SQLNESS REPLACE num_ranges=\d+ num_ranges=REDACTED
EXPLAIN ANALYZE SELECT
collect_time_utc AS collect_time,
collect_time AS true_collect_time,
peak_current,
FROM
lightning
ORDER BY
true_collect_time DESC;
DROP TABLE lightning;