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 30d8aa2cf0 ARROW-16784: [C++][Gandiva] Add alias to Upper and Lower 
(#13335)
30d8aa2cf0 is described below

commit 30d8aa2cf0312262a089aa1ebd884f0c08eb65c2
Author: Vinícius Roque <[email protected]>
AuthorDate: Wed Jun 22 05:42:20 2022 -0700

    ARROW-16784: [C++][Gandiva] Add alias to Upper and Lower (#13335)
    
    Adding alias and tests to functions Upper and Lower (UCase and  LCase)
    
    Authored-by: ViniciusSouzaRoque <[email protected]>
    Signed-off-by: Pindikura Ravindra <[email protected]>
---
 cpp/src/gandiva/function_registry_string.cc | 10 +++--
 cpp/src/gandiva/tests/projector_test.cc     | 68 +++++++++++++++++++++++++++++
 2 files changed, 74 insertions(+), 4 deletions(-)

diff --git a/cpp/src/gandiva/function_registry_string.cc 
b/cpp/src/gandiva/function_registry_string.cc
index 3140727a53..ea3672c89b 100644
--- a/cpp/src/gandiva/function_registry_string.cc
+++ b/cpp/src/gandiva/function_registry_string.cc
@@ -87,11 +87,13 @@ std::vector<NativeFunction> GetStringFunctionRegistry() {
       NativeFunction("soundex", {}, DataTypeVector{utf8()}, utf8(), 
kResultNullInternal,
                      "soundex_utf8", NativeFunction::kNeedsContext),
 
-      NativeFunction("upper", {}, DataTypeVector{utf8()}, utf8(), 
kResultNullIfNull,
-                     "gdv_fn_upper_utf8", NativeFunction::kNeedsContext),
+      NativeFunction("upper", {"ucase"}, DataTypeVector{utf8()}, utf8(),
+                     kResultNullIfNull, "gdv_fn_upper_utf8",
+                     NativeFunction::kNeedsContext),
 
-      NativeFunction("lower", {}, DataTypeVector{utf8()}, utf8(), 
kResultNullIfNull,
-                     "gdv_fn_lower_utf8", NativeFunction::kNeedsContext),
+      NativeFunction("lower", {"lcase"}, DataTypeVector{utf8()}, utf8(),
+                     kResultNullIfNull, "gdv_fn_lower_utf8",
+                     NativeFunction::kNeedsContext),
 
       NativeFunction("initcap", {}, DataTypeVector{utf8()}, utf8(), 
kResultNullIfNull,
                      "gdv_fn_initcap_utf8",
diff --git a/cpp/src/gandiva/tests/projector_test.cc 
b/cpp/src/gandiva/tests/projector_test.cc
index 44ae5fc6f9..ad36315ea1 100644
--- a/cpp/src/gandiva/tests/projector_test.cc
+++ b/cpp/src/gandiva/tests/projector_test.cc
@@ -2789,4 +2789,72 @@ TEST_F(TestProjector, TestCastBinaryBinary) {
 
   EXPECT_ARROW_ARRAY_EQUALS(out_1, outputs.at(0));
 }
+
+TEST_F(TestProjector, TestUCase) {
+  auto field0 = field("f0", arrow::utf8());
+  auto schema = arrow::schema({field0});
+
+  // output fields
+  auto res_out1 = field("res_out1", arrow::utf8());
+
+  // Build expression
+  auto cast_expr_1 = TreeExprBuilder::MakeExpression("ucase", {field0}, 
res_out1);
+
+  std::shared_ptr<Projector> projector;
+
+  auto status = Projector::Make(schema, {cast_expr_1}, TestConfiguration(), 
&projector);
+
+  EXPECT_TRUE(status.ok());
+
+  // Create a row-batch with some sample data
+  int num_records = 3;
+
+  auto array0 = MakeArrowArrayUtf8({"toupper", "AaAaAa", "路学sd学"}, {true, 
true, true});
+
+  auto in_batch = arrow::RecordBatch::Make(schema, num_records, {array0});
+
+  auto out_1 = MakeArrowArrayUtf8({"TOUPPER", "AAAAAA", "路学SD学"}, {true, true, 
true});
+
+  arrow::ArrayVector outputs;
+
+  // Evaluate expression
+  status = projector->Evaluate(*in_batch, pool_, &outputs);
+  EXPECT_TRUE(status.ok());
+
+  EXPECT_ARROW_ARRAY_EQUALS(out_1, outputs.at(0));
+}
+
+TEST_F(TestProjector, TestLCase) {
+  auto field0 = field("f0", arrow::utf8());
+  auto schema = arrow::schema({field0});
+
+  // output fields
+  auto res_out1 = field("res_out1", arrow::utf8());
+
+  // Build expression
+  auto cast_expr_1 = TreeExprBuilder::MakeExpression("lcase", {field0}, 
res_out1);
+
+  std::shared_ptr<Projector> projector;
+
+  auto status = Projector::Make(schema, {cast_expr_1}, TestConfiguration(), 
&projector);
+
+  EXPECT_TRUE(status.ok());
+
+  // Create a row-batch with some sample data
+  int num_records = 3;
+
+  auto array0 = MakeArrowArrayUtf8({"TOLOWER", "AaAaAa", "路学SD学"}, {true, 
true, true});
+
+  auto in_batch = arrow::RecordBatch::Make(schema, num_records, {array0});
+
+  auto out_1 = MakeArrowArrayUtf8({"tolower", "aaaaaa", "路学sd学"}, {true, true, 
true});
+
+  arrow::ArrayVector outputs;
+
+  // Evaluate expression
+  status = projector->Evaluate(*in_batch, pool_, &outputs);
+  EXPECT_TRUE(status.ok());
+
+  EXPECT_ARROW_ARRAY_EQUALS(out_1, outputs.at(0));
+}
 }  // namespace gandiva

Reply via email to