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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]