@@ -14,7 +14,7 @@ type Reverse struct {
1414 expression.UnaryExpression
1515}
1616
17- // NewLower creates a new Lower expression.
17+ // NewReverse creates a new Reverse expression.
1818func NewReverse (e sql.Expression ) sql.Expression {
1919 return & Reverse {expression.UnaryExpression {Child : e }}
2020}
@@ -25,14 +25,10 @@ func (r *Reverse) Eval(
2525 row sql.Row ,
2626) (interface {}, error ) {
2727 v , err := r .Child .Eval (ctx , row )
28- if err != nil {
28+ if v == nil || err != nil {
2929 return nil , err
3030 }
3131
32- if v == nil {
33- return nil , nil
34- }
35-
3632 v , err = sql .Text .Convert (v )
3733 if err != nil {
3834 return nil , err
@@ -43,9 +39,7 @@ func (r *Reverse) Eval(
4339
4440func reverseString (s string ) string {
4541 r := []rune (s )
46- l := len (r )
47- l2 := l / 2
48- for i , j := 0 , l - 1 ; i < l2 ; i , j = i + 1 , j - 1 {
42+ for i , j := 0 , len (r ) - 1 ; i < j ; i , j = i + 1 , j - 1 {
4943 r [i ], r [j ] = r [j ], r [i ]
5044 }
5145 return string (r )
@@ -110,28 +104,20 @@ func (r *Repeat) Eval(
110104 row sql.Row ,
111105) (interface {}, error ) {
112106 str , err := r .Left .Eval (ctx , row )
113- if err != nil {
107+ if str == nil || err != nil {
114108 return nil , err
115109 }
116110
117- if str == nil {
118- return nil , nil
119- }
120-
121111 str , err = sql .Text .Convert (str )
122112 if err != nil {
123113 return nil , err
124114 }
125115
126116 count , err := r .Right .Eval (ctx , row )
127- if err != nil {
117+ if count == nil || err != nil {
128118 return nil , err
129119 }
130120
131- if count == nil {
132- return nil , nil
133- }
134-
135121 count , err = sql .Int32 .Convert (count )
136122 if err != nil {
137123 return nil , err
@@ -204,42 +190,30 @@ func (r *Replace) Eval(
204190 row sql.Row ,
205191) (interface {}, error ) {
206192 str , err := r .str .Eval (ctx , row )
207- if err != nil {
193+ if str == nil || err != nil {
208194 return nil , err
209195 }
210196
211- if str == nil {
212- return nil , nil
213- }
214-
215197 str , err = sql .Text .Convert (str )
216198 if err != nil {
217199 return nil , err
218200 }
219201
220202 fromStr , err := r .fromStr .Eval (ctx , row )
221- if err != nil {
203+ if fromStr == nil || err != nil {
222204 return nil , err
223205 }
224206
225- if fromStr == nil {
226- return nil , nil
227- }
228-
229207 fromStr , err = sql .Text .Convert (fromStr )
230208 if err != nil {
231209 return nil , err
232210 }
233211
234212 toStr , err := r .toStr .Eval (ctx , row )
235- if err != nil {
213+ if toStr == nil || err != nil {
236214 return nil , err
237215 }
238216
239- if toStr == nil {
240- return nil , nil
241- }
242-
243217 toStr , err = sql .Text .Convert (toStr )
244218 if err != nil {
245219 return nil , err
0 commit comments