@@ -338,57 +338,21 @@ pub fn from_between(
338338 low,
339339 high,
340340 } = between;
341- if * negated {
342- // `expr NOT BETWEEN low AND high` can be translated into (expr < low OR high < expr)
343- let substrait_expr = producer. handle_expr ( expr. as_ref ( ) , schema) ?;
344- let substrait_low = producer. handle_expr ( low. as_ref ( ) , schema) ?;
345- let substrait_high = producer. handle_expr ( high. as_ref ( ) , schema) ?;
346-
347- let l_expr = make_binary_op_scalar_func (
348- producer,
349- & substrait_expr,
350- & substrait_low,
351- Operator :: Lt ,
352- ) ;
353- let r_expr = make_binary_op_scalar_func (
354- producer,
355- & substrait_high,
356- & substrait_expr,
357- Operator :: Lt ,
358- ) ;
359341
360- Ok ( make_binary_op_scalar_func (
361- producer ,
362- & l_expr ,
363- & r_expr ,
364- Operator :: Or ,
365- ) )
342+ let expr = if * negated {
343+ // `expr NOT BETWEEN low AND high` can be translated into (expr < low OR high < expr)
344+ Expr :: or (
345+ Expr :: lt ( * expr . clone ( ) , * low . clone ( ) ) ,
346+ Expr :: lt ( * high . clone ( ) , * expr . clone ( ) ) ,
347+ )
366348 } else {
367349 // `expr BETWEEN low AND high` can be translated into (low <= expr AND expr <= high)
368- let substrait_expr = producer. handle_expr ( expr. as_ref ( ) , schema) ?;
369- let substrait_low = producer. handle_expr ( low. as_ref ( ) , schema) ?;
370- let substrait_high = producer. handle_expr ( high. as_ref ( ) , schema) ?;
371-
372- let l_expr = make_binary_op_scalar_func (
373- producer,
374- & substrait_low,
375- & substrait_expr,
376- Operator :: LtEq ,
377- ) ;
378- let r_expr = make_binary_op_scalar_func (
379- producer,
380- & substrait_expr,
381- & substrait_high,
382- Operator :: LtEq ,
383- ) ;
384-
385- Ok ( make_binary_op_scalar_func (
386- producer,
387- & l_expr,
388- & r_expr,
389- Operator :: And ,
390- ) )
391- }
350+ Expr :: and (
351+ Expr :: lt_eq ( * low. clone ( ) , * expr. clone ( ) ) ,
352+ Expr :: lt_eq ( * expr. clone ( ) , * high. clone ( ) ) ,
353+ )
354+ } ;
355+ producer. handle_expr ( & expr, schema)
392356}
393357
394358pub fn operator_to_name ( op : Operator ) -> & ' static str {
0 commit comments