feat: steppable aggr fn dist push down

Signed-off-by: discord9 <discord9@163.com>

poc: step aggr query

Signed-off-by: discord9 <discord9@163.com>

feat: mvp poc stuff

Signed-off-by: discord9 <discord9@163.com>

test: sqlness

Signed-off-by: discord9 <discord9@163.com>

chore: import missing

Signed-off-by: discord9 <discord9@163.com>

feat: support first/last_value

Signed-off-by: discord9 <discord9@163.com>

fix: check also include first/last value

Signed-off-by: discord9 <discord9@163.com>

chore: clean up after rebase

feat: optimize yes!

fix: alias qualifled

test: more testcases

chore: qualified column

chore: per review
This commit is contained in:
discord9
2025-06-08 19:19:11 +08:00
parent ffe84af343
commit 403958f5ba
9 changed files with 1622 additions and 12 deletions

View File

@@ -0,0 +1,90 @@
CREATE TABLE integers(
host STRING PRIMARY KEY,
i BIGINT,
ts TIMESTAMP TIME INDEX
) PARTITION ON COLUMNS (host) (
host < '550-A',
host >= '550-A'
AND host < '550-W',
host >= '550-W'
);
INSERT INTO integers (host, i, ts) VALUES
('550-A', 1, '2023-01-01 00:00:00'),
('550-B', 7, '2023-01-01 00:00:00'),
('550-A', 2, '2023-01-01 01:00:00'),
('550-W', 3, '2023-01-01 02:00:00'),
('550-W', 4, '2023-01-01 03:00:00');
-- count
SELECT
count(i)
FROM
integers;
EXPLAIN
SELECT
count(i)
FROM
integers;
EXPLAIN ANALYZE
SELECT
count(i)
FROM
integers;
SELECT
ts,
count(i)
FROM
integers
GROUP BY
ts;
EXPLAIN
SELECT
ts,
count(i)
FROM
integers
GROUP BY
ts;
EXPLAIN ANALYZE
SELECT
ts,
count(i)
FROM
integers
GROUP BY
ts;
SELECT
date_bin('1 hour' :: INTERVAL, ts),
count(i)
FROM
integers
GROUP BY
date_bin('1 hour' :: INTERVAL, ts);
EXPLAIN
SELECT
date_bin('1 hour' :: INTERVAL, ts),
count(i)
FROM
integers
GROUP BY
date_bin('1 hour' :: INTERVAL, ts);
EXPLAIN ANALYZE
SELECT
date_bin('1 hour' :: INTERVAL, ts),
count(i)
FROM
integers
GROUP BY
date_bin('1 hour' :: INTERVAL, ts);
DROP TABLE integers;