diff --git a/pkg/tsdb/influxdb/query.go b/pkg/tsdb/influxdb/query.go index f271c5d245f..0bcdf1d5291 100644 --- a/pkg/tsdb/influxdb/query.go +++ b/pkg/tsdb/influxdb/query.go @@ -151,8 +151,12 @@ func (query *Query) renderMeasurement() string { func (query *Query) renderWhereClause() string { res := " WHERE " conditions := query.renderTags() - res += strings.Join(conditions, " ") if len(conditions) > 0 { + if len(conditions) > 1 { + res += "(" + strings.Join(conditions, " ") + ")" + } else { + res += conditions[0] + } res += " AND " } diff --git a/pkg/tsdb/influxdb/query_test.go b/pkg/tsdb/influxdb/query_test.go index 533df27f91f..0977ef8c1ce 100644 --- a/pkg/tsdb/influxdb/query_test.go +++ b/pkg/tsdb/influxdb/query_test.go @@ -57,7 +57,7 @@ func TestInfluxdbQueryBuilder(t *testing.T) { rawQuery, err := query.Build(queryContext) So(err, ShouldBeNil) - So(rawQuery, ShouldEqual, `SELECT mean("value") FROM "cpu" WHERE "hostname" = 'server1' OR "hostname" = 'server2' AND time > now() - 5m GROUP BY time(5s), "datacenter" fill(null)`) + So(rawQuery, ShouldEqual, `SELECT mean("value") FROM "cpu" WHERE ("hostname" = 'server1' OR "hostname" = 'server2') AND time > now() - 5m GROUP BY time(5s), "datacenter" fill(null)`) }) Convey("can build query with math part", func() {