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

View File

@@ -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,

View File

@@ -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)
})
}