(
values: &S,
regex_array: &S,
is_regex_scalar: bool,
start_array: Option<&Int64Array>,
is_start_scalar: bool,
flags_array: Option<&S>,
is_flags_scalar: bool,
)
| 256 | } |
| 257 | |
| 258 | fn regexp_count_inner<'a, S>( |
| 259 | values: &S, |
| 260 | regex_array: &S, |
| 261 | is_regex_scalar: bool, |
| 262 | start_array: Option<&Int64Array>, |
| 263 | is_start_scalar: bool, |
| 264 | flags_array: Option<&S>, |
| 265 | is_flags_scalar: bool, |
| 266 | ) -> Result<ArrayRef, ArrowError> |
| 267 | where |
| 268 | S: StringArrayType<'a>, |
| 269 | { |
| 270 | let (regex_scalar, is_regex_scalar) = if is_regex_scalar || regex_array.len() == 1 { |
| 271 | ( |
| 272 | (!regex_array.is_null(0)).then(|| regex_array.value(0)), |
| 273 | true, |
| 274 | ) |
| 275 | } else { |
| 276 | (None, false) |
| 277 | }; |
| 278 | |
| 279 | let (start_array, start_scalar, is_start_scalar) = |
| 280 | if let Some(start_array) = start_array { |
| 281 | if is_start_scalar || start_array.len() == 1 { |
| 282 | (None, Some(start_array.value(0)), true) |
| 283 | } else { |
| 284 | (Some(start_array), None, false) |
| 285 | } |
| 286 | } else { |
| 287 | (None, Some(1), true) |
| 288 | }; |
| 289 | |
| 290 | let (flags_array, flags_scalar, is_flags_scalar) = |
| 291 | if let Some(flags_array) = flags_array { |
| 292 | if is_flags_scalar || flags_array.len() == 1 { |
| 293 | (None, Some(flags_array.value(0)), true) |
| 294 | } else { |
| 295 | (Some(flags_array), None, false) |
| 296 | } |
| 297 | } else { |
| 298 | (None, None, true) |
| 299 | }; |
| 300 | |
| 301 | let mut regex_cache = HashMap::new(); |
| 302 | |
| 303 | match (is_regex_scalar, is_start_scalar, is_flags_scalar) { |
| 304 | (true, true, true) => { |
| 305 | let regex = match regex_scalar { |
| 306 | None => { |
| 307 | return Ok(Arc::new(Int64Array::from(vec![0; values.len()]))); |
| 308 | } |
| 309 | Some(regex) => regex, |
| 310 | }; |
| 311 | |
| 312 | let pattern = compile_regex(regex, flags_scalar)?; |
| 313 | |
| 314 | Ok(Arc::new( |
| 315 | values |
no test coverage detected
searching dependent graphs…