Files
discord9 c44f8da646 feat: add query regression perf harness (#8406)
* feat: add query regression perf harness

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

* feat: extend query regression cases

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

* ci: harden query regression workflows

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

* fix: address query regression review comments

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

* ci: limit query regression PR triggers

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

* ci: run full query regression case set

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

* refactor: model query regression scenarios

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

* fix: avoid unenforced query regression thresholds

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

---------

Signed-off-by: discord9 <discord9@163.com>
2026-07-03 09:09:01 +00:00

68 lines
1.8 KiB
TOML

# Query performance regression case for GreptimeDB issue #7913.
# This is a case config for the generic direct-SST fixture generator. The
# generator must not hard-code PromQL/#7913 behavior; this file only supplies one
# schema/layout/query instance.
[case]
name = "promql_pushdown_7913"
description = "PromQL/TQL non-ms time-index query should prune SSTs for narrow time ranges"
issue = "https://github.com/GreptimeTeam/greptimedb/issues/7913"
[scenario]
kind = "direct_readable_sst"
seed = 7913
[[scenario.tables]]
database = "public"
name = "promql_pushdown_7913"
engine = "mito"
append_mode = true
sst_format = "flat"
primary_key = ["host", "instance"]
time_index = "greptime_timestamp"
[[scenario.tables.columns]]
name = "host"
type = "STRING"
semantic = "tag"
distribution = { kind = "cardinality", values = 256, prefix = "host" }
[[scenario.tables.columns]]
name = "instance"
type = "STRING"
semantic = "tag"
distribution = { kind = "cardinality", values = 4096, prefix = "instance" }
[[scenario.tables.columns]]
name = "download_mbs"
type = "DOUBLE"
semantic = "field"
distribution = { kind = "deterministic_wave", min = 0.0, max = 1000.0 }
[[scenario.tables.columns]]
name = "greptime_timestamp"
type = "TIMESTAMP(9)"
semantic = "timestamp"
[scenario.layout]
regions = 1
sst_count = 1024
rows_per_sst = 4096
row_group_size = 512
series_count = 4096
start_unix_nanos = 1704067200000000000 # 2024-01-01T00:00:00Z
step_nanos = 1000000000
time_range_layout = "non_overlapping_per_sst"
series_layout = "round_robin"
[[scenario.queries]]
name = "narrow_window"
kind = "tql"
query = "TQL ANALYZE VERBOSE (1704070800000, 1704070860000, '15s') promql_pushdown_7913{host=~'host.*'}"
warmup = 2
iterations = 5
[scenario.queries.thresholds]
max_candidate_latency_regression_pct = 15