@@ -3,6 +3,7 @@ package influxdb
3
3
import (
4
4
"fmt"
5
5
"strings"
6
+ "time"
6
7
7
8
"github.com/grafana/grafana/pkg/tsdb"
8
9
)
@@ -92,12 +93,27 @@ func fieldRenderer(query *Query, queryContext *tsdb.QueryContext, part *QueryPar
92
93
return fmt .Sprintf (`"%s"` , part .Params [0 ])
93
94
}
94
95
96
+ func getDefinedInterval (query * Query , queryContext * tsdb.QueryContext ) string {
97
+ setInterval := strings .Replace (strings .Replace (query .Interval , "<" , "" , 1 ), ">" , "" , 1 )
98
+ defaultInterval := tsdb .CalculateInterval (queryContext .TimeRange )
99
+
100
+ if strings .Contains (query .Interval , ">" ) {
101
+ parsedDefaultInterval , err := time .ParseDuration (defaultInterval )
102
+ parsedSetInterval , err2 := time .ParseDuration (setInterval )
103
+
104
+ if err == nil && err2 == nil && parsedDefaultInterval > parsedSetInterval {
105
+ return defaultInterval
106
+ }
107
+ }
108
+
109
+ return setInterval
110
+ }
111
+
95
112
func functionRenderer (query * Query , queryContext * tsdb.QueryContext , part * QueryPart , innerExpr string ) string {
96
- for i , v := range part .Params {
97
- if v == "$interval" {
113
+ for i , param := range part .Params {
114
+ if param == "$interval" {
98
115
if query .Interval != "" {
99
- interval := strings .Replace (strings .Replace (query .Interval , "<" , "" , 1 ), ">" , "" , 1 )
100
- part .Params [i ] = interval
116
+ part .Params [i ] = getDefinedInterval (query , queryContext )
101
117
} else {
102
118
part .Params [i ] = tsdb .CalculateInterval (queryContext .TimeRange )
103
119
}
0 commit comments