mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
fix(influxdb): fixes bug when using regexps/numbers in tags
closes #6488
This commit is contained in:
@@ -2,6 +2,7 @@ package influxdb
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/grafana/grafana/pkg/tsdb"
|
||||
@@ -42,7 +43,18 @@ func (qb *QueryBuilder) renderTags(query *Query) []string {
|
||||
str += " "
|
||||
}
|
||||
|
||||
res = append(res, fmt.Sprintf(`%s"%s" %s '%s'`, str, tag.Key, tag.Operator, tag.Value))
|
||||
value := tag.Value
|
||||
nValue, err := strconv.ParseFloat(tag.Value, 64)
|
||||
|
||||
if tag.Operator == "=~" || tag.Operator == "!~" {
|
||||
value = fmt.Sprintf("%s", value)
|
||||
} else if err == nil {
|
||||
value = fmt.Sprintf("%v", nValue)
|
||||
} else {
|
||||
value = fmt.Sprintf("'%s'", value)
|
||||
}
|
||||
|
||||
res = append(res, fmt.Sprintf(`%s"%s" %s %s`, str, tag.Key, tag.Operator, value))
|
||||
}
|
||||
|
||||
return res
|
||||
|
@@ -3,6 +3,8 @@ package influxdb
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"strings"
|
||||
|
||||
"github.com/grafana/grafana/pkg/tsdb"
|
||||
. "github.com/smartystreets/goconvey/convey"
|
||||
)
|
||||
@@ -83,5 +85,23 @@ func TestInfluxdbQueryBuilder(t *testing.T) {
|
||||
So(err, ShouldBeNil)
|
||||
So(rawQuery, ShouldEqual, `Raw query`)
|
||||
})
|
||||
|
||||
Convey("can render regex tags", func() {
|
||||
query := &Query{Tags: []*Tag{&Tag{Operator: "=~", Value: "value", Key: "key"}}}
|
||||
|
||||
So(strings.Join(builder.renderTags(query), ""), ShouldEqual, `"key" =~ value`)
|
||||
})
|
||||
|
||||
Convey("can render number tags", func() {
|
||||
query := &Query{Tags: []*Tag{&Tag{Operator: "=", Value: "1", Key: "key"}}}
|
||||
|
||||
So(strings.Join(builder.renderTags(query), ""), ShouldEqual, `"key" = 1`)
|
||||
})
|
||||
|
||||
Convey("can render string tags", func() {
|
||||
query := &Query{Tags: []*Tag{&Tag{Operator: "=", Value: "value", Key: "key"}}}
|
||||
|
||||
So(strings.Join(builder.renderTags(query), ""), ShouldEqual, `"key" = 'value'`)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
Reference in New Issue
Block a user