MCPcopy Create free account
hub / github.com/apache/arrow-rs / create_random_map_array

Function create_random_map_array

arrow/src/util/data_gen.rs:392–441  ·  view source on GitHub ↗
(
    field: &Field,
    size: usize,
    null_density: f32,
    true_density: f32,
)

Source from the content-addressed store, hash-verified

390
391#[inline]
392fn create_random_map_array(
393 field: &Field,
394 size: usize,
395 null_density: f32,
396 true_density: f32,
397) -> Result<ArrayRef> {
398 // Override null density with 0.0 if the array is non-nullable
399 let map_null_density = match field.is_nullable() {
400 true => null_density,
401 false => 0.0,
402 };
403
404 let entries_field = match field.data_type() {
405 DataType::Map(f, _) => f,
406 _ => {
407 return Err(ArrowError::InvalidArgumentError(format!(
408 "Cannot create map array for field {field:?}"
409 )));
410 }
411 };
412
413 let (offsets, child_len) = create_random_offsets::<i32>(size, 0, 5);
414 let offsets = Buffer::from(offsets.to_byte_slice());
415
416 let entries = create_random_array(
417 entries_field,
418 child_len as usize,
419 null_density,
420 true_density,
421 )?
422 .to_data();
423
424 let null_buffer = match field.is_nullable() {
425 true => Some(create_random_null_buffer(size, map_null_density)),
426 false => None,
427 };
428
429 let map_data = unsafe {
430 ArrayData::new_unchecked(
431 field.data_type().clone(),
432 size,
433 None,
434 null_buffer,
435 0,
436 vec![offsets],
437 vec![entries],
438 )
439 };
440 Ok(make_array(map_data))
441}
442
443/// Generate random offsets for list arrays
444fn create_random_offsets<T: OffsetSizeTrait + SampleUniform>(

Callers 1

create_random_arrayFunction · 0.85

Calls 8

create_random_arrayFunction · 0.85
to_byte_sliceMethod · 0.80
make_arrayFunction · 0.50
is_nullableMethod · 0.45
data_typeMethod · 0.45
to_dataMethod · 0.45
cloneMethod · 0.45

Tested by

no test coverage detected