Skip to content

Commit 9445679

Browse files
authored
Migrate math functions to implement invoke_with_args (apache#14658)
* Migrate math functions to implement invoke_with_args * Fix unit tests * Fix clippy lints * Fix compile
1 parent c6656f2 commit 9445679

File tree

15 files changed

+196
-192
lines changed

15 files changed

+196
-192
lines changed

datafusion/functions/src/math/abs.rs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ use datafusion_common::{
3232
use datafusion_expr::interval_arithmetic::Interval;
3333
use datafusion_expr::sort_properties::{ExprProperties, SortProperties};
3434
use datafusion_expr::{
35-
ColumnarValue, Documentation, ScalarUDFImpl, Signature, Volatility,
35+
ColumnarValue, Documentation, ScalarFunctionArgs, ScalarUDFImpl, Signature,
36+
Volatility,
3637
};
3738
use datafusion_macros::user_doc;
3839

@@ -168,12 +169,8 @@ impl ScalarUDFImpl for AbsFunc {
168169
}
169170
}
170171

171-
fn invoke_batch(
172-
&self,
173-
args: &[ColumnarValue],
174-
_number_rows: usize,
175-
) -> Result<ColumnarValue> {
176-
let args = ColumnarValue::values_to_arrays(args)?;
172+
fn invoke_with_args(&self, args: ScalarFunctionArgs) -> Result<ColumnarValue> {
173+
let args = ColumnarValue::values_to_arrays(&args.args)?;
177174
let [input] = take_function_args(self.name(), args)?;
178175

179176
let input_data_type = input.data_type();

datafusion/functions/src/math/cot.rs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ use arrow::datatypes::{DataType, Float32Type, Float64Type};
2424

2525
use crate::utils::make_scalar_function;
2626
use datafusion_common::{exec_err, Result};
27-
use datafusion_expr::{ColumnarValue, Documentation};
27+
use datafusion_expr::{ColumnarValue, Documentation, ScalarFunctionArgs};
2828
use datafusion_expr::{ScalarUDFImpl, Signature, Volatility};
2929
use datafusion_macros::user_doc;
3030

@@ -87,12 +87,8 @@ impl ScalarUDFImpl for CotFunc {
8787
self.doc()
8888
}
8989

90-
fn invoke_batch(
91-
&self,
92-
args: &[ColumnarValue],
93-
_number_rows: usize,
94-
) -> Result<ColumnarValue> {
95-
make_scalar_function(cot, vec![])(args)
90+
fn invoke_with_args(&self, args: ScalarFunctionArgs) -> Result<ColumnarValue> {
91+
make_scalar_function(cot, vec![])(&args.args)
9692
}
9793
}
9894

datafusion/functions/src/math/factorial.rs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ use datafusion_common::{
3030
arrow_datafusion_err, exec_err, internal_datafusion_err, DataFusionError, Result,
3131
};
3232
use datafusion_expr::{
33-
ColumnarValue, Documentation, ScalarUDFImpl, Signature, Volatility,
33+
ColumnarValue, Documentation, ScalarFunctionArgs, ScalarUDFImpl, Signature,
34+
Volatility,
3435
};
3536
use datafusion_macros::user_doc;
3637

@@ -76,12 +77,8 @@ impl ScalarUDFImpl for FactorialFunc {
7677
Ok(Int64)
7778
}
7879

79-
fn invoke_batch(
80-
&self,
81-
args: &[ColumnarValue],
82-
_number_rows: usize,
83-
) -> Result<ColumnarValue> {
84-
make_scalar_function(factorial, vec![])(args)
80+
fn invoke_with_args(&self, args: ScalarFunctionArgs) -> Result<ColumnarValue> {
81+
make_scalar_function(factorial, vec![])(&args.args)
8582
}
8683

8784
fn documentation(&self) -> Option<&Documentation> {

datafusion/functions/src/math/gcd.rs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ use datafusion_common::{
2929
arrow_datafusion_err, exec_err, internal_datafusion_err, DataFusionError, Result,
3030
};
3131
use datafusion_expr::{
32-
ColumnarValue, Documentation, ScalarUDFImpl, Signature, Volatility,
32+
ColumnarValue, Documentation, ScalarFunctionArgs, ScalarUDFImpl, Signature,
33+
Volatility,
3334
};
3435
use datafusion_macros::user_doc;
3536

@@ -77,12 +78,8 @@ impl ScalarUDFImpl for GcdFunc {
7778
Ok(Int64)
7879
}
7980

80-
fn invoke_batch(
81-
&self,
82-
args: &[ColumnarValue],
83-
_number_rows: usize,
84-
) -> Result<ColumnarValue> {
85-
make_scalar_function(gcd, vec![])(args)
81+
fn invoke_with_args(&self, args: ScalarFunctionArgs) -> Result<ColumnarValue> {
82+
make_scalar_function(gcd, vec![])(&args.args)
8683
}
8784

8885
fn documentation(&self) -> Option<&Documentation> {

datafusion/functions/src/math/iszero.rs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ use arrow::datatypes::{DataType, Float32Type, Float64Type};
2525
use datafusion_common::{exec_err, Result};
2626
use datafusion_expr::TypeSignature::Exact;
2727
use datafusion_expr::{
28-
ColumnarValue, Documentation, ScalarUDFImpl, Signature, Volatility,
28+
ColumnarValue, Documentation, ScalarFunctionArgs, ScalarUDFImpl, Signature,
29+
Volatility,
2930
};
3031
use datafusion_macros::user_doc;
3132

@@ -77,12 +78,8 @@ impl ScalarUDFImpl for IsZeroFunc {
7778
Ok(Boolean)
7879
}
7980

80-
fn invoke_batch(
81-
&self,
82-
args: &[ColumnarValue],
83-
_number_rows: usize,
84-
) -> Result<ColumnarValue> {
85-
make_scalar_function(iszero, vec![])(args)
81+
fn invoke_with_args(&self, args: ScalarFunctionArgs) -> Result<ColumnarValue> {
82+
make_scalar_function(iszero, vec![])(&args.args)
8683
}
8784

8885
fn documentation(&self) -> Option<&Documentation> {

datafusion/functions/src/math/lcm.rs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ use datafusion_common::{
2727
arrow_datafusion_err, exec_err, internal_datafusion_err, DataFusionError, Result,
2828
};
2929
use datafusion_expr::{
30-
ColumnarValue, Documentation, ScalarUDFImpl, Signature, Volatility,
30+
ColumnarValue, Documentation, ScalarFunctionArgs, ScalarUDFImpl, Signature,
31+
Volatility,
3132
};
3233
use datafusion_macros::user_doc;
3334

@@ -78,12 +79,8 @@ impl ScalarUDFImpl for LcmFunc {
7879
Ok(Int64)
7980
}
8081

81-
fn invoke_batch(
82-
&self,
83-
args: &[ColumnarValue],
84-
_number_rows: usize,
85-
) -> Result<ColumnarValue> {
86-
make_scalar_function(lcm, vec![])(args)
82+
fn invoke_with_args(&self, args: ScalarFunctionArgs) -> Result<ColumnarValue> {
83+
make_scalar_function(lcm, vec![])(&args.args)
8784
}
8885

8986
fn documentation(&self) -> Option<&Documentation> {

0 commit comments

Comments
 (0)