From cab079d18d3d87a5a574939dcbe22d4f5e964578 Mon Sep 17 00:00:00 2001 From: qiuyesuifeng Date: Mon, 11 Jan 2016 20:18:46 +0800 Subject: [PATCH 1/2] executor/converter: sort statements in Convert function. --- executor/converter/converter.go | 76 ++++++++++++++++----------------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/executor/converter/converter.go b/executor/converter/converter.go index 45fb7fc249..dc106ce18f 100644 --- a/executor/converter/converter.go +++ b/executor/converter/converter.go @@ -28,56 +28,56 @@ func (con *Converter) Convert(node ast.Node) (stmt.Statement, error) { c := newExpressionConverter() con.converter = c switch v := node.(type) { - case *ast.InsertStmt: - return convertInsert(c, v) - case *ast.DeleteStmt: - return convertDelete(c, v) - case *ast.UpdateStmt: - return convertUpdate(c, v) - case *ast.SelectStmt: - return convertSelect(c, v) - case *ast.UnionStmt: - return convertUnion(c, v) - case *ast.CreateDatabaseStmt: - return convertCreateDatabase(c, v) - case *ast.DropDatabaseStmt: - return convertDropDatabase(c, v) - case *ast.CreateTableStmt: - return convertCreateTable(c, v) - case *ast.DropTableStmt: - return convertDropTable(c, v) - case *ast.CreateIndexStmt: - return convertCreateIndex(c, v) - case *ast.DropIndexStmt: - return convertDropIndex(c, v) case *ast.AlterTableStmt: return convertAlterTable(c, v) - case *ast.TruncateTableStmt: - return convertTruncateTable(c, v) - case *ast.ExplainStmt: - return convertExplain(c, v) - case *ast.ShowStmt: - return convertShow(c, v) case *ast.BeginStmt: return convertBegin(c, v) case *ast.CommitStmt: return convertCommit(c, v) + case *ast.CreateDatabaseStmt: + return convertCreateDatabase(c, v) + case *ast.CreateIndexStmt: + return convertCreateIndex(c, v) + case *ast.CreateTableStmt: + return convertCreateTable(c, v) + case *ast.CreateUserStmt: + return convertCreateUser(c, v) + case *ast.DeleteStmt: + return convertDelete(c, v) + case *ast.DoStmt: + return convertDo(c, v) + case *ast.DropDatabaseStmt: + return convertDropDatabase(c, v) + case *ast.DropIndexStmt: + return convertDropIndex(c, v) + case *ast.DropTableStmt: + return convertDropTable(c, v) + case *ast.ExplainStmt: + return convertExplain(c, v) + case *ast.GrantStmt: + return convertGrant(c, v) + case *ast.InsertStmt: + return convertInsert(c, v) case *ast.RollbackStmt: return convertRollback(c, v) - case *ast.UseStmt: - return convertUse(c, v) - case *ast.SetStmt: - return convertSet(c, v) + case *ast.SelectStmt: + return convertSelect(c, v) case *ast.SetCharsetStmt: return convertSetCharset(c, v) case *ast.SetPwdStmt: return convertSetPwd(c, v) - case *ast.CreateUserStmt: - return convertCreateUser(c, v) - case *ast.DoStmt: - return convertDo(c, v) - case *ast.GrantStmt: - return convertGrant(c, v) + case *ast.SetStmt: + return convertSet(c, v) + case *ast.ShowStmt: + return convertShow(c, v) + case *ast.TruncateTableStmt: + return convertTruncateTable(c, v) + case *ast.UnionStmt: + return convertUnion(c, v) + case *ast.UpdateStmt: + return convertUpdate(c, v) + case *ast.UseStmt: + return convertUse(c, v) } return nil, nil } From c0b22d334fe98d96e7f75aa515543644bb9a0881 Mon Sep 17 00:00:00 2001 From: qiuyesuifeng Date: Mon, 11 Jan 2016 21:46:16 +0800 Subject: [PATCH 2/2] ast: flag setter sort. --- ast/flag.go | 78 ++++++++++++++++++++++++++--------------------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/ast/flag.go b/ast/flag.go index 6d50b609dd..3ce946849b 100644 --- a/ast/flag.go +++ b/ast/flag.go @@ -41,67 +41,67 @@ func (f *flagSetter) Enter(in Node) (Node, bool) { func (f *flagSetter) Leave(in Node) (Node, bool) { switch x := in.(type) { - case *ValueExpr: + case *AggregateFuncExpr: + f.aggregateFunc(x) case *BetweenExpr: x.SetFlag(x.Expr.GetFlag() | x.Left.GetFlag() | x.Right.GetFlag()) case *BinaryOperationExpr: x.SetFlag(x.L.GetFlag() | x.R.GetFlag()) case *CaseExpr: f.caseExpr(x) - case *SubqueryExpr: - x.SetFlag(FlagHasSubquery) - case *CompareSubqueryExpr: - x.SetFlag(x.L.GetFlag() | x.R.GetFlag()) case *ColumnNameExpr: x.SetFlag(FlagHasReference) + case *CompareSubqueryExpr: + x.SetFlag(x.L.GetFlag() | x.R.GetFlag()) case *DefaultExpr: x.SetFlag(FlagHasDefault) case *ExistsSubqueryExpr: x.SetFlag(x.Sel.GetFlag()) - case *PatternInExpr: - f.patternIn(x) - case *IsNullExpr: - x.SetFlag(x.Expr.GetFlag()) - case *IsTruthExpr: - x.SetFlag(x.Expr.GetFlag()) - case *PatternLikeExpr: - f.patternLike(x) - case *ParamMarkerExpr: - x.SetFlag(FlagHasParamMarker) - case *ParenthesesExpr: - x.SetFlag(x.Expr.GetFlag()) - case *PositionExpr: - x.SetFlag(FlagHasReference) - case *PatternRegexpExpr: - f.patternRegexp(x) - case *RowExpr: - f.row(x) - case *UnaryOperationExpr: - x.SetFlag(x.V.GetFlag()) - case *ValuesExpr: - x.SetFlag(FlagHasReference) - case *VariableExpr: - x.SetFlag(FlagHasVariable) case *FuncCallExpr: f.funcCall(x) - case *FuncExtractExpr: - x.SetFlag(FlagHasFunc | x.Date.GetFlag()) - case *FuncConvertExpr: - x.SetFlag(FlagHasFunc | x.Expr.GetFlag()) case *FuncCastExpr: x.SetFlag(FlagHasFunc | x.Expr.GetFlag()) + case *FuncConvertExpr: + x.SetFlag(FlagHasFunc | x.Expr.GetFlag()) + case *FuncDateArithExpr: + f.funcDateArith(x) + case *FuncExtractExpr: + x.SetFlag(FlagHasFunc | x.Date.GetFlag()) + case *FuncLocateExpr: + f.funcLocate(x) case *FuncSubstringExpr: f.funcSubstring(x) case *FuncSubstringIndexExpr: f.funcSubstringIndex(x) - case *FuncLocateExpr: - f.funcLocate(x) case *FuncTrimExpr: f.funcTrim(x) - case *FuncDateArithExpr: - f.funcDateArith(x) - case *AggregateFuncExpr: - f.aggregateFunc(x) + case *IsNullExpr: + x.SetFlag(x.Expr.GetFlag()) + case *IsTruthExpr: + x.SetFlag(x.Expr.GetFlag()) + case *ParamMarkerExpr: + x.SetFlag(FlagHasParamMarker) + case *ParenthesesExpr: + x.SetFlag(x.Expr.GetFlag()) + case *PatternInExpr: + f.patternIn(x) + case *PatternLikeExpr: + f.patternLike(x) + case *PatternRegexpExpr: + f.patternRegexp(x) + case *PositionExpr: + x.SetFlag(FlagHasReference) + case *RowExpr: + f.row(x) + case *SubqueryExpr: + x.SetFlag(FlagHasSubquery) + case *UnaryOperationExpr: + x.SetFlag(x.V.GetFlag()) + case *ValueExpr: + case *ValuesExpr: + x.SetFlag(FlagHasReference) + case *VariableExpr: + x.SetFlag(FlagHasVariable) } return in, true