You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by ra...@apache.org on 2022/05/24 05:24:07 UTC

[arrow] branch master updated: ARROW-16634: [Gandiva][C++] Add udfdegrees alias

This is an automated email from the ASF dual-hosted git repository.

ravindra pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git


The following commit(s) were added to refs/heads/master by this push:
     new 6576aa06fd ARROW-16634: [Gandiva][C++] Add udfdegrees alias
6576aa06fd is described below

commit 6576aa06fdff9b4f00aa1bb59fd679b3aaa856dc
Author: Johnnathan <jo...@gmail.com>
AuthorDate: Tue May 24 10:53:55 2022 +0530

    ARROW-16634: [Gandiva][C++] Add udfdegrees alias
    
    Add udfdegrees alias (alias for degrees) in Gandiva.
    
    Closes #13124 from Johnnathanalmeida/feature/add-udfdegrees-alias
    
    Authored-by: Johnnathan <jo...@gmail.com>
    Signed-off-by: Pindikura Ravindra <ra...@dremio.com>
---
 cpp/src/gandiva/function_registry_math_ops.cc |  4 ++--
 cpp/src/gandiva/tests/projector_test.cc       | 16 ++++++++++++----
 2 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/cpp/src/gandiva/function_registry_math_ops.cc b/cpp/src/gandiva/function_registry_math_ops.cc
index 87c7aed2ad..232c7c5326 100644
--- a/cpp/src/gandiva/function_registry_math_ops.cc
+++ b/cpp/src/gandiva/function_registry_math_ops.cc
@@ -83,8 +83,8 @@ std::vector<NativeFunction> GetMathOpsFunctionRegistry() {
       MATH_UNARY_OPS(sin, {}), MATH_UNARY_OPS(cos, {}), MATH_UNARY_OPS(asin, {}),
       MATH_UNARY_OPS(acos, {}), MATH_UNARY_OPS(tan, {}), MATH_UNARY_OPS(atan, {}),
       MATH_UNARY_OPS(sinh, {}), MATH_UNARY_OPS(cosh, {}), MATH_UNARY_OPS(tanh, {}),
-      MATH_UNARY_OPS(cot, {}), MATH_UNARY_OPS(radians, {}), MATH_UNARY_OPS(degrees, {}),
-      MATH_BINARY_SAFE(atan2, {}),
+      MATH_UNARY_OPS(cot, {}), MATH_UNARY_OPS(radians, {}),
+      MATH_UNARY_OPS(degrees, {"udfdegrees"}), MATH_BINARY_SAFE(atan2, {}),
 
       // decimal functions
       UNARY_SAFE_NULL_IF_NULL(abs, {}, decimal128, decimal128),
diff --git a/cpp/src/gandiva/tests/projector_test.cc b/cpp/src/gandiva/tests/projector_test.cc
index 93fda6973a..893319280c 100644
--- a/cpp/src/gandiva/tests/projector_test.cc
+++ b/cpp/src/gandiva/tests/projector_test.cc
@@ -413,6 +413,7 @@ TEST_F(TestProjector, TestExtendedMath) {
   auto field_cot = arrow::field("cot", arrow::float64());
   auto field_radians = arrow::field("radians", arrow::float64());
   auto field_degrees = arrow::field("degrees", arrow::float64());
+  auto field_udfdegrees = arrow::field("udfdegrees", arrow::float64());
 
   // Build expression
   auto cbrt_expr = TreeExprBuilder::MakeExpression("cbrt", {field0}, field_cbrt);
@@ -436,13 +437,15 @@ TEST_F(TestProjector, TestExtendedMath) {
   auto cot_expr = TreeExprBuilder::MakeExpression("cot", {field0}, field_cot);
   auto radians_expr = TreeExprBuilder::MakeExpression("radians", {field0}, field_radians);
   auto degrees_expr = TreeExprBuilder::MakeExpression("degrees", {field0}, field_degrees);
+  auto udfdegrees_expr =
+      TreeExprBuilder::MakeExpression("udfdegrees", {field0}, field_udfdegrees);
 
   std::shared_ptr<Projector> projector;
   auto status = Projector::Make(
-      schema,
-      {cbrt_expr, exp_expr, log_expr, log10_expr, logb_expr, power_expr, sin_expr,
-       cos_expr, asin_expr, acos_expr, tan_expr, atan_expr, sinh_expr, cosh_expr,
-       tanh_expr, atan2_expr, cot_expr, radians_expr, degrees_expr},
+      schema, {cbrt_expr,  exp_expr,  log_expr,     log10_expr,   logb_expr,
+               power_expr, sin_expr,  cos_expr,     asin_expr,    acos_expr,
+               tan_expr,   atan_expr, sinh_expr,    cosh_expr,    tanh_expr,
+               atan2_expr, cot_expr,  radians_expr, degrees_expr, udfdegrees_expr},
       TestConfiguration(), &projector);
   EXPECT_TRUE(status.ok());
 
@@ -475,6 +478,7 @@ TEST_F(TestProjector, TestExtendedMath) {
   std::vector<double> cot_vals;
   std::vector<double> radians_vals;
   std::vector<double> degrees_vals;
+  std::vector<double> udfdegrees_vals;
   for (int i = 0; i < num_records; i++) {
     cbrt_vals.push_back(static_cast<double>(cbrtl(input0[i])));
     exp_vals.push_back(static_cast<double>(expl(input0[i])));
@@ -495,6 +499,7 @@ TEST_F(TestProjector, TestExtendedMath) {
     cot_vals.push_back(static_cast<double>(tan(M_PI / 2 - input0[i])));
     radians_vals.push_back(static_cast<double>(input0[i] * M_PI / 180.0));
     degrees_vals.push_back(static_cast<double>(input0[i] * 180.0 / M_PI));
+    udfdegrees_vals.push_back(static_cast<double>(input0[i] * 180.0 / M_PI));
   }
   auto expected_cbrt = MakeArrowArray<arrow::DoubleType, double>(cbrt_vals, validity);
   auto expected_exp = MakeArrowArray<arrow::DoubleType, double>(exp_vals, validity);
@@ -517,6 +522,8 @@ TEST_F(TestProjector, TestExtendedMath) {
       MakeArrowArray<arrow::DoubleType, double>(radians_vals, validity);
   auto expected_degrees =
       MakeArrowArray<arrow::DoubleType, double>(degrees_vals, validity);
+  auto expected_udfdegrees =
+      MakeArrowArray<arrow::DoubleType, double>(udfdegrees_vals, validity);
   // prepare input record batch
   auto in_batch = arrow::RecordBatch::Make(schema, num_records, {array0, array1});
 
@@ -546,6 +553,7 @@ TEST_F(TestProjector, TestExtendedMath) {
   EXPECT_ARROW_ARRAY_APPROX_EQUALS(expected_cot, outputs.at(16), epsilon);
   EXPECT_ARROW_ARRAY_APPROX_EQUALS(expected_radians, outputs.at(17), epsilon);
   EXPECT_ARROW_ARRAY_APPROX_EQUALS(expected_degrees, outputs.at(18), epsilon);
+  EXPECT_ARROW_ARRAY_APPROX_EQUALS(expected_udfdegrees, outputs.at(19), epsilon);
 }
 
 TEST_F(TestProjector, TestFloatLessThan) {