diff --git a/advisor/heuristic.go b/advisor/heuristic.go index 4262cb54f6527fed9de89f0e5b70565421c9f364..f482edd941d1edfbad2c6f1a93c93607fff273ca 100644 --- a/advisor/heuristic.go +++ b/advisor/heuristic.go @@ -2185,7 +2185,7 @@ func (q *Query4Audit) RuleCompareWithFunction() Rule { } */ - // func(a) between func(c) and func(d) + // func(a) between func(c) and func(d) case *sqlparser.RangeCond: switch n.Left.(type) { case *sqlparser.SQLVal, *sqlparser.ColName: @@ -3236,7 +3236,7 @@ func RuleMySQLError(item string, err error) Rule { case "ERR.000": return Rule{ Item: item, - Summary: "MySQL执行出错 " + err.Error(), + Summary: "no available MySQL environment, sql parse failed: " + err.Error(), Severity: "L8", Content: err.Error(), } diff --git a/advisor/heuristic_test.go b/advisor/heuristic_test.go index 81e7920a668d18e7374de9e7f0898eda8dedd603..6c0be851cc2d4e103ce9593d62cd21635a1dda42 100644 --- a/advisor/heuristic_test.go +++ b/advisor/heuristic_test.go @@ -1164,7 +1164,7 @@ func TestRuleRecursiveDependency(t *testing.T) { `ALTER TABLE tbl2 add FOREIGN KEY (p_id) REFERENCES tab1(p_id);`, }, { - `ALTER TABLE tbl2 ADD KEY (p_id) p_id;`, + `ALTER TABLE tbl2 ADD KEY p_id (p_id);`, }, } for _, sql := range sqls[0] { @@ -2128,7 +2128,7 @@ func TestRuleVarcharVSChar(t *testing.T) { func TestRuleCreateDualTable(t *testing.T) { common.Log.Debug("Entering function: %s", common.GetFunctionName()) sqls := []string{ - `create table dual(id int, primary key (id));`, + "create table `dual`(id int, primary key (id));", } for _, sql := range sqls { q, err := NewQuery4Audit(sql) diff --git a/advisor/rules.go b/advisor/rules.go index beadb79a69afb20b481809d4f67438c400930f8e..f3332332d6fed839800a895b39de5c3fae51e819 100644 --- a/advisor/rules.go +++ b/advisor/rules.go @@ -42,7 +42,7 @@ type Query4Audit struct { // NewQuery4Audit return a struct for Query4Audit func NewQuery4Audit(sql string, options ...string) (*Query4Audit, error) { - var err, tiErr error + var err, vErr error var charset string var collation string @@ -56,14 +56,14 @@ func NewQuery4Audit(sql string, options ...string) (*Query4Audit, error) { q := &Query4Audit{Query: sql} // vitess语法解析 - q.Stmt, err = sqlparser.Parse(sql) + q.Stmt, vErr = sqlparser.Parse(sql) + if vErr != nil { + common.Log.Warn("NewQuery4Audit vitess parse Error: %s", vErr.Error()) + } // TiDB 语法解析仅作为补充,不检查语法错误 // TODO: charset, collation - q.TiStmt, tiErr = ast.TiParse(sql, charset, collation) - if tiErr != nil { - common.Log.Warn("NewQuery4Audit ast.Tiparse Error: %s", tiErr.Error()) - } + q.TiStmt, err = ast.TiParse(sql, charset, collation) return q, err }