liukun4515 commented on code in PR #2357:
URL: https://github.com/apache/arrow-rs/pull/2357#discussion_r940072998


##########
arrow/src/compute/kernels/cast.rs:
##########
@@ -1276,8 +1277,17 @@ fn cast_decimal_to_decimal(
             .iter()
             .map(|v| v.map(|v| v.as_i128() * mul))
             .collect::<Decimal128Array>()
-    }
-    .with_precision_and_scale(*output_precision, *output_scale)?;
+    };
+    // For decimal cast to decimal, if the range of output is gt_eq than the 
input, don't need to
+    // do validation.
+    let output_array  = match output_precision-output_scale>=input_precision - 
input_scale {
+        true => {
+            output_array.with_precision_and_scale(*output_precision, 
*output_scale, false)
+        }
+        false => {
+            output_array.with_precision_and_scale(*output_precision, 
*output_scale, true)
+        }
+    }?;

Review Comment:
   if cast decimal(5,2) to decimal(5,3). 
   a value of 123.45 will be convert to 123.450, but the 123450 is out of range 
of decimal(5,3).



-- 
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

Reply via email to