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

Function create_random_run_end_encoded_array

arrow/src/util/data_gen.rs:242–296  ·  view source on GitHub ↗
(
    index: &Field,
    value: &Field,
    size: usize,
    null_density: f32,
    true_density: f32,
)

Source from the content-addressed store, hash-verified

240}
241#[inline]
242fn create_random_run_end_encoded_array(
243 index: &Field,
244 value: &Field,
245 size: usize,
246 null_density: f32,
247 true_density: f32,
248) -> Result<ArrayRef> {
249 const MIN_RUN: usize = 8;
250 const MAX_RUN: usize = 32;
251
252 let mut rng = seedable_rng();
253 let mut run_lengths: Vec<usize> = Vec::new();
254 let mut remaining = size;
255 while remaining > 0 {
256 let len = rng.random_range(MIN_RUN..=MAX_RUN).min(remaining);
257 run_lengths.push(len);
258 remaining -= len;
259 }
260 let num_runs = run_lengths.len();
261
262 let mut cumulative: i64 = 0;
263 let run_ends_i64: Vec<i64> = run_lengths
264 .iter()
265 .map(|&l| {
266 cumulative += l as i64;
267 cumulative
268 })
269 .collect();
270
271 let values = create_random_array(value, num_runs, null_density, true_density)?;
272
273 match index.data_type() {
274 DataType::Int16 => {
275 let run_ends: Int16Array = run_ends_i64.iter().map(|&v| v as i16).collect();
276 Ok(Arc::new(RunArray::<Int16Type>::try_new(
277 &run_ends, &values,
278 )?))
279 }
280 DataType::Int32 => {
281 let run_ends: Int32Array = run_ends_i64.iter().map(|&v| v as i32).collect();
282 Ok(Arc::new(RunArray::<Int32Type>::try_new(
283 &run_ends, &values,
284 )?))
285 }
286 DataType::Int64 => {
287 let run_ends: Int64Array = run_ends_i64.iter().copied().collect();
288 Ok(Arc::new(RunArray::<Int64Type>::try_new(
289 &run_ends, &values,
290 )?))
291 }
292 other => Err(ArrowError::InvalidArgumentError(format!(
293 "Unsupported run-ends type for REE: {other:?}"
294 ))),
295 }
296}
297
298#[inline]
299fn create_random_list_array(

Callers 1

create_random_arrayFunction · 0.85

Calls 8

create_random_arrayFunction · 0.85
try_newFunction · 0.85
collectMethod · 0.80
seedable_rngFunction · 0.70
pushMethod · 0.45
lenMethod · 0.45
iterMethod · 0.45
data_typeMethod · 0.45

Tested by

no test coverage detected