Files
greptimedb/tests/cases/standalone/common/promql/tsid_histogram_quantile_regression.sql
T
Yingwen 3e2751d71d feat: improve SQL analyze scan diagnostics (#9565)
* feat: improve SQL analyze scan diagnostics

Signed-off-by: evenyag <realevenyag@gmail.com>

* test: redact dynamic filters in sqlness results

Signed-off-by: evenyag <realevenyag@gmail.com>

* test: stabilize analyze snapshots for merge queue

Signed-off-by: evenyag <realevenyag@gmail.com>

* test: remove obsolete scan_details assertion

Signed-off-by: evenyag <realevenyag@gmail.com>

* test: refresh explain snapshots after partition filter changes

Signed-off-by: evenyag <realevenyag@gmail.com>

---------

Signed-off-by: evenyag <realevenyag@gmail.com>
2026-10-20 05:06:32 +00:00

84 lines
2.5 KiB
SQL

-- Regression test for `__tsid` optimization on non-aggregating PromQL queries.
-- The `__tsid` column must not affect operators that infer label columns from the input schema,
-- such as `histogram_quantile` (HistogramFold).
CREATE TABLE tsid_no_aggr_physical (
ts TIMESTAMP(3) TIME INDEX,
val DOUBLE,
) ENGINE = metric WITH ("physical_metric_table" = "");
CREATE TABLE tsid_no_aggr_metric (
job STRING NULL,
instance STRING NULL,
ts TIMESTAMP(3) NOT NULL,
val DOUBLE NULL,
TIME INDEX (ts),
PRIMARY KEY(job, instance),
)
ENGINE = metric
WITH(
on_physical_table = 'tsid_no_aggr_physical'
);
CREATE TABLE tsid_no_aggr_histogram_bucket (
job STRING NULL,
le STRING NULL,
ts TIMESTAMP(3) NOT NULL,
val DOUBLE NULL,
TIME INDEX (ts),
PRIMARY KEY(job, le),
)
ENGINE = metric
WITH(
on_physical_table = 'tsid_no_aggr_physical'
);
INSERT INTO tsid_no_aggr_metric VALUES
('job1', 'instance1', 0, 1),
('job1', 'instance1', 5000, 3),
('job1', 'instance1', 10000, 5);
INSERT INTO tsid_no_aggr_histogram_bucket VALUES
('job1', '1', 0, 1),
('job1', '2', 0, 2),
('job1', '+Inf', 0, 3),
('job1', '1', 5000, 2),
('job1', '2', 5000, 4),
('job1', '+Inf', 5000, 6),
('job1', '1', 10000, 3),
('job1', '2', 10000, 6),
('job1', '+Inf', 10000, 9);
-- Selector (no series merge)
-- SQLNESS SORT_RESULT 3 1
TQL EVAL (0, 10, '5s') tsid_no_aggr_metric;
-- Scalar function (no series merge)
-- SQLNESS SORT_RESULT 3 1
TQL EVAL (0, 10, '5s') abs(tsid_no_aggr_metric);
-- Range function (no series merge)
-- SQLNESS SORT_RESULT 3 1
TQL EVAL (0, 10, '5s') avg_over_time(tsid_no_aggr_metric[5s]);
-- Histogram quantile must fold buckets across `le` even when `__tsid` exists.
-- The physical plan must not treat `__tsid` as a label column for HistogramFold.
-- 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
-- SQLNESS REPLACE (Hash.*) REDACTED
-- SQLNESS REPLACE __table_id\s*=\s*UInt32\(\d+\) __table_id=UInt32(REDACTED)
-- SQLNESS REPLACE \\?"(dyn_filters|time_range|file_summary|max_part_range)\\?":.* "$1":REDACTED
TQL ANALYZE (0, 10, '5s') histogram_quantile(0.5, tsid_no_aggr_histogram_bucket);
-- SQLNESS SORT_RESULT 3 1
TQL EVAL (0, 10, '5s') histogram_quantile(0.5, tsid_no_aggr_histogram_bucket);
DROP TABLE tsid_no_aggr_histogram_bucket;
DROP TABLE tsid_no_aggr_metric;
DROP TABLE tsid_no_aggr_physical;