influxdb: influxql: explicit min-interval check (#38873)
* influxdb: influxql: explicit min-interval check * added test
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
@@ -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)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user