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

Function create_run_array_data

arrow-data/src/transform/run.rs:241–265  ·  view source on GitHub ↗
(run_ends: Vec<i32>, values: ArrayData)

Source from the content-addressed store, hash-verified

239 use std::sync::Arc;
240
241 fn create_run_array_data(run_ends: Vec<i32>, values: ArrayData) -> ArrayData {
242 let run_ends_field = Arc::new(Field::new("run_ends", DataType::Int32, false));
243 let values_field = Arc::new(Field::new("values", values.data_type().clone(), true));
244 let data_type = DataType::RunEndEncoded(run_ends_field, values_field);
245
246 let last_run_end = if run_ends.is_empty() {
247 0
248 } else {
249 run_ends[run_ends.len() - 1] as usize
250 };
251
252 let run_ends_buffer = Buffer::from_vec(run_ends);
253 let run_ends_data = ArrayDataBuilder::new(DataType::Int32)
254 .len(run_ends_buffer.len() / std::mem::size_of::<i32>())
255 .add_buffer(run_ends_buffer)
256 .build()
257 .unwrap();
258
259 ArrayDataBuilder::new(data_type)
260 .len(last_run_end)
261 .add_child_data(run_ends_data)
262 .add_child_data(values)
263 .build()
264 .unwrap()
265 }
266
267 fn create_run_array_data_int16(run_ends: Vec<i16>, values: ArrayData) -> ArrayData {
268 let run_ends_field = Arc::new(Field::new("run_ends", DataType::Int16, false));

Callers 6

test_extend_nulls_int32Function · 0.85
test_extend_int32Function · 0.85
test_extend_emptyFunction · 0.85
test_extend_string_dictFunction · 0.85

Calls 8

RunEndEncodedClass · 0.85
add_bufferMethod · 0.80
add_child_dataMethod · 0.80
cloneMethod · 0.45
data_typeMethod · 0.45
is_emptyMethod · 0.45
lenMethod · 0.45
buildMethod · 0.45

Tested by 6

test_extend_nulls_int32Function · 0.68
test_extend_int32Function · 0.68
test_extend_emptyFunction · 0.68
test_extend_string_dictFunction · 0.68