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

Method new_null

arrow-data/src/data.rs:644–804  ·  view source on GitHub ↗

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)

Source from the content-addressed store, hash-verified

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())],

Callers

nothing calls this directly

Calls 13

primitive_widthMethod · 0.80
collectMethod · 0.80
child_dataMethod · 0.80
ceilFunction · 0.50
from_iterFunction · 0.50
iterMethod · 0.45
data_typeMethod · 0.45
nextMethod · 0.45
buffersMethod · 0.45
lenMethod · 0.45
cloneMethod · 0.45
build_uncheckedMethod · 0.45

Tested by

no test coverage detected