|
15 | 15 | // specific language governing permissions and limitations |
16 | 16 | // under the License. |
17 | 17 |
|
18 | | -use crate::function::error_utils::{ |
19 | | - invalid_arg_count_exec_err, unsupported_data_type_exec_err, |
20 | | -}; |
21 | 18 | use arrow::array::*; |
22 | 19 | use arrow::datatypes::DataType; |
23 | 20 | use datafusion_common::{internal_err, DataFusionError, Result, ScalarValue}; |
@@ -150,42 +147,23 @@ pub fn spark_abs(args: &[ColumnarValue]) -> Result<ColumnarValue, DataFusionErro |
150 | 147 | | ScalarValue::UInt16(_) |
151 | 148 | | ScalarValue::UInt32(_) |
152 | 149 | | ScalarValue::UInt64(_) => Ok(args[0].clone()), |
153 | | - ScalarValue::Int8(a) => match a { |
154 | | - None => Ok(args[0].clone()), |
155 | | - Some(v) => scalar_compute_op!(v, Int8), |
156 | | - }, |
157 | | - ScalarValue::Int16(a) => match a { |
158 | | - None => Ok(args[0].clone()), |
159 | | - Some(v) => scalar_compute_op!(v, Int16), |
160 | | - }, |
161 | | - ScalarValue::Int32(a) => match a { |
162 | | - None => Ok(args[0].clone()), |
163 | | - Some(v) => scalar_compute_op!(v, Int32), |
164 | | - }, |
165 | | - ScalarValue::Int64(a) => match a { |
166 | | - None => Ok(args[0].clone()), |
167 | | - Some(v) => scalar_compute_op!(v, Int64), |
168 | | - }, |
169 | | - ScalarValue::Float32(a) => match a { |
170 | | - None => Ok(args[0].clone()), |
171 | | - Some(v) => Ok(ColumnarValue::Scalar(ScalarValue::Float32(Some(v.abs())))), |
172 | | - }, |
173 | | - ScalarValue::Float64(a) => match a { |
174 | | - None => Ok(args[0].clone()), |
175 | | - Some(v) => Ok(ColumnarValue::Scalar(ScalarValue::Float64(Some(v.abs())))), |
176 | | - }, |
177 | | - ScalarValue::Decimal128(a, precision, scale) => match a { |
178 | | - None => Ok(args[0].clone()), |
179 | | - Some(v) => { |
180 | | - scalar_compute_op!(v, *precision, *scale, Decimal128) |
181 | | - } |
182 | | - }, |
183 | | - ScalarValue::Decimal256(a, precision, scale) => match a { |
184 | | - None => Ok(args[0].clone()), |
185 | | - Some(v) => { |
186 | | - scalar_compute_op!(v, *precision, *scale, Decimal256) |
187 | | - } |
188 | | - }, |
| 150 | + sv if sv.is_null() => Ok(args[0].clone()), |
| 151 | + ScalarValue::Int8(Some(v)) => scalar_compute_op!(v, Int8), |
| 152 | + ScalarValue::Int16(Some(v)) => scalar_compute_op!(v, Int16), |
| 153 | + ScalarValue::Int32(Some(v)) => scalar_compute_op!(v, Int32), |
| 154 | + ScalarValue::Int64(Some(v)) => scalar_compute_op!(v, Int64), |
| 155 | + ScalarValue::Float32(Some(v)) => { |
| 156 | + Ok(ColumnarValue::Scalar(ScalarValue::Float32(Some(v.abs())))) |
| 157 | + } |
| 158 | + ScalarValue::Float64(Some(v)) => { |
| 159 | + Ok(ColumnarValue::Scalar(ScalarValue::Float64(Some(v.abs())))) |
| 160 | + } |
| 161 | + ScalarValue::Decimal128(Some(v), precision, scale) => { |
| 162 | + scalar_compute_op!(v, *precision, *scale, Decimal128) |
| 163 | + } |
| 164 | + ScalarValue::Decimal256(Some(v), precision, scale) => { |
| 165 | + scalar_compute_op!(v, *precision, *scale, Decimal256) |
| 166 | + } |
189 | 167 | dt => internal_err!("Not supported datatype for Spark ABS: {dt}"), |
190 | 168 | }, |
191 | 169 | } |
|
0 commit comments