From c4e1e2a2a9fcb65180e75f9aefb7d3dea47be292 Mon Sep 17 00:00:00 2001 From: Ewan Chou Date: Tue, 19 Jan 2016 11:40:40 +0800 Subject: [PATCH] optimizer/plan: sort switch case order. --- optimizer/plan/planbuilder.go | 40 +++++++++++++++++------------------ 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/optimizer/plan/planbuilder.go b/optimizer/plan/planbuilder.go index 14ee4d1e57..4657800dbd 100644 --- a/optimizer/plan/planbuilder.go +++ b/optimizer/plan/planbuilder.go @@ -410,25 +410,7 @@ func buildResultField(tableName, name string, tp byte, size int) *ast.ResultFiel // matchOrder checks if the plan has the same ordering as items. func matchOrder(p Plan, items []*ast.ByItem) bool { switch x := p.(type) { - case *TableScan: - if len(items) != 1 || !x.Table.PKIsHandle { - return false - } - if items[0].Desc { - return false - } - var refer *ast.ResultField - switch x := items[0].Expr.(type) { - case *ast.ColumnNameExpr: - refer = x.Refer - case *ast.PositionExpr: - refer = x.Refer - default: - return false - } - if mysql.HasPriKeyFlag(refer.Column.Flag) { - return true - } + case *Aggregate: return false case *IndexScan: if len(items) > len(x.Index.Columns) { @@ -452,7 +434,25 @@ func matchOrder(p Plan, items []*ast.ByItem) bool { } } return true - case *Aggregate: + case *TableScan: + if len(items) != 1 || !x.Table.PKIsHandle { + return false + } + if items[0].Desc { + return false + } + var refer *ast.ResultField + switch x := items[0].Expr.(type) { + case *ast.ColumnNameExpr: + refer = x.Refer + case *ast.PositionExpr: + refer = x.Refer + default: + return false + } + if mysql.HasPriKeyFlag(refer.Column.Flag) { + return true + } return false case *Sort: // Sort plan should not be checked here as there should only be one sort plan in a plan tree.