SQL Expressions: Include SQL Parser/Syntax error in the public message (#100725)

fixes #100721
This commit is contained in:
Kyle Brandt
2025-02-14 09:09:21 -05:00
committed by GitHub
parent 196a73ec72
commit c291ec7ba9
2 changed files with 18 additions and 1 deletions

View File

@ -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) {

View File

@ -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 {