Returns a new [`ArrayData`] valid for `data_type` containing `len` null values # Panics This function panics if: the datatype `data_type` has incorrect layout
(data_type: &DataType, len: usize)
| 642 | /// This function panics if: |
| 643 | /// * the datatype `data_type` has incorrect layout |
| 644 | pub fn new_null(data_type: &DataType, len: usize) -> Self { |
| 645 | let bit_len = bit_util::ceil(len, 8); |
| 646 | let zeroed = |len: usize| Buffer::from(MutableBuffer::from_len_zeroed(len)); |
| 647 | |
| 648 | let (buffers, child_data, has_nulls) = match data_type.primitive_width() { |
| 649 | Some(width) => (vec![zeroed(width * len)], vec![], true), |
| 650 | None => match data_type { |
| 651 | DataType::Null => (vec![], vec![], false), |
| 652 | DataType::Boolean => (vec![zeroed(bit_len)], vec![], true), |
| 653 | DataType::Binary | DataType::Utf8 => { |
| 654 | (vec![zeroed((len + 1) * 4), zeroed(0)], vec![], true) |
| 655 | } |
| 656 | DataType::BinaryView | DataType::Utf8View => (vec![zeroed(len * 16)], vec![], true), |
| 657 | DataType::LargeBinary | DataType::LargeUtf8 => { |
| 658 | (vec![zeroed((len + 1) * 8), zeroed(0)], vec![], true) |
| 659 | } |
| 660 | DataType::FixedSizeBinary(i) => { |
| 661 | if *i < 0 { |
| 662 | panic!("cannot construct null data from FixedSizeBinary({i})"); |
| 663 | } |
| 664 | (vec![zeroed(*i as usize * len)], vec![], true) |
| 665 | } |
| 666 | DataType::List(f) | DataType::Map(f, _) => ( |
| 667 | vec![zeroed((len + 1) * 4)], |
| 668 | vec![ArrayData::new_empty(f.data_type())], |
| 669 | true, |
| 670 | ), |
| 671 | DataType::LargeList(f) => ( |
| 672 | vec![zeroed((len + 1) * 8)], |
| 673 | vec![ArrayData::new_empty(f.data_type())], |
| 674 | true, |
| 675 | ), |
| 676 | DataType::ListView(f) => ( |
| 677 | vec![zeroed(len * 4), zeroed(len * 4)], |
| 678 | vec![ArrayData::new_empty(f.data_type())], |
| 679 | true, |
| 680 | ), |
| 681 | DataType::LargeListView(f) => ( |
| 682 | vec![zeroed(len * 8), zeroed(len * 8)], |
| 683 | vec![ArrayData::new_empty(f.data_type())], |
| 684 | true, |
| 685 | ), |
| 686 | DataType::FixedSizeList(f, list_len) => ( |
| 687 | vec![], |
| 688 | vec![ArrayData::new_null(f.data_type(), *list_len as usize * len)], |
| 689 | true, |
| 690 | ), |
| 691 | DataType::Struct(fields) => ( |
| 692 | vec![], |
| 693 | fields |
| 694 | .iter() |
| 695 | .map(|f| Self::new_null(f.data_type(), len)) |
| 696 | .collect(), |
| 697 | true, |
| 698 | ), |
| 699 | DataType::Dictionary(k, v) => ( |
| 700 | vec![zeroed(k.primitive_width().unwrap() * len)], |
| 701 | vec![ArrayData::new_empty(v.as_ref())], |
nothing calls this directly
no test coverage detected