From 1b95334f87e7f0cb8d8693cee0cbaea31ff562da Mon Sep 17 00:00:00 2001 From: Ewan Chou Date: Thu, 24 Sep 2015 16:29:29 +0800 Subject: [PATCH] expression: fix import and BaseVisitor --- expression/helper.go | 2 -- expression/visitor.go | 19 +++++++++++++------ expression/visitor_ident.go | 7 ------- 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/expression/helper.go b/expression/helper.go index fb0009783f..be573e3fba 100644 --- a/expression/helper.go +++ b/expression/helper.go @@ -27,9 +27,7 @@ import ( "time" "github.com/juju/errors" - "github.com/ngaut/log" "github.com/pingcap/tidb/context" - "github.com/pingcap/tidb/expression/builtin" "github.com/pingcap/tidb/model" mysql "github.com/pingcap/tidb/mysqldef" diff --git a/expression/visitor.go b/expression/visitor.go index c91623f236..7f31259dc0 100644 --- a/expression/visitor.go +++ b/expression/visitor.go @@ -181,9 +181,11 @@ func (bv *BaseVisitor) VisitExistsSubQuery(es *ExistsSubQuery) (Expression, erro // VisitFunctionCase implements Visitor interface. func (bv *BaseVisitor) VisitFunctionCase(f *FunctionCase) (Expression, error) { var err error - f.Value, err = f.Value.Accept(bv.V) - if err != nil { - return f, errors.Trace(err) + if f.Value != nil { + f.Value, err = f.Value.Accept(bv.V) + if err != nil { + return f, errors.Trace(err) + } } for i := range f.WhenClauses { _, err = f.WhenClauses[i].Accept(bv.V) @@ -191,9 +193,11 @@ func (bv *BaseVisitor) VisitFunctionCase(f *FunctionCase) (Expression, error) { return f, errors.Trace(err) } } - f.ElseClause, err = f.ElseClause.Accept(bv.V) - if err != nil { - return f, errors.Trace(err) + if f.ElseClause != nil { + f.ElseClause, err = f.ElseClause.Accept(bv.V) + if err != nil { + return f, errors.Trace(err) + } } return f, nil } @@ -229,6 +233,9 @@ func (bv *BaseVisitor) VisitFunctionSubstring(ss *FunctionSubstring) (Expression if err != nil { return ss, errors.Trace(err) } + if ss.Len == nil { + return ss, nil + } ss.Len, err = ss.Len.Accept(bv.V) if err != nil { return ss, errors.Trace(err) diff --git a/expression/visitor_ident.go b/expression/visitor_ident.go index 2757e1f717..fadd6a099f 100644 --- a/expression/visitor_ident.go +++ b/expression/visitor_ident.go @@ -13,13 +13,6 @@ package expression -import ( - "strings" - - "github.com/juju/errors" - "github.com/pingcap/tidb/expression/builtin" -) - // IdentEvalVisitor converts Ident expression to value expression. type IdentEvalVisitor struct { BaseVisitor