diff --git a/promql/engine.go b/promql/engine.go index c0ab02b07..e1d5d8b07 100644 --- a/promql/engine.go +++ b/promql/engine.go @@ -1893,7 +1893,7 @@ func btos(b bool) float64 { // result of the op operation. func shouldDropMetricName(op ItemType) bool { switch op { - case itemADD, itemSUB, itemDIV, itemMUL, itemMOD: + case itemADD, itemSUB, itemDIV, itemMUL, itemPOW, itemMOD: return true default: return false diff --git a/promql/testdata/operators.test b/promql/testdata/operators.test index 067e86839..e074197b3 100644 --- a/promql/testdata/operators.test +++ b/promql/testdata/operators.test @@ -350,6 +350,45 @@ eval instant at 5m node_cpu > on(job, instance) group_left(target) (threshold or node_cpu{instance="def",job="node",mode="idle"} 8 node_cpu{instance="def",job="node",mode="user"} 2 + +# Check that binops drop the metric name. +eval instant at 5m node_cpu + 2 + {instance="abc",job="node",mode="idle"} 5 + {instance="abc",job="node",mode="user"} 3 + {instance="def",job="node",mode="idle"} 10 + {instance="def",job="node",mode="user"} 4 + +eval instant at 5m node_cpu - 2 + {instance="abc",job="node",mode="idle"} 1 + {instance="abc",job="node",mode="user"} -1 + {instance="def",job="node",mode="idle"} 6 + {instance="def",job="node",mode="user"} 0 + +eval instant at 5m node_cpu / 2 + {instance="abc",job="node",mode="idle"} 1.5 + {instance="abc",job="node",mode="user"} 0.5 + {instance="def",job="node",mode="idle"} 4 + {instance="def",job="node",mode="user"} 1 + +eval instant at 5m node_cpu * 2 + {instance="abc",job="node",mode="idle"} 6 + {instance="abc",job="node",mode="user"} 2 + {instance="def",job="node",mode="idle"} 16 + {instance="def",job="node",mode="user"} 4 + +eval instant at 5m node_cpu ^ 2 + {instance="abc",job="node",mode="idle"} 9 + {instance="abc",job="node",mode="user"} 1 + {instance="def",job="node",mode="idle"} 64 + {instance="def",job="node",mode="user"} 4 + +eval instant at 5m node_cpu % 2 + {instance="abc",job="node",mode="idle"} 1 + {instance="abc",job="node",mode="user"} 1 + {instance="def",job="node",mode="idle"} 0 + {instance="def",job="node",mode="user"} 0 + + clear load 5m