Skip to content

Commit 1844d0c

Browse files
authored
handle histogram_avg using DetectHistogramStatsOptimizer (#543)
Signed-off-by: yeya24 <[email protected]>
1 parent efe7173 commit 1844d0c

File tree

3 files changed

+29
-1
lines changed

3 files changed

+29
-1
lines changed

engine/bench_test.go

+16
Original file line numberDiff line numberDiff line change
@@ -406,6 +406,14 @@ func BenchmarkNativeHistograms(b *testing.B) {
406406
name: "histogram_count with sum and rate",
407407
query: `histogram_count(sum(rate(native_histogram_series[1m])))`,
408408
},
409+
{
410+
name: "histogram_avg",
411+
query: `histogram_avg(native_histogram_series)`,
412+
},
413+
{
414+
name: "histogram_avg with sum and rate",
415+
query: `histogram_avg(sum(rate(native_histogram_series[1m])))`,
416+
},
409417
{
410418
name: "histogram_quantile",
411419
query: `histogram_quantile(0.9, sum(native_histogram_series))`,
@@ -414,6 +422,14 @@ func BenchmarkNativeHistograms(b *testing.B) {
414422
name: "histogram scalar binop",
415423
query: `sum(native_histogram_series * 60)`,
416424
},
425+
{
426+
name: "histogram_stdvar",
427+
query: `histogram_stdvar(native_histogram_series)`,
428+
},
429+
{
430+
name: "histogram_stddev",
431+
query: `histogram_stddev(native_histogram_series)`,
432+
},
417433
}
418434

419435
opts := promql.EngineOpts{

engine/engine_test.go

+8
Original file line numberDiff line numberDiff line change
@@ -5358,6 +5358,14 @@ histogram_sum(
53585358
name: "histogram_fraction",
53595359
query: `histogram_fraction(0, 0.2, native_histogram_series)`,
53605360
},
5361+
{
5362+
name: "histogram_stdvar",
5363+
query: `histogram_stdvar(native_histogram_series)`,
5364+
},
5365+
{
5366+
name: "histogram_stddev",
5367+
query: `histogram_stddev(native_histogram_series)`,
5368+
},
53615369
{
53625370
name: "lhs multiplication",
53635371
query: `native_histogram_series * 3`,

logicalplan/histogram_stats.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func (d DetectHistogramStatsOptimizer) optimize(plan Node, decodeStats bool) (No
2626
n.DecodeNativeHistogramStats = decodeStats
2727
case *FunctionCall:
2828
switch n.Func.Name {
29-
case "histogram_count", "histogram_sum":
29+
case "histogram_count", "histogram_sum", "histogram_avg":
3030
n.Args[0], _ = d.optimize(n.Args[0], true)
3131
stop = true
3232
return
@@ -38,6 +38,10 @@ func (d DetectHistogramStatsOptimizer) optimize(plan Node, decodeStats bool) (No
3838
n.Args[2], _ = d.optimize(n.Args[2], false)
3939
stop = true
4040
return
41+
case "histogram_stddev", "histogram_stdvar":
42+
n.Args[0], _ = d.optimize(n.Args[0], false)
43+
stop = true
44+
return
4145
}
4246
}
4347
})

0 commit comments

Comments
 (0)