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

Function create_random_decimal_array

arrow/src/util/data_gen.rs:204–240  ·  view source on GitHub ↗
(field: &Field, size: usize, null_density: f32)

Source from the content-addressed store, hash-verified

202
203#[inline]
204fn create_random_decimal_array(field: &Field, size: usize, null_density: f32) -> Result<ArrayRef> {
205 let mut rng = seedable_rng();
206
207 match field.data_type() {
208 DataType::Decimal128(precision, scale) => {
209 let values = (0..size)
210 .map(|_| {
211 if rng.random::<f32>() < null_density {
212 None
213 } else {
214 Some(rng.random::<i128>())
215 }
216 })
217 .collect::<Vec<_>>();
218 Ok(Arc::new(
219 Decimal128Array::from(values).with_precision_and_scale(*precision, *scale)?,
220 ))
221 }
222 DataType::Decimal256(precision, scale) => {
223 let values = (0..size)
224 .map(|_| {
225 if rng.random::<f32>() < null_density {
226 None
227 } else {
228 Some(i256::from_parts(rng.random::<u128>(), rng.random::<i128>()))
229 }
230 })
231 .collect::<Vec<_>>();
232 Ok(Arc::new(
233 Decimal256Array::from(values).with_precision_and_scale(*precision, *scale)?,
234 ))
235 }
236 _ => Err(ArrowError::InvalidArgumentError(format!(
237 "Cannot create decimal array for field {field}"
238 ))),
239 }
240}
241#[inline]
242fn create_random_run_end_encoded_array(
243 index: &Field,

Callers 1

create_random_arrayFunction · 0.85

Calls 3

seedable_rngFunction · 0.70
data_typeMethod · 0.45

Tested by

no test coverage detected