mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2025-12-26 08:00:01 +00:00
* wip: steppable aggr fn 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 Signed-off-by: discord9 <discord9@163.com> * feat: optimize yes! Signed-off-by: discord9 <discord9@163.com> * fix: alias qualifled Signed-off-by: discord9 <discord9@163.com> * test: more testcases Signed-off-by: discord9 <discord9@163.com> * chore: qualified column Signed-off-by: discord9 <discord9@163.com> * chore: per review Signed-off-by: discord9 <discord9@163.com> * fix: case when can push down Signed-off-by: discord9 <discord9@163.com> * feat: udd/hll_merge is also the same Signed-off-by: discord9 <discord9@163.com> * fix: udd/hll_merge args Signed-off-by: discord9 <discord9@163.com> * tests: fix sqlness Signed-off-by: discord9 <discord9@163.com> * tests: fix sqlness Signed-off-by: discord9 <discord9@163.com> * fix: udd/hll merge steppable Signed-off-by: discord9 <discord9@163.com> * chore: per review Signed-off-by: discord9 <discord9@163.com> * test: REDACTED Signed-off-by: discord9 <discord9@163.com> * refactor: per review Signed-off-by: discord9 <discord9@163.com> * refactor: more formal transform action Signed-off-by: discord9 <discord9@163.com> * feat: support modify child plan too Signed-off-by: discord9 <discord9@163.com> --------- Signed-off-by: discord9 <discord9@163.com>
466 lines
7.8 KiB
SQL
466 lines
7.8 KiB
SQL
-- base table, massive row insert to this table
|
|
CREATE TABLE IF NOT EXISTS base_table (
|
|
"time" TIMESTAMP(3) NOT NULL,
|
|
env STRING NULL,
|
|
service_name STRING NULL,
|
|
city STRING NULL,
|
|
page STRING NULL,
|
|
lcp BIGINT NULL,
|
|
fmp BIGINT NULL,
|
|
fcp BIGINT NULL,
|
|
fp BIGINT NULL,
|
|
tti BIGINT NULL,
|
|
fid BIGINT NULL,
|
|
shard_key BIGINT NULL,
|
|
TIME INDEX ("time"),
|
|
PRIMARY KEY (env, service_name)
|
|
) PARTITION ON COLUMNS (shard_key) (
|
|
shard_key < 4,
|
|
shard_key >= 4
|
|
AND shard_key < 8,
|
|
shard_key >= 8
|
|
AND shard_key < 12,
|
|
shard_key >= 12
|
|
AND shard_key < 16,
|
|
shard_key >= 16
|
|
AND shard_key < 20,
|
|
shard_key >= 20
|
|
AND shard_key < 24,
|
|
shard_key >= 24
|
|
AND shard_key < 28,
|
|
shard_key >= 28
|
|
AND shard_key < 32,
|
|
shard_key >= 32
|
|
AND shard_key < 36,
|
|
shard_key >= 36
|
|
AND shard_key < 40,
|
|
shard_key >= 40
|
|
AND shard_key < 44,
|
|
shard_key >= 44
|
|
AND shard_key < 48,
|
|
shard_key >= 48
|
|
AND shard_key < 52,
|
|
shard_key >= 52
|
|
AND shard_key < 56,
|
|
shard_key >= 56
|
|
AND shard_key < 60,
|
|
shard_key >= 60
|
|
) ENGINE = mito WITH(
|
|
'append_mode' = 'true',
|
|
'compaction.twcs.max_output_file_size' = "2GB",
|
|
'compaction.twcs.time_window' = "1h",
|
|
'compaction.type' = "twcs",
|
|
);
|
|
|
|
-- SQLNESS REPLACE (-+) -
|
|
-- SQLNESS REPLACE (\s\s+) _
|
|
-- SQLNESS REPLACE (RoundRobinBatch.*) REDACTED
|
|
-- SQLNESS REPLACE (Hash.*) REDACTED
|
|
-- SQLNESS REPLACE (peers.*) REDACTED
|
|
EXPLAIN
|
|
SELECT
|
|
env,
|
|
service_name,
|
|
city,
|
|
page,
|
|
uddsketch_state(
|
|
128,
|
|
0.01,
|
|
CASE
|
|
WHEN lcp > 0
|
|
AND lcp < 3000000 THEN lcp
|
|
ELSE NULL
|
|
END
|
|
) AS lcp_state,
|
|
max(
|
|
CASE
|
|
WHEN lcp > 0
|
|
AND lcp < 3000000 THEN lcp
|
|
ELSE NULL
|
|
END
|
|
) AS max_lcp,
|
|
min(
|
|
CASE
|
|
WHEN lcp > 0
|
|
AND lcp < 3000000 THEN lcp
|
|
ELSE NULL
|
|
END
|
|
) AS min_lcp,
|
|
uddsketch_state(
|
|
128,
|
|
0.01,
|
|
CASE
|
|
WHEN fmp > 0
|
|
AND fmp < 3000000 THEN fmp
|
|
ELSE NULL
|
|
END
|
|
) AS fmp_state,
|
|
max(
|
|
CASE
|
|
WHEN fmp > 0
|
|
AND fmp < 3000000 THEN fmp
|
|
ELSE NULL
|
|
END
|
|
) AS max_fmp,
|
|
min(
|
|
CASE
|
|
WHEN fmp > 0
|
|
AND fmp < 3000000 THEN fmp
|
|
ELSE NULL
|
|
END
|
|
) AS min_fmp,
|
|
uddsketch_state(
|
|
128,
|
|
0.01,
|
|
CASE
|
|
WHEN fcp > 0
|
|
AND fcp < 3000000 THEN fcp
|
|
ELSE NULL
|
|
END
|
|
) AS fcp_state,
|
|
max(
|
|
CASE
|
|
WHEN fcp > 0
|
|
AND fcp < 3000000 THEN fcp
|
|
ELSE NULL
|
|
END
|
|
) AS max_fcp,
|
|
min(
|
|
CASE
|
|
WHEN fcp > 0
|
|
AND fcp < 3000000 THEN fcp
|
|
ELSE NULL
|
|
END
|
|
) AS min_fcp,
|
|
uddsketch_state(
|
|
128,
|
|
0.01,
|
|
CASE
|
|
WHEN fp > 0
|
|
AND fp < 3000000 THEN fp
|
|
ELSE NULL
|
|
END
|
|
) AS fp_state,
|
|
max(
|
|
CASE
|
|
WHEN fp > 0
|
|
AND fp < 3000000 THEN fp
|
|
ELSE NULL
|
|
END
|
|
) AS max_fp,
|
|
min(
|
|
CASE
|
|
WHEN fp > 0
|
|
AND fp < 3000000 THEN fp
|
|
ELSE NULL
|
|
END
|
|
) AS min_fp,
|
|
uddsketch_state(
|
|
128,
|
|
0.01,
|
|
CASE
|
|
WHEN tti > 0
|
|
AND tti < 3000000 THEN tti
|
|
ELSE NULL
|
|
END
|
|
) AS tti_state,
|
|
max(
|
|
CASE
|
|
WHEN tti > 0
|
|
AND tti < 3000000 THEN tti
|
|
ELSE NULL
|
|
END
|
|
) AS max_tti,
|
|
min(
|
|
CASE
|
|
WHEN tti > 0
|
|
AND tti < 3000000 THEN tti
|
|
ELSE NULL
|
|
END
|
|
) AS min_tti,
|
|
uddsketch_state(
|
|
128,
|
|
0.01,
|
|
CASE
|
|
WHEN fid > 0
|
|
AND fid < 3000000 THEN fid
|
|
ELSE NULL
|
|
END
|
|
) AS fid_state,
|
|
max(
|
|
CASE
|
|
WHEN fid > 0
|
|
AND fid < 3000000 THEN fid
|
|
ELSE NULL
|
|
END
|
|
) AS max_fid,
|
|
min(
|
|
CASE
|
|
WHEN fid > 0
|
|
AND fid < 3000000 THEN fid
|
|
ELSE NULL
|
|
END
|
|
) AS min_fid,
|
|
max(shard_key) AS shard_key,
|
|
date_bin('60 seconds' :: INTERVAL, time) :: TIMESTAMP(0)
|
|
FROM
|
|
base_table
|
|
WHERE
|
|
(
|
|
(
|
|
lcp > 0
|
|
AND lcp < 3000000
|
|
)
|
|
OR (
|
|
fmp > 0
|
|
AND fmp < 3000000
|
|
)
|
|
OR (
|
|
fcp > 0
|
|
AND fcp < 3000000
|
|
)
|
|
OR (
|
|
fp > 0
|
|
AND fp < 3000000
|
|
)
|
|
OR (
|
|
tti > 0
|
|
AND tti < 3000000
|
|
)
|
|
OR (
|
|
fid > 0
|
|
AND fid < 3000000
|
|
)
|
|
)
|
|
AND time >= now()
|
|
GROUP BY
|
|
env,
|
|
service_name,
|
|
city,
|
|
page,
|
|
date_bin('60 seconds' :: INTERVAL, time) :: TIMESTAMP(0);
|
|
|
|
-- SQLNESS REPLACE (metrics.*) REDACTED
|
|
-- SQLNESS REPLACE (RoundRobinBatch.*) REDACTED
|
|
-- SQLNESS REPLACE (-+) -
|
|
-- SQLNESS REPLACE (\s\s+) _
|
|
-- SQLNESS REPLACE (peers.*) REDACTED
|
|
-- SQLNESS REPLACE region=\d+\(\d+,\s+\d+\) region=REDACTED
|
|
-- might write to different partitions
|
|
-- SQLNESS REPLACE "partition_count":\{(.*?)\} "partition_count":REDACTED
|
|
-- SQLNESS REPLACE (Hash.*) REDACTED
|
|
EXPLAIN ANALYZE
|
|
SELECT
|
|
env,
|
|
service_name,
|
|
city,
|
|
page,
|
|
uddsketch_state(
|
|
128,
|
|
0.01,
|
|
CASE
|
|
WHEN lcp > 0
|
|
AND lcp < 3000000 THEN lcp
|
|
ELSE NULL
|
|
END
|
|
) AS lcp_state,
|
|
max(
|
|
CASE
|
|
WHEN lcp > 0
|
|
AND lcp < 3000000 THEN lcp
|
|
ELSE NULL
|
|
END
|
|
) AS max_lcp,
|
|
min(
|
|
CASE
|
|
WHEN lcp > 0
|
|
AND lcp < 3000000 THEN lcp
|
|
ELSE NULL
|
|
END
|
|
) AS min_lcp,
|
|
uddsketch_state(
|
|
128,
|
|
0.01,
|
|
CASE
|
|
WHEN fmp > 0
|
|
AND fmp < 3000000 THEN fmp
|
|
ELSE NULL
|
|
END
|
|
) AS fmp_state,
|
|
max(
|
|
CASE
|
|
WHEN fmp > 0
|
|
AND fmp < 3000000 THEN fmp
|
|
ELSE NULL
|
|
END
|
|
) AS max_fmp,
|
|
min(
|
|
CASE
|
|
WHEN fmp > 0
|
|
AND fmp < 3000000 THEN fmp
|
|
ELSE NULL
|
|
END
|
|
) AS min_fmp,
|
|
uddsketch_state(
|
|
128,
|
|
0.01,
|
|
CASE
|
|
WHEN fcp > 0
|
|
AND fcp < 3000000 THEN fcp
|
|
ELSE NULL
|
|
END
|
|
) AS fcp_state,
|
|
max(
|
|
CASE
|
|
WHEN fcp > 0
|
|
AND fcp < 3000000 THEN fcp
|
|
ELSE NULL
|
|
END
|
|
) AS max_fcp,
|
|
min(
|
|
CASE
|
|
WHEN fcp > 0
|
|
AND fcp < 3000000 THEN fcp
|
|
ELSE NULL
|
|
END
|
|
) AS min_fcp,
|
|
uddsketch_state(
|
|
128,
|
|
0.01,
|
|
CASE
|
|
WHEN fp > 0
|
|
AND fp < 3000000 THEN fp
|
|
ELSE NULL
|
|
END
|
|
) AS fp_state,
|
|
max(
|
|
CASE
|
|
WHEN fp > 0
|
|
AND fp < 3000000 THEN fp
|
|
ELSE NULL
|
|
END
|
|
) AS max_fp,
|
|
min(
|
|
CASE
|
|
WHEN fp > 0
|
|
AND fp < 3000000 THEN fp
|
|
ELSE NULL
|
|
END
|
|
) AS min_fp,
|
|
uddsketch_state(
|
|
128,
|
|
0.01,
|
|
CASE
|
|
WHEN tti > 0
|
|
AND tti < 3000000 THEN tti
|
|
ELSE NULL
|
|
END
|
|
) AS tti_state,
|
|
max(
|
|
CASE
|
|
WHEN tti > 0
|
|
AND tti < 3000000 THEN tti
|
|
ELSE NULL
|
|
END
|
|
) AS max_tti,
|
|
min(
|
|
CASE
|
|
WHEN tti > 0
|
|
AND tti < 3000000 THEN tti
|
|
ELSE NULL
|
|
END
|
|
) AS min_tti,
|
|
uddsketch_state(
|
|
128,
|
|
0.01,
|
|
CASE
|
|
WHEN fid > 0
|
|
AND fid < 3000000 THEN fid
|
|
ELSE NULL
|
|
END
|
|
) AS fid_state,
|
|
max(
|
|
CASE
|
|
WHEN fid > 0
|
|
AND fid < 3000000 THEN fid
|
|
ELSE NULL
|
|
END
|
|
) AS max_fid,
|
|
min(
|
|
CASE
|
|
WHEN fid > 0
|
|
AND fid < 3000000 THEN fid
|
|
ELSE NULL
|
|
END
|
|
) AS min_fid,
|
|
max(shard_key) AS shard_key,
|
|
date_bin('60 seconds' :: INTERVAL, time) :: TIMESTAMP(0)
|
|
FROM
|
|
base_table
|
|
WHERE
|
|
(
|
|
(
|
|
lcp > 0
|
|
AND lcp < 3000000
|
|
)
|
|
OR (
|
|
fmp > 0
|
|
AND fmp < 3000000
|
|
)
|
|
OR (
|
|
fcp > 0
|
|
AND fcp < 3000000
|
|
)
|
|
OR (
|
|
fp > 0
|
|
AND fp < 3000000
|
|
)
|
|
OR (
|
|
tti > 0
|
|
AND tti < 3000000
|
|
)
|
|
OR (
|
|
fid > 0
|
|
AND fid < 3000000
|
|
)
|
|
)
|
|
AND time >= now()
|
|
GROUP BY
|
|
env,
|
|
service_name,
|
|
city,
|
|
page,
|
|
date_bin('60 seconds' :: INTERVAL, time) :: TIMESTAMP(0);
|
|
|
|
-- SQLNESS REPLACE (-+) -
|
|
-- SQLNESS REPLACE (\s\s+) _
|
|
-- SQLNESS REPLACE (RoundRobinBatch.*) REDACTED
|
|
-- SQLNESS REPLACE (Hash.*) REDACTED
|
|
-- SQLNESS REPLACE (peers.*) REDACTED
|
|
EXPLAIN
|
|
SELECT
|
|
count(*)
|
|
from
|
|
base_table
|
|
where
|
|
time >= now();
|
|
|
|
-- SQLNESS REPLACE (metrics.*) REDACTED
|
|
-- SQLNESS REPLACE (RoundRobinBatch.*) REDACTED
|
|
-- SQLNESS REPLACE (-+) -
|
|
-- SQLNESS REPLACE (\s\s+) _
|
|
-- SQLNESS REPLACE (peers.*) REDACTED
|
|
-- SQLNESS REPLACE region=\d+\(\d+,\s+\d+\) region=REDACTED
|
|
-- might write to different partitions
|
|
-- SQLNESS REPLACE "partition_count":\{(.*?)\} "partition_count":REDACTED
|
|
-- SQLNESS REPLACE (Hash.*) REDACTED
|
|
EXPLAIN ANALYZE
|
|
SELECT
|
|
count(*)
|
|
from
|
|
base_table
|
|
where
|
|
time >= now();
|
|
|
|
DROP TABLE base_table;
|