@@ -358,47 +358,41 @@ impl PhysicalExpr for BinaryExpr {
358358 fn evaluate ( & self , batch : & RecordBatch ) -> Result < ColumnarValue > {
359359 use arrow:: compute:: kernels:: numeric:: * ;
360360
361- #[ inline]
362361 fn check_short_circuit ( arg : & ColumnarValue , op : & Operator ) -> bool {
363362 let data_type = arg. data_type ( ) ;
364- if data_type == DataType :: Boolean {
365- if * op == Operator :: And {
363+ match ( data_type, op ) {
364+ ( DataType :: Boolean , Operator :: And ) => {
366365 match arg {
367366 ColumnarValue :: Array ( array) => {
368367 if let Ok ( array) = as_boolean_array ( & array) {
369- if array. true_count ( ) == 0 {
370- return true ;
371- }
368+ return array. true_count ( ) == 0 ;
372369 }
373370 }
374371 ColumnarValue :: Scalar ( scalar) => {
375372 if let ScalarValue :: Boolean ( Some ( value) ) = scalar {
376- if !value {
377- return true ;
378- }
373+ return !value;
379374 }
380375 }
381376 }
382- } else if * op == Operator :: Or {
377+ false
378+ }
379+ ( DataType :: Boolean , Operator :: Or ) => {
383380 match arg {
384381 ColumnarValue :: Array ( array) => {
385382 if let Ok ( array) = as_boolean_array ( & array) {
386- if array. true_count ( ) == array. len ( ) {
387- return true ;
388- }
383+ return array. true_count ( ) == array. len ( ) ;
389384 }
390385 }
391386 ColumnarValue :: Scalar ( scalar) => {
392387 if let ScalarValue :: Boolean ( Some ( value) ) = scalar {
393- if * value {
394- return true ;
395- }
388+ return * value;
396389 }
397390 }
398391 }
392+ false
399393 }
394+ _ => false ,
400395 }
401- false
402396 }
403397
404398 let lhs = self . left . evaluate ( batch) ?;
0 commit comments