Skip to content

Commit e4232d4

Browse files
Subham SinghalSubham Singhal
authored andcommitted
Remove scalar macro
1 parent 0dfa277 commit e4232d4

1 file changed

Lines changed: 28 additions & 27 deletions

File tree

datafusion/spark/src/function/math/negative.rs

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -82,27 +82,6 @@ impl ScalarUDFImpl for SparkNegative {
8282
}
8383
}
8484

85-
/// Helper macro to generate wrapping negation for scalar types
86-
macro_rules! wrapping_negative_scalar {
87-
($INPUT:ident, $SCALAR_TYPE:ident) => {{
88-
let result = $INPUT.wrapping_neg();
89-
Ok(ColumnarValue::Scalar(ScalarValue::$SCALAR_TYPE(Some(
90-
result,
91-
))))
92-
}};
93-
}
94-
95-
/// Helper macro to generate wrapping negation for decimal scalar types
96-
macro_rules! wrapping_negative_decimal_scalar {
97-
($INPUT:ident, $PRECISION:expr, $SCALE:expr, $SCALAR_TYPE:ident) => {{
98-
let result = $INPUT.wrapping_neg();
99-
Ok(ColumnarValue::Scalar(ScalarValue::$SCALAR_TYPE(
100-
Some(result),
101-
$PRECISION,
102-
$SCALE,
103-
)))
104-
}};
105-
}
10685

10786
/// Core implementation of Spark's negative function
10887
fn spark_negative(args: &[ColumnarValue]) -> Result<ColumnarValue> {
@@ -180,10 +159,22 @@ fn spark_negative(args: &[ColumnarValue]) -> Result<ColumnarValue> {
180159
sv if sv.is_null() => Ok(args[0].clone()),
181160

182161
// Signed integers - wrapping negation
183-
ScalarValue::Int8(Some(v)) => wrapping_negative_scalar!(v, Int8),
184-
ScalarValue::Int16(Some(v)) => wrapping_negative_scalar!(v, Int16),
185-
ScalarValue::Int32(Some(v)) => wrapping_negative_scalar!(v, Int32),
186-
ScalarValue::Int64(Some(v)) => wrapping_negative_scalar!(v, Int64),
162+
ScalarValue::Int8(Some(v)) => {
163+
let result = v.wrapping_neg();
164+
Ok(ColumnarValue::Scalar(ScalarValue::Int8(Some(result))))
165+
}
166+
ScalarValue::Int16(Some(v)) => {
167+
let result = v.wrapping_neg();
168+
Ok(ColumnarValue::Scalar(ScalarValue::Int16(Some(result))))
169+
}
170+
ScalarValue::Int32(Some(v)) => {
171+
let result = v.wrapping_neg();
172+
Ok(ColumnarValue::Scalar(ScalarValue::Int32(Some(result))))
173+
}
174+
ScalarValue::Int64(Some(v)) => {
175+
let result = v.wrapping_neg();
176+
Ok(ColumnarValue::Scalar(ScalarValue::Int64(Some(result))))
177+
}
187178

188179
// Floating point - simple negation
189180
ScalarValue::Float16(Some(v)) => {
@@ -198,10 +189,20 @@ fn spark_negative(args: &[ColumnarValue]) -> Result<ColumnarValue> {
198189

199190
// Decimal types - wrapping negation
200191
ScalarValue::Decimal128(Some(v), precision, scale) => {
201-
wrapping_negative_decimal_scalar!(v, *precision, *scale, Decimal128)
192+
let result = v.wrapping_neg();
193+
Ok(ColumnarValue::Scalar(ScalarValue::Decimal128(
194+
Some(result),
195+
*precision,
196+
*scale,
197+
)))
202198
}
203199
ScalarValue::Decimal256(Some(v), precision, scale) => {
204-
wrapping_negative_decimal_scalar!(v, *precision, *scale, Decimal256)
200+
let result = v.wrapping_neg();
201+
Ok(ColumnarValue::Scalar(ScalarValue::Decimal256(
202+
Some(result),
203+
*precision,
204+
*scale,
205+
)))
205206
}
206207

207208
dt => internal_err!("Not supported datatype for Spark NEGATIVE: {dt}"),

0 commit comments

Comments
 (0)