diff --git a/pkg/tsdb/grafana-postgresql-datasource/sqleng/sql_engine.go b/pkg/tsdb/grafana-postgresql-datasource/sqleng/sql_engine.go index dbf02b75b0c..7712fe7c3d5 100644 --- a/pkg/tsdb/grafana-postgresql-datasource/sqleng/sql_engine.go +++ b/pkg/tsdb/grafana-postgresql-datasource/sqleng/sql_engine.go @@ -235,7 +235,7 @@ func (e *DataSourceHandler) executeQuery(query backend.DataQuery, wg *sync.WaitG emptyFrame.SetMeta(&data.FrameMeta{ ExecutedQueryString: query, }) - if backend.IsDownstreamError(err) { + if isDownstreamError(err) { source = backend.ErrorSourceDownstream } queryResult.dataResponse.Error = fmt.Errorf("%s: %w", frameErr, err) @@ -646,3 +646,20 @@ func epochPrecisionToMS(value float64) float64 { return value } + +func isDownstreamError(err error) bool { + if backend.IsDownstreamError(err) { + return true + } + resultProcessingDownstreamErrors := []error{ + data.ErrorInputFieldsWithoutRows, + data.ErrorSeriesUnsorted, + data.ErrorNullTimeValues, + } + for _, e := range resultProcessingDownstreamErrors { + if errors.Is(err, e) { + return true + } + } + return false +} diff --git a/pkg/tsdb/mssql/sqleng/sql_engine.go b/pkg/tsdb/mssql/sqleng/sql_engine.go index 5831a778226..350c038b3c0 100644 --- a/pkg/tsdb/mssql/sqleng/sql_engine.go +++ b/pkg/tsdb/mssql/sqleng/sql_engine.go @@ -231,7 +231,7 @@ func (e *DataSourceHandler) executeQuery(query backend.DataQuery, wg *sync.WaitG emptyFrame.SetMeta(&data.FrameMeta{ ExecutedQueryString: query, }) - if backend.IsDownstreamError(err) { + if isDownstreamError(err) { source = backend.ErrorSourceDownstream } queryResult.dataResponse.Error = fmt.Errorf("%s: %w", frameErr, err) @@ -642,3 +642,20 @@ func epochPrecisionToMS(value float64) float64 { return value } + +func isDownstreamError(err error) bool { + if backend.IsDownstreamError(err) { + return true + } + resultProcessingDownstreamErrors := []error{ + data.ErrorInputFieldsWithoutRows, + data.ErrorSeriesUnsorted, + data.ErrorNullTimeValues, + } + for _, e := range resultProcessingDownstreamErrors { + if errors.Is(err, e) { + return true + } + } + return false +} diff --git a/pkg/tsdb/mysql/sqleng/sql_engine.go b/pkg/tsdb/mysql/sqleng/sql_engine.go index 5831a778226..350c038b3c0 100644 --- a/pkg/tsdb/mysql/sqleng/sql_engine.go +++ b/pkg/tsdb/mysql/sqleng/sql_engine.go @@ -231,7 +231,7 @@ func (e *DataSourceHandler) executeQuery(query backend.DataQuery, wg *sync.WaitG emptyFrame.SetMeta(&data.FrameMeta{ ExecutedQueryString: query, }) - if backend.IsDownstreamError(err) { + if isDownstreamError(err) { source = backend.ErrorSourceDownstream } queryResult.dataResponse.Error = fmt.Errorf("%s: %w", frameErr, err) @@ -642,3 +642,20 @@ func epochPrecisionToMS(value float64) float64 { return value } + +func isDownstreamError(err error) bool { + if backend.IsDownstreamError(err) { + return true + } + resultProcessingDownstreamErrors := []error{ + data.ErrorInputFieldsWithoutRows, + data.ErrorSeriesUnsorted, + data.ErrorNullTimeValues, + } + for _, e := range resultProcessingDownstreamErrors { + if errors.Is(err, e) { + return true + } + } + return false +}