Skip to content

Commit 9bf8131

Browse files
maartenbreddelswesm
authored andcommitted
ARROW-9100: [C++] Add ascii_lower kernel
Closes #7357 from maartenbreddels/ARROW-555 Authored-by: Maarten A. Breddels <maartenbreddels@gmail.com> Signed-off-by: Wes McKinney <wesm@apache.org>
1 parent fa9c851 commit 9bf8131

File tree

3 files changed

+17
-0
lines changed

3 files changed

+17
-0
lines changed

cpp/src/arrow/compute/kernels/scalar_string.cc

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,16 @@ struct AsciiUpper {
4848
}
4949
};
5050

51+
struct AsciiLower {
52+
template <typename... Ignored>
53+
static std::string Call(KernelContext*, const util::string_view& val) {
54+
std::string result = val.to_string();
55+
std::transform(result.begin(), result.end(), result.begin(),
56+
[](unsigned char c) { return std::tolower(c); });
57+
return result;
58+
}
59+
};
60+
5161
void AddAsciiLength(FunctionRegistry* registry) {
5262
auto func = std::make_shared<ScalarFunction>("ascii_length", Arity::Unary());
5363
ArrayKernelExec exec_offset_32 =
@@ -108,6 +118,7 @@ void AddStrptime(FunctionRegistry* registry) {
108118

109119
void RegisterScalarStringAscii(FunctionRegistry* registry) {
110120
MakeUnaryStringToString<AsciiUpper>("ascii_upper", registry);
121+
MakeUnaryStringToString<AsciiLower>("ascii_lower", registry);
111122
AddAsciiLength(registry);
112123
AddStrptime(registry);
113124
}

cpp/src/arrow/compute/kernels/scalar_string_test.cc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,11 @@ TYPED_TEST(TestStringKernels, AsciiUpper) {
6161
"[\"AAA&\", null, \"\", \"B\"]");
6262
}
6363

64+
TYPED_TEST(TestStringKernels, AsciiLower) {
65+
this->CheckUnary("ascii_lower", "[\"aAa&\", null, \"\", \"b\"]", this->string_type(),
66+
"[\"aaa&\", null, \"\", \"b\"]");
67+
}
68+
6469
TYPED_TEST(TestStringKernels, Strptime) {
6570
std::string input1 = R"(["5/1/2020", null, "12/11/1900"])";
6671
std::string output1 = R"(["2020-05-01", null, "1900-12-11"])";

python/pyarrow/compute.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ def func(arg):
9393

9494
ascii_length = _simple_unary_function('ascii_length')
9595
ascii_upper = _simple_unary_function('ascii_upper')
96+
ascii_lower = _simple_unary_function('ascii_lower')
9697

9798

9899
def sum(array):

0 commit comments

Comments
 (0)