From d698e062dce2af7a310af9eeb055a2ee420bfd6d Mon Sep 17 00:00:00 2001 From: yeya24 Date: Fri, 16 Apr 2021 21:29:57 -0400 Subject: [PATCH] improve grouping label match logic Signed-off-by: yeya24 --- promql/engine.go | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/promql/engine.go b/promql/engine.go index 5c9caebada..f9ac94873e 100644 --- a/promql/engine.go +++ b/promql/engine.go @@ -2191,16 +2191,7 @@ func (ev *evaluator) aggregation(op parser.ItemType, grouping []string, without lb.Del(labels.MetricName) m = lb.Labels() } else { - m = make(labels.Labels, 0, len(grouping)) - for _, l := range metric { - for _, n := range grouping { - if l.Name == n { - m = append(m, l) - break - } - } - } - sort.Sort(m) + m = metric.WithLabels(grouping...) } result[groupingKey] = &groupedAggregation{ labels: m, @@ -2339,7 +2330,7 @@ func (ev *evaluator) aggregation(op parser.ItemType, grouping []string, without continue // Bypass default append. case parser.BOTTOMK: - // The heap keeps the lowest value on top, so reverse it. + // The heap keeps the highest value on top, so reverse it. sort.Sort(sort.Reverse(aggr.reverseHeap)) for _, v := range aggr.reverseHeap { enh.Out = append(enh.Out, Sample{