| 389 | } |
| 390 | |
| 391 | fn map_array(num_rows: usize) -> ArrayRef { |
| 392 | let mut rng = make_rng(); |
| 393 | let entries_per_row = 5; |
| 394 | let total_entries = num_rows * entries_per_row; |
| 395 | |
| 396 | let keys: Int32Array = (0..total_entries) |
| 397 | .map(|_| Some(rng.random::<i32>())) |
| 398 | .collect(); |
| 399 | let values: Int64Array = (0..total_entries) |
| 400 | .map(|_| Some(rng.random::<i64>())) |
| 401 | .collect(); |
| 402 | let offsets: Vec<i32> = (0..=num_rows) |
| 403 | .map(|i| (i * entries_per_row) as i32) |
| 404 | .collect(); |
| 405 | |
| 406 | let entries = StructArray::try_new( |
| 407 | Fields::from(vec![ |
| 408 | Field::new("keys", DataType::Int32, false), |
| 409 | Field::new("values", DataType::Int64, true), |
| 410 | ]), |
| 411 | vec![Arc::new(keys), Arc::new(values)], |
| 412 | None, |
| 413 | ) |
| 414 | .unwrap(); |
| 415 | |
| 416 | Arc::new(MapArray::new( |
| 417 | Arc::new(Field::new( |
| 418 | "entries", |
| 419 | DataType::Struct(Fields::from(vec![ |
| 420 | Field::new("keys", DataType::Int32, false), |
| 421 | Field::new("values", DataType::Int64, true), |
| 422 | ])), |
| 423 | false, |
| 424 | )), |
| 425 | OffsetBuffer::new(ScalarBuffer::from(offsets)), |
| 426 | entries, |
| 427 | None, |
| 428 | false, |
| 429 | )) |
| 430 | } |
| 431 | |
| 432 | fn sparse_union_array(num_rows: usize) -> ArrayRef { |
| 433 | let mut rng = make_rng(); |