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