drrtuy commented on code in PR #3782: URL: https://github.com/apache/arrow-datafusion/pull/3782#discussion_r993090559
########## datafusion/optimizer/src/simplify_expressions.rs: ########## @@ -137,6 +179,9 @@ fn is_one(s: &Expr) -> bool { | Expr::Literal(ScalarValue::UInt64(Some(1))) => true, Expr::Literal(ScalarValue::Float32(Some(v))) if *v == 1. => true, Expr::Literal(ScalarValue::Float64(Some(v))) if *v == 1. => true, + Expr::Literal(ScalarValue::Decimal128(Some(v), _p, _s)) => { + *_s < DECIMAL128_MAX_PRECISION && POWS_OF_TEN[*_s as usize] == *v Review Comment: pow call make the patch lesser but will do a real multiplication instead of a pointer deref. This is perf degradaton IMHO. In the worst case there will be 6 such multiplications(2 for Multiply, 2 for Divide, 2 for Modulo) and there might be multiple scalars binary ops in the expression. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: github-unsubscr...@arrow.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org