diff --git a/advisor/heuristic.go b/advisor/heuristic.go index f482edd941d1edfbad2c6f1a93c93607fff273ca..3efb1b42978ea3b922b89435c286c6694f758145 100644 --- a/advisor/heuristic.go +++ b/advisor/heuristic.go @@ -2185,8 +2185,8 @@ func (q *Query4Audit) RuleCompareWithFunction() Rule { } */ - // func(a) between func(c) and func(d) case *sqlparser.RangeCond: + // func(a) between func(c) and func(d) switch n.Left.(type) { case *sqlparser.SQLVal, *sqlparser.ColName: default: @@ -3231,12 +3231,12 @@ func RuleMySQLError(item string, err error) Rule { ErrString string } - // vitess 语法检查出错返回的是ERR.000 + // tidb parser 语法检查出错返回的是ERR.000 switch item { case "ERR.000": return Rule{ Item: item, - Summary: "no available MySQL environment, sql parse failed: " + err.Error(), + Summary: "No available MySQL environment, build-in sql parse failed: " + err.Error(), Severity: "L8", Content: err.Error(), } @@ -3270,14 +3270,14 @@ func RuleMySQLError(item string, err error) Rule { case "", "1146": return Rule{ Item: item, - Summary: "MySQL执行出错", + Summary: "MySQL execute failed: ", Severity: "L0", Content: "", } default: return Rule{ Item: item, - Summary: "MySQL执行出错 " + mysqlError.ErrString, + Summary: "MySQL execute failed: " + mysqlError.ErrString, Severity: "L8", Content: mysqlError.ErrString, } diff --git a/advisor/rules.go b/advisor/rules.go index f3332332d6fed839800a895b39de5c3fae51e819..b5d080ba6ebf771a2b38f872b9cfd1c8bd4fb914 100644 --- a/advisor/rules.go +++ b/advisor/rules.go @@ -55,14 +55,14 @@ func NewQuery4Audit(sql string, options ...string) (*Query4Audit, error) { } q := &Query4Audit{Query: sql} - // vitess语法解析 + // vitess 语法解析不上报,以 tidb parser 为主 q.Stmt, vErr = sqlparser.Parse(sql) if vErr != nil { common.Log.Warn("NewQuery4Audit vitess parse Error: %s", vErr.Error()) } - // TiDB 语法解析仅作为补充,不检查语法错误 // TODO: charset, collation + // tdib parser 语法解析 q.TiStmt, err = ast.TiParse(sql, charset, collation) return q, err } @@ -1205,7 +1205,7 @@ func FormatSuggest(sql string, format string, suggests ...map[string]Rule) (map[ } sort.Strings(sortedMySQLSuggest) if len(sortedMySQLSuggest) > 0 { - buf = append(buf, "## MySQL执行出错\n") + buf = append(buf, "## MySQL execute failed\n") } for _, item := range sortedMySQLSuggest { buf = append(buf, fmt.Sprintln(suggest[item].Content)) diff --git a/cmd/soar/soar.go b/cmd/soar/soar.go index e8e7783d72f1d6d0e32ade88b2335f62d02a1487..15c3678527d875a574c2abdbbdc5c0c3a50d1fb7 100644 --- a/cmd/soar/soar.go +++ b/cmd/soar/soar.go @@ -202,7 +202,7 @@ func main() { if !common.Config.DryRun { os.Exit(1) } - // vitess 语法检查给出的建议 ERR.000 + // tidb parser 语法检查给出的建议 ERR.000 if common.Config.TestDSN.Disable { mysqlSuggest["ERR.000"] = advisor.RuleMySQLError("ERR.000", syntaxErr) } diff --git a/doc/FAQ.md b/doc/FAQ.md index 58cb4a2462be808bd4ecf93aace377a62bbab533..5c2c5be2a8d64185101b34059ebd8776c366731f 100644 --- a/doc/FAQ.md +++ b/doc/FAQ.md @@ -9,6 +9,12 @@ * [mysql](https://www.mysql.com/) 测试时用来连接测试环境 * [retool](https://github.com/twitchtv/retool): 管理测试开发工具,首次安装耗时会比较长,如: `gometalinter.v2`, `revive`, `golangci-lint` +## Web 界面支持 + +官方不会提供 Web 界面支持,但社区已经有相当多的同学基于 SOAR 开发了衍生的 Web 平台。可以参考如下 ISSUE 的讨论。 + +> https://github.com/XiaoMi/soar/issues/51 + ## 命令行参数 `test-dsn`, `online-dsn` 中包含特殊字符怎么办? 如果 `test-dsn` 或 `online-dsn` 中包含':', '@', '/', '!'等特殊字符建议在配置文件中配置相关信息,配置文件为YAML格式,需要遵守YAML格式的要求规范。