From ab5d9e3be16666392fe275acb5c93c8bc3e17f2c Mon Sep 17 00:00:00 2001 From: Charles Korn Date: Wed, 28 Jun 2023 15:13:58 +1000 Subject: [PATCH] Don't create a new iterator for every time step. Signed-off-by: Charles Korn --- promql/engine.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/promql/engine.go b/promql/engine.go index ab8cbc54b8..bf82cccd34 100644 --- a/promql/engine.go +++ b/promql/engine.go @@ -1796,6 +1796,7 @@ func (ev *evaluator) evalTimestampFunctionOverVectorSelector(vs *parser.VectorSe if err != nil { ev.error(errWithWarnings{fmt.Errorf("expanding series: %w", err), ws}) } + it := storage.NewMemoizedEmptyIterator(durationMilliseconds(ev.lookbackDelta)) return ev.rangeEval(nil, func(v []parser.Value, _ [][]EvalSeriesHelper, enh *EvalNodeHelper) (Vector, storage.Warnings) { if vs.Timestamp != nil { @@ -1804,7 +1805,6 @@ func (ev *evaluator) evalTimestampFunctionOverVectorSelector(vs *parser.VectorSe vs.Offset = time.Duration(enh.Ts-*vs.Timestamp) * time.Millisecond } vec := make(Vector, 0, len(vs.Series)) - it := storage.NewMemoizedEmptyIterator(durationMilliseconds(ev.lookbackDelta)) var chkIter chunkenc.Iterator for _, s := range vs.Series { chkIter = s.Iterator(chkIter)