mirror of
https://github.com/grafana/grafana.git
synced 2025-07-30 21:22:44 +08:00
SQL Expressions: Include SQL Parser/Syntax error in the public message (#100725)
fixes #100721
This commit is contained in:
@ -92,6 +92,23 @@ func TestSQLService(t *testing.T) {
|
|||||||
require.Error(t, rsp.Responses["B"].Error, "should return invalid sql error")
|
require.Error(t, rsp.Responses["B"].Error, "should return invalid sql error")
|
||||||
require.ErrorContains(t, rsp.Responses["B"].Error, "blocked function load_file")
|
require.ErrorContains(t, rsp.Responses["B"].Error, "blocked function load_file")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
t.Run("parse error should be returned", func(t *testing.T) {
|
||||||
|
s, req := newMockQueryService(resp,
|
||||||
|
newABSQLQueries(`SELECT * FROM A LIMIT sloth`),
|
||||||
|
)
|
||||||
|
|
||||||
|
s.features = featuremgmt.WithFeatures(featuremgmt.FlagSqlExpressions)
|
||||||
|
|
||||||
|
pl, err := s.BuildPipeline(req)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
rsp, err := s.ExecutePipeline(context.Background(), time.Now(), pl)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
require.Error(t, rsp.Responses["B"].Error, "should return sql error on parsing")
|
||||||
|
require.ErrorContains(t, rsp.Responses["B"].Error, "limit expression expected to be numeric")
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func jsonEscape(input string) (string, error) {
|
func jsonEscape(input string) (string, error) {
|
||||||
|
@ -31,7 +31,7 @@ func NewSQLCommand(refID, rawSQL string) (*SQLCommand, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Warn("invalid sql query", "sql", rawSQL, "error", err)
|
logger.Warn("invalid sql query", "sql", rawSQL, "error", err)
|
||||||
return nil, errutil.BadRequest("sql-invalid-sql",
|
return nil, errutil.BadRequest("sql-invalid-sql",
|
||||||
errutil.WithPublicMessage("error reading SQL command"),
|
errutil.WithPublicMessage(fmt.Sprintf("invalid SQL query: %s", err)),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
if len(tables) == 0 {
|
if len(tables) == 0 {
|
||||||
|
Reference in New Issue
Block a user