diff --git a/pkg/tsdb/influxdb/model_parser.go b/pkg/tsdb/influxdb/model_parser.go index 36a91870ec8..a31071c2093 100644 --- a/pkg/tsdb/influxdb/model_parser.go +++ b/pkg/tsdb/influxdb/model_parser.go @@ -3,6 +3,7 @@ package influxdb import ( "fmt" "strconv" + "time" "github.com/grafana/grafana-plugin-sdk-go/backend" "github.com/grafana/grafana/pkg/components/simplejson" @@ -44,6 +45,15 @@ func (qp *InfluxdbQueryParser) Parse(query backend.DataQuery) (*Query, error) { return nil, err } + interval := query.Interval + + // we make sure it is at least 1 millisecond + minInterval := time.Millisecond + + if interval < minInterval { + interval = minInterval + } + return &Query{ Measurement: measurement, Policy: policy, @@ -52,7 +62,7 @@ func (qp *InfluxdbQueryParser) Parse(query backend.DataQuery) (*Query, error) { Tags: tags, Selects: selects, RawQuery: rawQuery, - Interval: query.Interval, + Interval: interval, Alias: alias, UseRawQuery: useRawQuery, Tz: tz, diff --git a/pkg/tsdb/influxdb/model_parser_test.go b/pkg/tsdb/influxdb/model_parser_test.go index c2b63a6cada..9f45526f207 100644 --- a/pkg/tsdb/influxdb/model_parser_test.go +++ b/pkg/tsdb/influxdb/model_parser_test.go @@ -175,4 +175,23 @@ func TestInfluxdbQueryParser_Parse(t *testing.T) { require.Empty(t, res.Tags) require.Equal(t, time.Second*10, res.Interval) }) + + t.Run("will enforce a minInterval of 1 millisecond", func(t *testing.T) { + json := ` + { + "query": "RawDummyQuery", + "rawQuery": true, + "resultFormat": "time_series" + } + ` + + query := backend.DataQuery{ + JSON: []byte(json), + Interval: time.Millisecond * 0, + } + + res, err := parser.Parse(query) + require.NoError(t, err) + require.Equal(t, time.Millisecond*1, res.Interval) + }) }