influxdb: influxql: explicit min-interval check (#38873)

* influxdb: influxql: explicit min-interval check

* added test
This commit is contained in:
Gábor Farkas
2021-09-07 09:49:34 +02:00
committed by GitHub
parent 9f833681b1
commit 3f0f448201
2 changed files with 30 additions and 1 deletions
+11 -1
View File
@@ -3,6 +3,7 @@ package influxdb
import ( import (
"fmt" "fmt"
"strconv" "strconv"
"time"
"github.com/grafana/grafana-plugin-sdk-go/backend" "github.com/grafana/grafana-plugin-sdk-go/backend"
"github.com/grafana/grafana/pkg/components/simplejson" "github.com/grafana/grafana/pkg/components/simplejson"
@@ -44,6 +45,15 @@ func (qp *InfluxdbQueryParser) Parse(query backend.DataQuery) (*Query, error) {
return nil, err 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{ return &Query{
Measurement: measurement, Measurement: measurement,
Policy: policy, Policy: policy,
@@ -52,7 +62,7 @@ func (qp *InfluxdbQueryParser) Parse(query backend.DataQuery) (*Query, error) {
Tags: tags, Tags: tags,
Selects: selects, Selects: selects,
RawQuery: rawQuery, RawQuery: rawQuery,
Interval: query.Interval, Interval: interval,
Alias: alias, Alias: alias,
UseRawQuery: useRawQuery, UseRawQuery: useRawQuery,
Tz: tz, Tz: tz,
+19
View File
@@ -175,4 +175,23 @@ func TestInfluxdbQueryParser_Parse(t *testing.T) {
require.Empty(t, res.Tags) require.Empty(t, res.Tags)
require.Equal(t, time.Second*10, res.Interval) 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)
})
} }