mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-01-13 16:52:56 +00:00
* fix: other col alias to time index column handle * test: update sqlness * chore: per review * test: more sqlness * test: mv some to optimizer folder * fix: resolve alias properly * fix: also retain old name * chore: remove wrong comment * chore: fix sqlness * test: standalone/dist more projection diff
232 lines
7.3 KiB
Plaintext
232 lines
7.3 KiB
Plaintext
-- 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'
|
|
);
|
|
|
|
Affected Rows: 0
|
|
|
|
-- 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)
|
|
;
|
|
|
|
Affected Rows: 8
|
|
|
|
-- 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;
|
|
|
|
+---------------------+--------------+
|
|
| collect_time | peak_current |
|
|
+---------------------+--------------+
|
|
| 2025-03-01T08:00:00 | 1.0 |
|
|
| 2025-03-01T09:00:00 | 1.0 |
|
|
| 2025-03-01T10:00:00 | 1.0 |
|
|
| 2025-03-01T11:00:00 | 1.0 |
|
|
| 2025-03-01T12:00:00 | 1.0 |
|
|
| 2025-03-01T13:00:00 | 1.0 |
|
|
| 2025-03-01T14:00:00 | 1.0 |
|
|
| 2025-03-01T15:00:00 | 1.0 |
|
|
+---------------------+--------------+
|
|
|
|
-- 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;
|
|
|
|
+-+-+-+
|
|
| stage | node | plan_|
|
|
+-+-+-+
|
|
| 0_| 0_|_MergeScanExec: REDACTED
|
|
|_|_|_|
|
|
| 1_| 0_|_SortExec: expr=[collect_time@0 ASC NULLS LAST], preserve_partitioning=[false] REDACTED
|
|
|_|_|_ProjectionExec: expr=[collect_time_utc@0 as collect_time, peak_current@1 as peak_current] REDACTED
|
|
|_|_|_SeqScan: region=REDACTED, partition_count=1 (1 memtable ranges, 0 file 0 ranges) REDACTED
|
|
|_|_|_|
|
|
|_|_| Total rows: 8_|
|
|
+-+-+-+
|
|
|
|
-- 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;
|
|
|
|
+---------------------+--------------+
|
|
| collect_time_0 | peak_current |
|
|
+---------------------+--------------+
|
|
| 2025-03-01T08:00:00 | 1.0 |
|
|
| 2025-03-01T09:00:00 | 1.0 |
|
|
| 2025-03-01T10:00:00 | 1.0 |
|
|
| 2025-03-01T11:00:00 | 1.0 |
|
|
| 2025-03-01T12:00:00 | 1.0 |
|
|
| 2025-03-01T13:00:00 | 1.0 |
|
|
| 2025-03-01T14:00:00 | 1.0 |
|
|
| 2025-03-01T15:00:00 | 1.0 |
|
|
+---------------------+--------------+
|
|
|
|
-- 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_0,
|
|
peak_current,
|
|
FROM
|
|
lightning
|
|
ORDER BY
|
|
collect_time_0 ASC;
|
|
|
|
+-+-+-+
|
|
| stage | node | plan_|
|
|
+-+-+-+
|
|
| 0_| 0_|_MergeScanExec: REDACTED
|
|
|_|_|_|
|
|
| 1_| 0_|_SortExec: expr=[collect_time_0@0 ASC NULLS LAST], preserve_partitioning=[false] REDACTED
|
|
|_|_|_ProjectionExec: expr=[collect_time_utc@0 as collect_time_0, peak_current@1 as peak_current] REDACTED
|
|
|_|_|_SeqScan: region=REDACTED, partition_count=1 (1 memtable ranges, 0 file 0 ranges) REDACTED
|
|
|_|_|_|
|
|
|_|_| Total rows: 8_|
|
|
+-+-+-+
|
|
|
|
-- 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;
|
|
|
|
+---------------------+---------------------+--------------+
|
|
| true_collect_time | collect_time | peak_current |
|
|
+---------------------+---------------------+--------------+
|
|
| 2025-03-01T23:00:00 | 2025-03-01T15:00:00 | 1.0 |
|
|
| 2025-03-01T22:00:00 | 2025-03-01T14:00:00 | 1.0 |
|
|
| 2025-03-01T21:00:00 | 2025-03-01T13:00:00 | 1.0 |
|
|
| 2025-03-01T20:00:00 | 2025-03-01T12:00:00 | 1.0 |
|
|
| 2025-03-01T19:00:00 | 2025-03-01T11:00:00 | 1.0 |
|
|
| 2025-03-01T18:00:00 | 2025-03-01T10:00:00 | 1.0 |
|
|
| 2025-03-01T17:00:00 | 2025-03-01T09:00:00 | 1.0 |
|
|
| 2025-03-01T16:00:00 | 2025-03-01T08:00:00 | 1.0 |
|
|
+---------------------+---------------------+--------------+
|
|
|
|
-- 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 AS true_collect_time,
|
|
collect_time_utc AS collect_time,
|
|
peak_current,
|
|
FROM
|
|
lightning
|
|
ORDER BY
|
|
true_collect_time DESC;
|
|
|
|
+-+-+-+
|
|
| stage | node | plan_|
|
|
+-+-+-+
|
|
| 0_| 0_|_MergeScanExec: REDACTED
|
|
|_|_|_|
|
|
| 1_| 0_|_SortPreservingMergeExec: [true_collect_time@0 DESC] REDACTED
|
|
|_|_|_WindowedSortExec: expr=true_collect_time@0 DESC num_ranges=1 REDACTED
|
|
|_|_|_PartSortExec: expr=true_collect_time@0 DESC num_ranges=1 REDACTED
|
|
|_|_|_ProjectionExec: expr=[collect_time@0 as true_collect_time, collect_time_utc@1 as collect_time, peak_current@2 as peak_current] REDACTED
|
|
|_|_|_SeqScan: region=REDACTED, partition_count=1 (1 memtable ranges, 0 file 0 ranges) REDACTED
|
|
|_|_|_|
|
|
|_|_| Total rows: 8_|
|
|
+-+-+-+
|
|
|
|
-- 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;
|
|
|
|
+---------------------+---------------------+--------------+
|
|
| collect_time | true_collect_time | peak_current |
|
|
+---------------------+---------------------+--------------+
|
|
| 2025-03-01T15:00:00 | 2025-03-01T23:00:00 | 1.0 |
|
|
| 2025-03-01T14:00:00 | 2025-03-01T22:00:00 | 1.0 |
|
|
| 2025-03-01T13:00:00 | 2025-03-01T21:00:00 | 1.0 |
|
|
| 2025-03-01T12:00:00 | 2025-03-01T20:00:00 | 1.0 |
|
|
| 2025-03-01T11:00:00 | 2025-03-01T19:00:00 | 1.0 |
|
|
| 2025-03-01T10:00:00 | 2025-03-01T18:00:00 | 1.0 |
|
|
| 2025-03-01T09:00:00 | 2025-03-01T17:00:00 | 1.0 |
|
|
| 2025-03-01T08:00:00 | 2025-03-01T16:00:00 | 1.0 |
|
|
+---------------------+---------------------+--------------+
|
|
|
|
-- 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,
|
|
collect_time AS true_collect_time,
|
|
peak_current,
|
|
FROM
|
|
lightning
|
|
ORDER BY
|
|
true_collect_time DESC;
|
|
|
|
+-+-+-+
|
|
| stage | node | plan_|
|
|
+-+-+-+
|
|
| 0_| 0_|_MergeScanExec: REDACTED
|
|
|_|_|_|
|
|
| 1_| 0_|_SortPreservingMergeExec: [true_collect_time@1 DESC] REDACTED
|
|
|_|_|_WindowedSortExec: expr=true_collect_time@1 DESC num_ranges=1 REDACTED
|
|
|_|_|_PartSortExec: expr=true_collect_time@1 DESC num_ranges=1 REDACTED
|
|
|_|_|_ProjectionExec: expr=[collect_time_utc@1 as collect_time, collect_time@0 as true_collect_time, peak_current@2 as peak_current] REDACTED
|
|
|_|_|_SeqScan: region=REDACTED, partition_count=1 (1 memtable ranges, 0 file 0 ranges) REDACTED
|
|
|_|_|_|
|
|
|_|_| Total rows: 8_|
|
|
+-+-+-+
|
|
|
|
DROP TABLE lightning;
|
|
|
|
Affected Rows: 0
|
|
|