fn can_push_down()

in crates/datafusion/src/lib.rs [109:125]


    fn can_push_down(&self, expr: &Expr) -> bool {
        match expr {
            Expr::BinaryExpr(binary_expr) => {
                let left = &binary_expr.left;
                let op = &binary_expr.op;
                let right = &binary_expr.right;
                self.is_supported_operator(op)
                    && self.is_supported_operand(left)
                    && self.is_supported_operand(right)
            }
            Expr::Not(inner_expr) => {
                // Recursively check if the inner expression can be pushed down
                self.can_push_down(inner_expr)
            }
            _ => false,
        }
    }