@@ -43,8 +43,8 @@ pub(crate) fn simplify_predicates(predicates: Vec<Expr>) -> Result<Vec<Expr>> {
4343 {
4444 let left_col = extract_column_from_expr ( left) ;
4545 let right_col = extract_column_from_expr ( right) ;
46- let left_lit = left. is_literal ( ) ;
47- let right_lit = right. is_literal ( ) ;
46+ let left_lit = left. as_literal ( ) . is_some ( ) ;
47+ let right_lit = right. as_literal ( ) . is_some ( ) ;
4848 if let ( Some ( col) , true ) = ( & left_col, right_lit) {
4949 column_predicates. entry ( col. clone ( ) ) . or_default ( ) . push ( pred) ;
5050 } else if let ( true , Some ( col) ) = ( left_lit, & right_col) {
@@ -80,7 +80,7 @@ fn simplify_column_predicates(predicates: Vec<Expr>) -> Result<Vec<Expr>> {
8080 for pred in predicates {
8181 match & pred {
8282 Expr :: BinaryExpr ( BinaryExpr { left : _, op, right } ) => {
83- let right_is_literal = right. is_literal ( ) ;
83+ let right_is_literal = right. as_literal ( ) . is_some ( ) ;
8484 match ( op, right_is_literal) {
8585 ( Operator :: Gt , true )
8686 | ( Operator :: Lt , false )
@@ -149,14 +149,11 @@ fn find_most_restrictive_predicate(
149149 if let Expr :: BinaryExpr ( BinaryExpr { left, op : _, right } ) = pred {
150150 // Extract the literal value based on which side has it
151151 let mut scalar_value = None ;
152- if right. is_literal ( ) {
153- if let Expr :: Literal ( scalar, _) = right. as_ref ( ) {
154- scalar_value = Some ( scalar. clone ( ) ) ;
155- }
156- } else if left. is_literal ( ) {
157- if let Expr :: Literal ( scalar, _) = left. as_ref ( ) {
158- scalar_value = Some ( scalar. clone ( ) ) ;
159- }
152+ if let Some ( scalar) = right. as_literal ( ) {
153+ scalar_value = Some ( scalar. clone ( ) ) ;
154+ }
155+ if let Some ( scalar) = left. as_literal ( ) {
156+ scalar_value = Some ( scalar. clone ( ) ) ;
160157 }
161158
162159 if let Some ( scalar) = scalar_value {
0 commit comments