From dd536b475c1ae6ad4bee7650d4a1f1cce51c218d Mon Sep 17 00:00:00 2001 From: Roman Khavronenko Date: Wed, 29 Sep 2021 00:37:04 +0300 Subject: [PATCH] app/vmselect: return NaN instead of 0 for empty value sets (#1660) The change affects `count/stddev/stdvar_over_time` funcs and makes them to return NaN instead of zero when there is no datapoints in a time window. This is needed for improving compatibility with Prometheus. Signed-off-by: hagen1778 --- app/vmselect/promql/rollup.go | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/app/vmselect/promql/rollup.go b/app/vmselect/promql/rollup.go index 3d306a5e3..6ad3bda67 100644 --- a/app/vmselect/promql/rollup.go +++ b/app/vmselect/promql/rollup.go @@ -1352,10 +1352,7 @@ func rollupCount(rfa *rollupFuncArg) float64 { // before calling rollup funcs. values := rfa.values if len(values) == 0 { - if math.IsNaN(rfa.prevValue) { - return nan - } - return 0 + return nan } return float64(len(values)) } @@ -1372,10 +1369,7 @@ func rollupStdvar(rfa *rollupFuncArg) float64 { // before calling rollup funcs. values := rfa.values if len(values) == 0 { - if math.IsNaN(rfa.prevValue) { - return nan - } - return 0 + return nan } if len(values) == 1 { // Fast path.