Skip to content

Commit 2802fcf

Browse files
authored
refactor initcap
1 parent 985f940 commit 2802fcf

1 file changed

Lines changed: 8 additions & 19 deletions

File tree

datafusion/functions/src/unicode/initcap.rs

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ use arrow::buffer::Buffer;
2222
use arrow::datatypes::DataType;
2323

2424
use crate::strings::{GenericStringArrayBuilder, StringViewArrayBuilder};
25-
use crate::utils::{transform_leaf_type_preserving_encoding, utf8_to_str_type};
2625
use datafusion_common::cast::{as_generic_string_array, as_string_view_array};
2726
use datafusion_common::types::logical_string;
2827
use datafusion_common::{Result, ScalarValue, exec_err};
@@ -84,28 +83,18 @@ impl ScalarUDFImpl for InitcapFunc {
8483
}
8584

8685
fn return_type(&self, arg_types: &[DataType]) -> Result<DataType> {
87-
transform_leaf_type_preserving_encoding(&arg_types[0], &|data_type| {
88-
if let DataType::Utf8View = data_type {
89-
Ok(DataType::Utf8View)
90-
} else {
91-
utf8_to_str_type(data_type, "initcap")
92-
}
93-
})
86+
Ok(arg_types[0].clone())
9487
}
9588

9689
fn invoke_with_args(&self, args: ScalarFunctionArgs) -> Result<ColumnarValue> {
97-
let arg = &args.args[0];
98-
99-
// Scalar fast path - handle directly without array conversion
100-
if let ColumnarValue::Scalar(scalar) = arg {
101-
return Ok(ColumnarValue::Scalar(initcap_scalar(scalar)?));
90+
match &args.args[0] {
91+
ColumnarValue::Scalar(scalar) => {
92+
Ok(ColumnarValue::Scalar(initcap_scalar(scalar)?))
93+
}
94+
ColumnarValue::Array(array) => {
95+
Ok(ColumnarValue::Array(initcap_array(array)?))
96+
}
10297
}
103-
104-
// Array path
105-
let ColumnarValue::Array(array) = arg else {
106-
unreachable!("scalar handled above")
107-
};
108-
Ok(ColumnarValue::Array(initcap_array(array)?))
10998
}
11099

111100
fn documentation(&self) -> Option<&Documentation> {

0 commit comments

Comments
 (0)