@@ -22,7 +22,6 @@ use arrow::buffer::Buffer;
2222use arrow:: datatypes:: DataType ;
2323
2424use crate :: strings:: { GenericStringArrayBuilder , StringViewArrayBuilder } ;
25- use crate :: utils:: { transform_leaf_type_preserving_encoding, utf8_to_str_type} ;
2625use datafusion_common:: cast:: { as_generic_string_array, as_string_view_array} ;
2726use datafusion_common:: types:: logical_string;
2827use 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