Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 11 additions & 3 deletions test-utils/src/array_gen/decimal.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@
// specific language governing permissions and limitations
// under the License.

use arrow::array::{ArrayRef, PrimitiveArray, PrimitiveBuilder, UInt32Array};
use arrow::array::{
ArrayRef, ArrowNativeTypeOp, PrimitiveArray, PrimitiveBuilder, UInt32Array,
};
use arrow::datatypes::DecimalType;
use rand::Rng;
use rand::rngs::StdRng;
Expand Down Expand Up @@ -44,13 +46,19 @@ impl DecimalArrayGenerator {
where
D: DecimalType + RandomNativeData,
{
// Valid decimals have at most `precision` digits, so draw values in
// (-10^precision, 10^precision)
let modulus = D::MAX_FOR_EACH_PRECISION[self.precision as usize]
.add_wrapping(D::Native::ONE);

// table of decimals from which to draw
let distinct_decimals: PrimitiveArray<D> = {
let mut decimal_builder =
PrimitiveBuilder::<D>::with_capacity(self.num_distinct_decimals);
for _ in 0..self.num_distinct_decimals {
decimal_builder
.append_option(Some(D::generate_random_native_data(&mut self.rng)));
let value =
D::generate_random_native_data(&mut self.rng).mod_wrapping(modulus);
decimal_builder.append_option(Some(value));
}

decimal_builder
Expand Down
Loading