MCPcopy Create free account
hub / github.com/apache/datafusion / spark_substring

Function spark_substring

datafusion/spark/src/function/string/substring.rs:130–200  ·  view source on GitHub ↗
(args: &[ArrayRef])

Source from the content-addressed store, hash-verified

128}
129
130fn spark_substring(args: &[ArrayRef]) -> Result<ArrayRef> {
131 let start_array = as_int64_array(&args[1])?;
132 let length_array = if args.len() > 2 {
133 Some(as_int64_array(&args[2])?)
134 } else {
135 None
136 };
137
138 match args[0].data_type() {
139 DataType::Utf8 => {
140 let array = args[0].as_string::<i32>();
141 let is_ascii = enable_ascii_fast_path(&array, start_array, length_array);
142 spark_substring_generic(
143 &array,
144 start_array,
145 length_array,
146 GenericStringBuilder::<i32>::new(),
147 is_ascii,
148 )
149 }
150 DataType::LargeUtf8 => {
151 let array = args[0].as_string::<i64>();
152 let is_ascii = enable_ascii_fast_path(&array, start_array, length_array);
153 spark_substring_generic(
154 &array,
155 start_array,
156 length_array,
157 GenericStringBuilder::<i64>::new(),
158 is_ascii,
159 )
160 }
161 DataType::Utf8View => {
162 let array = args[0].as_string_view();
163 let is_ascii = enable_ascii_fast_path(&array, start_array, length_array);
164 spark_substring_generic(
165 &array,
166 start_array,
167 length_array,
168 StringViewBuilder::new(),
169 is_ascii,
170 )
171 }
172 // Binary paths always use byte-level indexing, so `is_ascii` is irrelevant
173 // and set to `true` (its value is ignored by the `[u8]` impl of
174 // `SubstringItem`).
175 DataType::Binary => spark_substring_generic(
176 &args[0].as_binary::<i32>(),
177 start_array,
178 length_array,
179 GenericBinaryBuilder::<i32>::new(),
180 true,
181 ),
182 DataType::LargeBinary => spark_substring_generic(
183 &args[0].as_binary::<i64>(),
184 start_array,
185 length_array,
186 GenericBinaryBuilder::<i64>::new(),
187 true,

Callers

nothing calls this directly

Calls 6

as_int64_arrayFunction · 0.85
enable_ascii_fast_pathFunction · 0.85
spark_substring_genericFunction · 0.85
newFunction · 0.85
lenMethod · 0.45
data_typeMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…