(
value: ArrayRef,
decimal_places: Option<ArrayRef>,
)
| 734 | use datafusion_expr::ColumnarValue; |
| 735 | |
| 736 | fn round_arrays( |
| 737 | value: ArrayRef, |
| 738 | decimal_places: Option<ArrayRef>, |
| 739 | ) -> Result<ArrayRef, DataFusionError> { |
| 740 | let number_rows = value.len(); |
| 741 | // NOTE: For decimal inputs, the actual ROUND return type can differ from the |
| 742 | // input type (scale reduction for literal `decimal_places`). These unit tests |
| 743 | // only exercise Float32/Float64 behavior. |
| 744 | let return_type = value.data_type().clone(); |
| 745 | let value = ColumnarValue::Array(value); |
| 746 | let decimal_places = decimal_places |
| 747 | .map(ColumnarValue::Array) |
| 748 | .unwrap_or_else(|| ColumnarValue::Scalar(ScalarValue::Int32(Some(0)))); |
| 749 | |
| 750 | let result = |
| 751 | super::round_columnar(&value, &decimal_places, number_rows, &return_type)?; |
| 752 | match result { |
| 753 | ColumnarValue::Array(array) => Ok(array), |
| 754 | ColumnarValue::Scalar(scalar) => scalar.to_array_of_size(1), |
| 755 | } |
| 756 | } |
| 757 | |
| 758 | #[test] |
| 759 | fn test_round_f32() { |
searching dependent graphs…