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

Function spark_handled_parse_url

datafusion/spark/src/function/url/parse_url.rs:220–318  ·  view source on GitHub ↗
(
    args: &[ArrayRef],
    handler_err: impl Fn(Result<Option<String>>) -> Result<Option<String>>,
)

Source from the content-addressed store, hash-verified

218}
219
220pub fn spark_handled_parse_url(
221 args: &[ArrayRef],
222 handler_err: impl Fn(Result<Option<String>>) -> Result<Option<String>>,
223) -> Result<ArrayRef> {
224 if args.len() < 2 || args.len() > 3 {
225 return exec_err!(
226 "{} expects 2 or 3 arguments, but got {}",
227 "`parse_url`",
228 args.len()
229 );
230 }
231 // Required arguments
232 let url = &args[0];
233 let part = &args[1];
234
235 if args.len() == 3 {
236 // In this case, the 'key' argument is passed
237 let key = &args[2];
238
239 match (url.data_type(), part.data_type(), key.data_type()) {
240 (DataType::Utf8, DataType::Utf8, DataType::Utf8) => {
241 process_parse_url::<_, _, _, StringArray>(
242 as_string_array(url)?,
243 as_string_array(part)?,
244 as_string_array(key)?,
245 handler_err,
246 true,
247 )
248 }
249 (DataType::Utf8View, DataType::Utf8View, DataType::Utf8View) => {
250 process_parse_url::<_, _, _, StringViewArray>(
251 as_string_view_array(url)?,
252 as_string_view_array(part)?,
253 as_string_view_array(key)?,
254 handler_err,
255 true,
256 )
257 }
258 (DataType::LargeUtf8, DataType::LargeUtf8, DataType::LargeUtf8) => {
259 process_parse_url::<_, _, _, LargeStringArray>(
260 as_large_string_array(url)?,
261 as_large_string_array(part)?,
262 as_large_string_array(key)?,
263 handler_err,
264 true,
265 )
266 }
267 _ => exec_err!(
268 "`parse_url` expects STRING arguments, got ({}, {}, {})",
269 url.data_type(),
270 part.data_type(),
271 key.data_type()
272 ),
273 }
274 } else {
275 // The 'key' argument is omitted, assume all values are null
276 // Create 'null' string array for 'key' argument
277 let mut builder: GenericStringBuilder<i32> = GenericStringBuilder::new();

Callers 7

spark_try_parse_urlFunction · 0.85
spark_parse_urlFunction · 0.85
test_spark_utf8_two_argsFunction · 0.85
test_invalid_arg_countFunction · 0.85

Calls 8

as_string_arrayFunction · 0.85
as_string_view_arrayFunction · 0.85
as_large_string_arrayFunction · 0.85
newFunction · 0.85
lenMethod · 0.45
data_typeMethod · 0.45
append_nullMethod · 0.45
finishMethod · 0.45

Used in the wild real call sites across dependent graphs

searching dependent graphs…