diff --git a/pkg/tsdb/mssql/macros.go b/pkg/tsdb/mssql/macros.go index a0c060c5b14..3bb35a80939 100644 --- a/pkg/tsdb/mssql/macros.go +++ b/pkg/tsdb/mssql/macros.go @@ -49,9 +49,13 @@ func (m *msSQLMacroEngine) Interpolate(query *backend.DataQuery, timeRange backe // TODO: Return any error rExp, _ := regexp.Compile(sExpr) var macroError error - formattedSql, fctCallArgsMap := replaceFunctionCallArgsWithPlaceholders(sql) + var fctCallArgsMap map[string]string - sql = m.ReplaceAllStringSubmatchFunc(rExp, formattedSql, func(groups []string) string { + if rExp.FindAllSubmatchIndex([]byte(sql), -1) != nil { + sql, fctCallArgsMap = replaceFunctionCallArgsWithPlaceholders(sql) + } + + sql = m.ReplaceAllStringSubmatchFunc(rExp, sql, func(groups []string) string { args := strings.Split(groups[2], ",") for i, arg := range args { args[i] = strings.Trim(arg, " ") diff --git a/pkg/tsdb/mssql/macros_test.go b/pkg/tsdb/mssql/macros_test.go index 5e14a9a0b6d..7966a08a963 100644 --- a/pkg/tsdb/mssql/macros_test.go +++ b/pkg/tsdb/mssql/macros_test.go @@ -349,6 +349,20 @@ func TestMacroEngine(t *testing.T) { require.NotNil(t, err) } }) + + t.Run("should return unmodified sql if there are no macros present", func(t *testing.T) { + sqls := []string{ + "select * from table", + "select count(val) from table", + "select col1, col2,col3, col4 from table where col1 = 'val1' and col2 = 'val2' order by col1 asc", + } + + for _, sql := range sqls { + actual, err := engine.Interpolate(query, timeRange, sql) + require.Nil(t, err) + require.Equal(t, sql, actual) + } + }) }) }