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

Method try_new

arrow-array/src/array/list_view_array.rs:141–209  ·  view source on GitHub ↗

Create a new [`GenericListViewArray`] from the provided parts # Errors Errors if `offsets.len() != sizes.len()` `offsets.len() != nulls.len()` `offsets[i] > values.len()` `!field.is_nullable() && values.is_nullable()` `field.data_type() != values.data_type()` `0 <= offsets[i] <= length of the child array` `0 <= offsets[i] + size[i] <= length of the child array`

(
        field: FieldRef,
        offsets: ScalarBuffer<OffsetSize>,
        sizes: ScalarBuffer<OffsetSize>,
        values: ArrayRef,
        nulls: Option<NullBuffer>,
    )

Source from the content-addressed store, hash-verified

139 /// * `0 <= offsets[i] <= length of the child array`
140 /// * `0 <= offsets[i] + size[i] <= length of the child array`
141 pub fn try_new(
142 field: FieldRef,
143 offsets: ScalarBuffer<OffsetSize>,
144 sizes: ScalarBuffer<OffsetSize>,
145 values: ArrayRef,
146 nulls: Option<NullBuffer>,
147 ) -> Result<Self, ArrowError> {
148 let len = offsets.len();
149 if let Some(n) = nulls.as_ref() {
150 if n.len() != len {
151 return Err(ArrowError::InvalidArgumentError(format!(
152 "Incorrect length of null buffer for {}ListViewArray, expected {len} got {}",
153 OffsetSize::PREFIX,
154 n.len(),
155 )));
156 }
157 }
158 if len != sizes.len() {
159 return Err(ArrowError::InvalidArgumentError(format!(
160 "Length of offsets buffer and sizes buffer must be equal for {}ListViewArray, got {len} and {}",
161 OffsetSize::PREFIX,
162 sizes.len()
163 )));
164 }
165
166 for (offset, size) in offsets.iter().zip(sizes.iter()) {
167 let offset = offset.as_usize();
168 let size = size.as_usize();
169 if offset.checked_add(size).ok_or_else(|| {
170 ArrowError::InvalidArgumentError(format!(
171 "Overflow in offset + size for {}ListViewArray",
172 OffsetSize::PREFIX
173 ))
174 })? > values.len()
175 {
176 return Err(ArrowError::InvalidArgumentError(format!(
177 "Offset + size for {}ListViewArray must be within the bounds of the child array, got offset: {offset}, size: {size}, child array length: {}",
178 OffsetSize::PREFIX,
179 values.len()
180 )));
181 }
182 }
183
184 if !field.is_nullable() && values.is_nullable() {
185 return Err(ArrowError::InvalidArgumentError(format!(
186 "Non-nullable field of {}ListViewArray {:?} cannot contain nulls",
187 OffsetSize::PREFIX,
188 field.name()
189 )));
190 }
191
192 if field.data_type() != values.data_type() {
193 return Err(ArrowError::InvalidArgumentError(format!(
194 "{}ListViewArray expected data type {} got {} for {:?}",
195 OffsetSize::PREFIX,
196 field.data_type(),
197 values.data_type(),
198 field.name()

Callers

nothing calls this directly

Calls 8

zipMethod · 0.80
as_usizeMethod · 0.80
lenMethod · 0.45
as_refMethod · 0.45
iterMethod · 0.45
checked_addMethod · 0.45
is_nullableMethod · 0.45
data_typeMethod · 0.45

Tested by

no test coverage detected