Merge branch 'release-2.55' into merge-2.55-into-main2

This commit is contained in:
Bryan Boreham 2024-11-04 12:58:38 +00:00
commit 6979b237b9
3 changed files with 69 additions and 0 deletions

View file

@ -3928,3 +3928,65 @@ func (s mockSeries) Iterator(it chunkenc.Iterator) chunkenc.Iterator {
} }
return storage.ChainSampleIteratorFromIterators(it, iterables) return storage.ChainSampleIteratorFromIterators(it, iterables)
} }
func TestEvaluationWithDelayedNameRemovalDisabled(t *testing.T) {
opts := promql.EngineOpts{
Logger: nil,
Reg: nil,
EnableAtModifier: true,
MaxSamples: 10000,
Timeout: 10 * time.Second,
EnableDelayedNameRemoval: false,
}
engine := promqltest.NewTestEngineWithOpts(t, opts)
promqltest.RunTest(t, `
load 5m
metric{env="1"} 0 60 120
another_metric{env="1"} 60 120 180
# Does not drop __name__ for vector selector
eval instant at 10m metric{env="1"}
metric{env="1"} 120
# Drops __name__ for unary operators
eval instant at 10m -metric
{env="1"} -120
# Drops __name__ for binary operators
eval instant at 10m metric + another_metric
{env="1"} 300
# Does not drop __name__ for binary comparison operators
eval instant at 10m metric <= another_metric
metric{env="1"} 120
# Drops __name__ for binary comparison operators with "bool" modifier
eval instant at 10m metric <= bool another_metric
{env="1"} 1
# Drops __name__ for vector-scalar operations
eval instant at 10m metric * 2
{env="1"} 240
# Drops __name__ for instant-vector functions
eval instant at 10m clamp(metric, 0, 100)
{env="1"} 100
# Drops __name__ for round function
eval instant at 10m round(metric)
{env="1"} 120
# Drops __name__ for range-vector functions
eval instant at 10m rate(metric{env="1"}[10m])
{env="1"} 0.2
# Does not drop __name__ for last_over_time function
eval instant at 10m last_over_time(metric{env="1"}[10m])
metric{env="1"} 120
# Drops name for other _over_time functions
eval instant at 10m max_over_time(metric{env="1"}[10m])
{env="1"} 120
`, engine)
}

View file

@ -538,6 +538,9 @@ func funcRound(vals []parser.Value, args parser.Expressions, enh *EvalNodeHelper
continue continue
} }
f := math.Floor(el.F*toNearestInverse+0.5) / toNearestInverse f := math.Floor(el.F*toNearestInverse+0.5) / toNearestInverse
if !enh.enableDelayedNameRemoval {
el.Metric = el.Metric.DropMetricName()
}
enh.Out = append(enh.Out, Sample{ enh.Out = append(enh.Out, Sample{
Metric: el.Metric, Metric: el.Metric,
F: f, F: f,

View file

@ -31,6 +31,10 @@ eval instant at 10m metric * 2
eval instant at 10m clamp(metric, 0, 100) eval instant at 10m clamp(metric, 0, 100)
{env="1"} 100 {env="1"} 100
# Drops __name__ for round function
eval instant at 10m round(metric)
{env="1"} 120
# Drops __name__ for range-vector functions # Drops __name__ for range-vector functions
eval instant at 10m rate(metric{env="1"}[10m]) eval instant at 10m rate(metric{env="1"}[10m])
{env="1"} 0.2 {env="1"} 0.2