mirror of
https://github.com/grafana/grafana.git
synced 2025-07-29 21:52:14 +08:00
SQL Expressions: Fix error handling (#102650)
This commit is contained in:
@ -14,6 +14,16 @@ import (
|
||||
"github.com/grafana/grafana/pkg/infra/tracing"
|
||||
)
|
||||
|
||||
var (
|
||||
ErrMissingSQLQuery = errutil.BadRequest("sql-missing-query").Errorf("missing SQL query")
|
||||
ErrInvalidSQLQuery = errutil.BadRequest("sql-invalid-sql").MustTemplate(
|
||||
"invalid SQL query: {{ .Private.query }} err: {{ .Error }}",
|
||||
errutil.WithPublic(
|
||||
"Invalid SQL query: {{ .Public.error }}",
|
||||
),
|
||||
)
|
||||
)
|
||||
|
||||
// SQLCommand is an expression to run SQL over results
|
||||
type SQLCommand struct {
|
||||
query string
|
||||
@ -25,15 +35,20 @@ type SQLCommand struct {
|
||||
// NewSQLCommand creates a new SQLCommand.
|
||||
func NewSQLCommand(refID, rawSQL string, limit int64) (*SQLCommand, error) {
|
||||
if rawSQL == "" {
|
||||
return nil, errutil.BadRequest("sql-missing-query",
|
||||
errutil.WithPublicMessage("missing SQL query"))
|
||||
return nil, ErrMissingSQLQuery
|
||||
}
|
||||
tables, err := sql.TablesList(rawSQL)
|
||||
if err != nil {
|
||||
logger.Warn("invalid sql query", "sql", rawSQL, "error", err)
|
||||
return nil, errutil.BadRequest("sql-invalid-sql",
|
||||
errutil.WithPublicMessage(fmt.Sprintf("invalid SQL query: %s", err)),
|
||||
)
|
||||
return nil, ErrInvalidSQLQuery.Build(errutil.TemplateData{
|
||||
Error: err,
|
||||
Public: map[string]any{
|
||||
"error": err.Error(),
|
||||
},
|
||||
Private: map[string]any{
|
||||
"query": rawSQL,
|
||||
},
|
||||
})
|
||||
}
|
||||
if len(tables) == 0 {
|
||||
logger.Warn("no tables found in SQL query", "sql", rawSQL)
|
||||
|
Reference in New Issue
Block a user