From 5ce990cabc2bdbb35c074bf1c953644f661d6f03 Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Mon, 28 Aug 2023 10:28:09 +0100 Subject: [PATCH] promql: simplify rangeEval a bit more We can't have both a float and a histogram at the same timestep. Signed-off-by: Bryan Boreham --- promql/engine.go | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/promql/engine.go b/promql/engine.go index 466e4b1d8..ef7e9ec24 100644 --- a/promql/engine.go +++ b/promql/engine.go @@ -1187,25 +1187,22 @@ func (ev *evaluator) rangeEval(prepSeries func(labels.Labels, *EvalSeriesHelper) bufHelpers[i] = bufHelpers[i][:0] } - add := func(si int, s Sample) { - vectors[i] = append(vectors[i], s) - if prepSeries != nil { - bufHelpers[i] = append(bufHelpers[i], seriesHelpers[i][si]) - } - ev.currentSamples++ - } - for si, series := range matrixes[i] { if len(series.Floats) > 0 && series.Floats[0].T == ts { - add(si, Sample{Metric: series.Metric, F: series.Floats[0].F, T: ts}) + vectors[i] = append(vectors[i], Sample{Metric: series.Metric, F: series.Floats[0].F, T: ts}) // Move input vectors forward so we don't have to re-scan the same // past points at the next step. matrixes[i][si].Floats = series.Floats[1:] - } - if len(series.Histograms) > 0 && series.Histograms[0].T == ts { - add(si, Sample{Metric: series.Metric, H: series.Histograms[0].H, T: ts}) + } else if len(series.Histograms) > 0 && series.Histograms[0].T == ts { + vectors[i] = append(vectors[i], Sample{Metric: series.Metric, H: series.Histograms[0].H, T: ts}) matrixes[i][si].Histograms = series.Histograms[1:] + } else { + continue + } + if prepSeries != nil { + bufHelpers[i] = append(bufHelpers[i], seriesHelpers[i][si]) } + ev.currentSamples++ if ev.currentSamples > ev.maxSamples { ev.error(ErrTooManySamples(env)) }