SQL datasources: Consistent interval handling (#78517)

sql: apply the received interval-value
This commit is contained in:
Gábor Farkas
2024-01-24 08:47:07 +01:00
committed by GitHub
parent 6484f4a2ac
commit fd73b75ef7
5 changed files with 38 additions and 30 deletions
+2 -8
View File
@@ -42,8 +42,6 @@ type SqlQueryResultTransformer interface {
GetConverterList() []sqlutil.StringConverter
}
var sqlIntervalCalculator = intervalv2.NewCalculator()
type JsonData struct {
MaxOpenConns int `json:"maxOpenConns"`
MaxIdleConns int `json:"maxIdleConns"`
@@ -371,14 +369,10 @@ func (e *DataSourceHandler) executeQuery(query backend.DataQuery, wg *sync.WaitG
// Interpolate provides global macros/substitutions for all sql datasources.
var Interpolate = func(query backend.DataQuery, timeRange backend.TimeRange, timeInterval string, sql string) (string, error) {
minInterval, err := intervalv2.GetIntervalFrom(timeInterval, query.Interval.String(), query.Interval.Milliseconds(), time.Second*60)
if err != nil {
return "", err
}
interval := sqlIntervalCalculator.Calculate(timeRange, minInterval, query.MaxDataPoints)
interval := query.Interval
sql = strings.ReplaceAll(sql, "$__interval_ms", strconv.FormatInt(interval.Milliseconds(), 10))
sql = strings.ReplaceAll(sql, "$__interval", interval.Text)
sql = strings.ReplaceAll(sql, "$__interval", intervalv2.FormatDuration(interval))
sql = strings.ReplaceAll(sql, "$__unixEpochFrom()", fmt.Sprintf("%d", timeRange.From.UTC().Unix()))
sql = strings.ReplaceAll(sql, "$__unixEpochTo()", fmt.Sprintf("%d", timeRange.To.UTC().Unix()))