diff --git a/pkg/expr/service_sql_test.go b/pkg/expr/service_sql_test.go index 5730ca82fd0..2ad5df4baa8 100644 --- a/pkg/expr/service_sql_test.go +++ b/pkg/expr/service_sql_test.go @@ -92,6 +92,23 @@ func TestSQLService(t *testing.T) { require.Error(t, rsp.Responses["B"].Error, "should return invalid sql error") 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) { diff --git a/pkg/expr/sql_command.go b/pkg/expr/sql_command.go index 60d23f6e82f..069d2a39e91 100644 --- a/pkg/expr/sql_command.go +++ b/pkg/expr/sql_command.go @@ -31,7 +31,7 @@ func NewSQLCommand(refID, rawSQL string) (*SQLCommand, error) { if err != nil { logger.Warn("invalid sql query", "sql", rawSQL, "error", err) 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 {