Skip to content

Commit ad3e008

Browse files
Issue-9862 - move Cbrt, Cos, Cosh, Degrees to datafusion-functions (#9938)
1 parent c47a80a commit ad3e008

File tree

11 files changed

+23
-92
lines changed

11 files changed

+23
-92
lines changed

datafusion/expr/src/built_in_function.rs

Lines changed: 1 addition & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -37,18 +37,10 @@ use strum_macros::EnumIter;
3737
#[derive(Debug, Clone, PartialEq, Eq, Hash, EnumIter, Copy)]
3838
pub enum BuiltinScalarFunction {
3939
// math functions
40-
/// cbrt
41-
Cbrt,
4240
/// ceil
4341
Ceil,
4442
/// coalesce
4543
Coalesce,
46-
/// cos
47-
Cos,
48-
/// cos
49-
Cosh,
50-
/// degrees
51-
Degrees,
5244
/// exp
5345
Exp,
5446
/// factorial
@@ -141,9 +133,6 @@ impl BuiltinScalarFunction {
141133
// Immutable scalar builtins
142134
BuiltinScalarFunction::Ceil => Volatility::Immutable,
143135
BuiltinScalarFunction::Coalesce => Volatility::Immutable,
144-
BuiltinScalarFunction::Cos => Volatility::Immutable,
145-
BuiltinScalarFunction::Cosh => Volatility::Immutable,
146-
BuiltinScalarFunction::Degrees => Volatility::Immutable,
147136
BuiltinScalarFunction::Exp => Volatility::Immutable,
148137
BuiltinScalarFunction::Factorial => Volatility::Immutable,
149138
BuiltinScalarFunction::Floor => Volatility::Immutable,
@@ -155,7 +144,6 @@ impl BuiltinScalarFunction {
155144
BuiltinScalarFunction::Pi => Volatility::Immutable,
156145
BuiltinScalarFunction::Power => Volatility::Immutable,
157146
BuiltinScalarFunction::Round => Volatility::Immutable,
158-
BuiltinScalarFunction::Cbrt => Volatility::Immutable,
159147
BuiltinScalarFunction::Cot => Volatility::Immutable,
160148
BuiltinScalarFunction::Trunc => Volatility::Immutable,
161149
BuiltinScalarFunction::Concat => Volatility::Immutable,
@@ -221,13 +209,9 @@ impl BuiltinScalarFunction {
221209
BuiltinScalarFunction::Iszero => Ok(Boolean),
222210

223211
BuiltinScalarFunction::Ceil
224-
| BuiltinScalarFunction::Cos
225-
| BuiltinScalarFunction::Cosh
226-
| BuiltinScalarFunction::Degrees
227212
| BuiltinScalarFunction::Exp
228213
| BuiltinScalarFunction::Floor
229214
| BuiltinScalarFunction::Round
230-
| BuiltinScalarFunction::Cbrt
231215
| BuiltinScalarFunction::Trunc
232216
| BuiltinScalarFunction::Cot => match input_expr_types[0] {
233217
Float32 => Ok(Float32),
@@ -308,11 +292,7 @@ impl BuiltinScalarFunction {
308292
BuiltinScalarFunction::Gcd | BuiltinScalarFunction::Lcm => {
309293
Signature::uniform(2, vec![Int64], self.volatility())
310294
}
311-
BuiltinScalarFunction::Cbrt
312-
| BuiltinScalarFunction::Ceil
313-
| BuiltinScalarFunction::Cos
314-
| BuiltinScalarFunction::Cosh
315-
| BuiltinScalarFunction::Degrees
295+
BuiltinScalarFunction::Ceil
316296
| BuiltinScalarFunction::Exp
317297
| BuiltinScalarFunction::Floor
318298
| BuiltinScalarFunction::Cot => {
@@ -337,12 +317,10 @@ impl BuiltinScalarFunction {
337317
if matches!(
338318
&self,
339319
BuiltinScalarFunction::Ceil
340-
| BuiltinScalarFunction::Degrees
341320
| BuiltinScalarFunction::Exp
342321
| BuiltinScalarFunction::Factorial
343322
| BuiltinScalarFunction::Floor
344323
| BuiltinScalarFunction::Round
345-
| BuiltinScalarFunction::Cbrt
346324
| BuiltinScalarFunction::Trunc
347325
| BuiltinScalarFunction::Pi
348326
) {
@@ -357,12 +335,8 @@ impl BuiltinScalarFunction {
357335
/// Returns all names that can be used to call this function
358336
pub fn aliases(&self) -> &'static [&'static str] {
359337
match self {
360-
BuiltinScalarFunction::Cbrt => &["cbrt"],
361338
BuiltinScalarFunction::Ceil => &["ceil"],
362-
BuiltinScalarFunction::Cos => &["cos"],
363339
BuiltinScalarFunction::Cot => &["cot"],
364-
BuiltinScalarFunction::Cosh => &["cosh"],
365-
BuiltinScalarFunction::Degrees => &["degrees"],
366340
BuiltinScalarFunction::Exp => &["exp"],
367341
BuiltinScalarFunction::Factorial => &["factorial"],
368342
BuiltinScalarFunction::Floor => &["floor"],

datafusion/expr/src/expr_fn.rs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -536,10 +536,7 @@ macro_rules! nary_scalar_expr {
536536
// generate methods for creating the supported unary/binary expressions
537537

538538
// math functions
539-
scalar_expr!(Cbrt, cbrt, num, "cube root of a number");
540-
scalar_expr!(Cos, cos, num, "cosine of a number");
541539
scalar_expr!(Cot, cot, num, "cotangent of a number");
542-
scalar_expr!(Cosh, cosh, num, "hyperbolic cosine of a number");
543540
scalar_expr!(Factorial, factorial, num, "factorial");
544541
scalar_expr!(
545542
Floor,
@@ -553,7 +550,6 @@ scalar_expr!(
553550
num,
554551
"nearest integer greater than or equal to argument"
555552
);
556-
scalar_expr!(Degrees, degrees, num, "converts radians to degrees");
557553
nary_scalar_expr!(Round, round, "round to nearest integer");
558554
nary_scalar_expr!(
559555
Trunc,
@@ -1060,14 +1056,10 @@ mod test {
10601056

10611057
#[test]
10621058
fn scalar_function_definitions() {
1063-
test_unary_scalar_expr!(Cbrt, cbrt);
1064-
test_unary_scalar_expr!(Cos, cos);
10651059
test_unary_scalar_expr!(Cot, cot);
1066-
test_unary_scalar_expr!(Cosh, cosh);
10671060
test_unary_scalar_expr!(Factorial, factorial);
10681061
test_unary_scalar_expr!(Floor, floor);
10691062
test_unary_scalar_expr!(Ceil, ceil);
1070-
test_unary_scalar_expr!(Degrees, degrees);
10711063
test_nary_scalar_expr!(Round, round, input);
10721064
test_nary_scalar_expr!(Round, round, input, decimal_places);
10731065
test_nary_scalar_expr!(Trunc, trunc, num);

datafusion/expr/src/signature.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,7 @@ pub const FIXED_SIZE_LIST_WILDCARD: i32 = i32::MIN;
3939
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Hash)]
4040
pub enum Volatility {
4141
/// An immutable function will always return the same output when given the same
42-
/// input. An example of this is [super::BuiltinScalarFunction::Cos]. DataFusion
43-
/// will attempt to inline immutable functions during planning.
42+
/// input. DataFusion will attempt to inline immutable functions during planning.
4443
Immutable,
4544
/// A stable function may return different values given the same input across different
4645
/// queries but must return the same value for a given input within a query. An example of

datafusion/functions/src/math/mod.rs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,11 @@ make_math_unary_udf!(SinFunc, SIN, sin, sin, None);
4545
make_math_unary_udf!(SinhFunc, SINH, sinh, sinh, None);
4646
make_math_unary_udf!(SqrtFunc, SQRT, sqrt, sqrt, None);
4747

48+
make_math_unary_udf!(CbrtFunc, CBRT, cbrt, cbrt, None);
49+
make_math_unary_udf!(CosFunc, COS, cos, cos, None);
50+
make_math_unary_udf!(CoshFunc, COSH, cosh, cosh, None);
51+
make_math_unary_udf!(DegreesFunc, DEGREES, degrees, to_degrees, None);
52+
4853
// Export the functions out of this package, both as expr_fn as well as a list of functions
4954
export_functions!(
5055
(
@@ -77,5 +82,9 @@ export_functions!(
7782
(signum, num, "sign of the argument (-1, 0, +1)"),
7883
(sin, num, "sine"),
7984
(sinh, num, "hyperbolic sine"),
80-
(sqrt, num, "square root of a number")
85+
(sqrt, num, "square root of a number"),
86+
(cbrt, num, "cube root of a number"),
87+
(cos, num, "cosine"),
88+
(cosh, num, "hyperbolic cosine"),
89+
(degrees, num, "converts radians to degrees")
8190
);

datafusion/physical-expr/src/functions.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -180,9 +180,6 @@ pub fn create_physical_fun(
180180
Ok(match fun {
181181
// math functions
182182
BuiltinScalarFunction::Ceil => Arc::new(math_expressions::ceil),
183-
BuiltinScalarFunction::Cos => Arc::new(math_expressions::cos),
184-
BuiltinScalarFunction::Cosh => Arc::new(math_expressions::cosh),
185-
BuiltinScalarFunction::Degrees => Arc::new(math_expressions::to_degrees),
186183
BuiltinScalarFunction::Exp => Arc::new(math_expressions::exp),
187184
BuiltinScalarFunction::Factorial => {
188185
Arc::new(|args| make_scalar_function_inner(math_expressions::factorial)(args))
@@ -204,7 +201,6 @@ pub fn create_physical_fun(
204201
BuiltinScalarFunction::Round => {
205202
Arc::new(|args| make_scalar_function_inner(math_expressions::round)(args))
206203
}
207-
BuiltinScalarFunction::Cbrt => Arc::new(math_expressions::cbrt),
208204
BuiltinScalarFunction::Trunc => {
209205
Arc::new(|args| make_scalar_function_inner(math_expressions::trunc)(args))
210206
}

datafusion/physical-expr/src/math_expressions.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -155,9 +155,6 @@ macro_rules! make_function_scalar_inputs_return_type {
155155
}};
156156
}
157157

158-
math_unary_function!("cbrt", cbrt);
159-
math_unary_function!("cos", cos);
160-
math_unary_function!("cosh", cosh);
161158
math_unary_function!("asin", asin);
162159
math_unary_function!("acos", acos);
163160
math_unary_function!("atan", atan);
@@ -170,7 +167,6 @@ math_unary_function!("exp", exp);
170167
math_unary_function!("ln", ln);
171168
math_unary_function!("log2", log2);
172169
math_unary_function!("log10", log10);
173-
math_unary_function!("degrees", to_degrees);
174170

175171
/// Factorial SQL function
176172
pub fn factorial(args: &[ArrayRef]) -> Result<ArrayRef> {

datafusion/proto/proto/datafusion.proto

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -547,7 +547,7 @@ enum ScalarFunction {
547547
// 3 was Atan
548548
// 4 was Ascii
549549
Ceil = 5;
550-
Cos = 6;
550+
// 6 was Cos
551551
// 7 was Digest
552552
Exp = 8;
553553
Floor = 9;
@@ -614,15 +614,15 @@ enum ScalarFunction {
614614
// 70 was CurrentDate
615615
// 71 was CurrentTime
616616
// 72 was Uuid
617-
Cbrt = 73;
617+
// 73 was Cbrt
618618
// 74 Acosh
619619
// 75 was Asinh
620620
// 76 was Atanh
621621
// 77 was Sinh
622-
Cosh = 78;
623-
// Tanh = 79;
622+
// 78 was Cosh
623+
// Tanh = 79
624624
Pi = 80;
625-
Degrees = 81;
625+
// 81 was Degrees
626626
// 82 was Radians
627627
Factorial = 83;
628628
Lcm = 84;

datafusion/proto/src/generated/pbjson.rs

Lines changed: 0 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

datafusion/proto/src/generated/prost.rs

Lines changed: 5 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

datafusion/proto/src/logical_plan/from_proto.rs

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,7 @@ use datafusion_expr::expr::Unnest;
3737
use datafusion_expr::expr::{Alias, Placeholder};
3838
use datafusion_expr::window_frame::{check_window_frame, regularize_window_order_by};
3939
use datafusion_expr::{
40-
cbrt, ceil, coalesce, concat_expr, concat_ws_expr, cos, cosh, cot, degrees,
41-
ends_with, exp,
40+
ceil, coalesce, concat_expr, concat_ws_expr, cot, ends_with, exp,
4241
expr::{self, InList, Sort, WindowFunction},
4342
factorial, floor, gcd, initcap, iszero, lcm, log,
4443
logical_plan::{PlanType, StringifiedPlan},
@@ -421,13 +420,9 @@ impl From<&protobuf::ScalarFunction> for BuiltinScalarFunction {
421420
use protobuf::ScalarFunction;
422421
match f {
423422
ScalarFunction::Unknown => todo!(),
424-
ScalarFunction::Cbrt => Self::Cbrt,
425-
ScalarFunction::Cos => Self::Cos,
426423
ScalarFunction::Cot => Self::Cot,
427-
ScalarFunction::Cosh => Self::Cosh,
428424
ScalarFunction::Exp => Self::Exp,
429425
ScalarFunction::Log => Self::Log,
430-
ScalarFunction::Degrees => Self::Degrees,
431426
ScalarFunction::Factorial => Self::Factorial,
432427
ScalarFunction::Gcd => Self::Gcd,
433428
ScalarFunction::Lcm => Self::Lcm,
@@ -1306,13 +1301,7 @@ pub fn parse_expr(
13061301

13071302
match scalar_function {
13081303
ScalarFunction::Unknown => Err(proto_error("Unknown scalar function")),
1309-
ScalarFunction::Cbrt => Ok(cbrt(parse_expr(&args[0], registry, codec)?)),
1310-
ScalarFunction::Cos => Ok(cos(parse_expr(&args[0], registry, codec)?)),
1311-
ScalarFunction::Cosh => Ok(cosh(parse_expr(&args[0], registry, codec)?)),
13121304
ScalarFunction::Exp => Ok(exp(parse_expr(&args[0], registry, codec)?)),
1313-
ScalarFunction::Degrees => {
1314-
Ok(degrees(parse_expr(&args[0], registry, codec)?))
1315-
}
13161305
ScalarFunction::Floor => {
13171306
Ok(floor(parse_expr(&args[0], registry, codec)?))
13181307
}

0 commit comments

Comments
 (0)