From 14ef1ce8ab7f2cdcfbc62379ce6f06cc8fc12101 Mon Sep 17 00:00:00 2001 From: Joshua Hesketh Date: Thu, 17 Oct 2024 15:39:22 +1100 Subject: [PATCH] Round function should ignore native histograms As per the documentation, native histograms are skipped. This is in line with other simpleFunc's. Signed-off-by: Joshua Hesketh --- promql/functions.go | 4 ++++ promql/promqltest/testdata/functions.test | 9 +++++++++ 2 files changed, 13 insertions(+) diff --git a/promql/functions.go b/promql/functions.go index 4333cb5ce..3ba43ccae 100644 --- a/promql/functions.go +++ b/promql/functions.go @@ -551,6 +551,10 @@ func funcRound(vals []parser.Value, args parser.Expressions, enh *EvalNodeHelper toNearestInverse := 1.0 / toNearest for _, el := range vec { + if el.H != nil { + // Process only float samples. + continue + } f := math.Floor(el.F*toNearestInverse+0.5) / toNearestInverse enh.Out = append(enh.Out, Sample{ Metric: el.Metric, diff --git a/promql/promqltest/testdata/functions.test b/promql/promqltest/testdata/functions.test index c9af6c4c9..fb1d16962 100644 --- a/promql/promqltest/testdata/functions.test +++ b/promql/promqltest/testdata/functions.test @@ -1258,3 +1258,12 @@ load 1m # We expect the value to be 0 for t=0s to t=59s (inclusive), then 60 for t=60s and t=61s. eval range from 0 to 61s step 1s timestamp(metric) {} 0x59 60 60 + +clear + +# Check round with mixed data types +load 1m + mixed_metric {{schema:0 sum:5 count:4 buckets:[1 2 1]}} 1 2 3 {{schema:0 sum:5 count:4 buckets:[1 2 1]}} {{schema:0 sum:8 count:6 buckets:[1 4 1]}} + +eval range from 0 to 5m step 1m round(mixed_metric) + {} _ 1 2 3