From 5867708b3d4af191ae0f04c17c1cfb18dc36fa3b Mon Sep 17 00:00:00 2001
From: Aliaksandr Valialkin <valyala@victoriametrics.com>
Date: Tue, 12 Jul 2022 19:48:24 +0300
Subject: [PATCH] app/vmselect/promql: validate function name before evaluating
 its arguments

This avoids unneeded evaluation of args for unknown functions
---
 app/vmselect/promql/eval.go | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/app/vmselect/promql/eval.go b/app/vmselect/promql/eval.go
index 23a31d35da..6c683f461e 100644
--- a/app/vmselect/promql/eval.go
+++ b/app/vmselect/promql/eval.go
@@ -309,14 +309,14 @@ func evalExprInternal(qt *querytracer.Tracer, ec *EvalConfig, e metricsql.Expr)
 }
 
 func evalTransformFunc(qt *querytracer.Tracer, ec *EvalConfig, fe *metricsql.FuncExpr) ([]*timeseries, error) {
-	args, err := evalExprs(qt, ec, fe.Args)
-	if err != nil {
-		return nil, err
-	}
 	tf := getTransformFunc(fe.Name)
 	if tf == nil {
 		return nil, fmt.Errorf(`unknown func %q`, fe.Name)
 	}
+	args, err := evalExprs(qt, ec, fe.Args)
+	if err != nil {
+		return nil, err
+	}
 	tfa := &transformFuncArg{
 		ec:   ec,
 		fe:   fe,