Skip to content

Commit 69ef61d

Browse files
chore[array]: decimal builder use decimal dtype (#5148)
Signed-off-by: Joe Isaacs <[email protected]>
1 parent a2496f7 commit 69ef61d

File tree

3 files changed

+14
-19
lines changed

3 files changed

+14
-19
lines changed

vortex-array/src/arrays/arbitrary.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,15 +93,14 @@ fn random_array_chunk(
9393
PType::F32 => random_primitive::<f32>(u, *n, chunk_len),
9494
PType::F64 => random_primitive::<f64>(u, *n, chunk_len),
9595
},
96-
DType::Decimal(decimal, n) => {
96+
d @ DType::Decimal(decimal, n) => {
9797
let elem_len = chunk_len.unwrap_or(u.int_in_range(0..=20)?);
9898
match_each_decimal_value_type!(
9999
DecimalType::smallest_decimal_value_type(decimal),
100100
|DVT| {
101-
let mut builder =
102-
DecimalBuilder::new::<DVT>(decimal.precision(), decimal.scale(), *n);
101+
let mut builder = DecimalBuilder::new::<DVT>(*decimal, *n);
103102
for _i in 0..elem_len {
104-
let random_decimal = random_scalar(u, &DType::Decimal(*decimal, *n))?;
103+
let random_decimal = random_scalar(u, d)?;
105104
builder.append_scalar(&random_decimal).vortex_expect(
106105
"was somehow unable to append a decimal to a decimal builder",
107106
);

vortex-array/src/arrow/compute/to_arrow/canonical.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -782,7 +782,7 @@ mod tests {
782782
#[case(0i128)]
783783
#[case(vortex_scalar::i256::ZERO)]
784784
fn to_arrow_decimal128<T: NativeDecimalType>(#[case] _decimal_type: T) {
785-
let mut decimal = DecimalBuilder::new::<T>(2, 1, false.into());
785+
let mut decimal = DecimalBuilder::new::<T>(DecimalDType::new(2, 1), false.into());
786786
decimal.append_value(10);
787787
decimal.append_value(11);
788788
decimal.append_value(12);
@@ -809,7 +809,7 @@ mod tests {
809809
fn to_arrow_decimal32<T: NativeDecimalType>(#[case] _decimal_type: T) {
810810
use arrow_array::Decimal32Array;
811811

812-
let mut decimal = DecimalBuilder::new::<T>(2, 1, false.into());
812+
let mut decimal = DecimalBuilder::new::<T>(DecimalDType::new(2, 1), false.into());
813813
decimal.append_value(10);
814814
decimal.append_value(11);
815815
decimal.append_value(12);
@@ -836,7 +836,7 @@ mod tests {
836836
fn to_arrow_decimal64<T: NativeDecimalType>(#[case] _decimal_type: T) {
837837
use arrow_array::Decimal64Array;
838838

839-
let mut decimal = DecimalBuilder::new::<T>(2, 1, false.into());
839+
let mut decimal = DecimalBuilder::new::<T>(DecimalDType::new(2, 1), false.into());
840840
decimal.append_value(10);
841841
decimal.append_value(11);
842842
decimal.append_value(12);
@@ -861,7 +861,7 @@ mod tests {
861861
#[case(0i128)]
862862
#[case(vortex_scalar::i256::ZERO)]
863863
fn to_arrow_decimal256<T: NativeDecimalType>(#[case] _decimal_type: T) {
864-
let mut decimal = DecimalBuilder::new::<T>(2, 1, false.into());
864+
let mut decimal = DecimalBuilder::new::<T>(DecimalDType::new(2, 1), false.into());
865865
decimal.append_value(10);
866866
decimal.append_value(11);
867867
decimal.append_value(12);

vortex-array/src/builders/decimal.rs

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -83,12 +83,8 @@ macro_rules! delegate_fn {
8383

8484
impl DecimalBuilder {
8585
/// Creates a new `DecimalBuilder` with a capacity of [`DEFAULT_BUILDER_CAPACITY`].
86-
pub fn new<T: NativeDecimalType>(precision: u8, scale: i8, nullability: Nullability) -> Self {
87-
Self::with_capacity::<T>(
88-
DEFAULT_BUILDER_CAPACITY,
89-
DecimalDType::new(precision, scale),
90-
nullability,
91-
)
86+
pub fn new<T: NativeDecimalType>(decimal: DecimalDType, nullability: Nullability) -> Self {
87+
Self::with_capacity::<T>(DEFAULT_BUILDER_CAPACITY, decimal, nullability)
9288
}
9389

9490
/// Creates a new `DecimalBuilder` with the given `capacity`.
@@ -293,13 +289,13 @@ mod tests {
293289
fn test_mixed_extend() {
294290
let values = 42i8;
295291

296-
let mut i8s = DecimalBuilder::new::<i8>(2, 1, false.into());
292+
let mut i8s = DecimalBuilder::new::<i8>(DecimalDType::new(2, 1), false.into());
297293
for v in 0..values {
298294
i8s.append_value(v);
299295
}
300296
let i8s = i8s.finish();
301297

302-
let mut i128s = DecimalBuilder::new::<i128>(2, 1, false.into());
298+
let mut i128s = DecimalBuilder::new::<i128>(DecimalDType::new(2, 1), false.into());
303299
i128s.extend_from_array(&i8s);
304300
let i128s = i128s.finish();
305301

@@ -313,7 +309,7 @@ mod tests {
313309
use vortex_scalar::Scalar;
314310

315311
// Simply test that the builder accepts its own finish output via scalar.
316-
let mut builder = DecimalBuilder::new::<i64>(10, 2, true.into());
312+
let mut builder = DecimalBuilder::new::<i64>(DecimalDType::new(10, 2), true.into());
317313
builder.append_value(1234i64);
318314
builder.append_value(5678i64);
319315
builder.append_null();
@@ -326,7 +322,7 @@ mod tests {
326322
assert_arrays_eq!(&array, &expected);
327323

328324
// Test by taking a scalar from the array and appending it to a new builder.
329-
let mut builder2 = DecimalBuilder::new::<i64>(10, 2, true.into());
325+
let mut builder2 = DecimalBuilder::new::<i64>(DecimalDType::new(10, 2), true.into());
330326
for i in 0..array.len() {
331327
let scalar = array.scalar_at(i);
332328
builder2.append_scalar(&scalar).unwrap();
@@ -336,7 +332,7 @@ mod tests {
336332
assert_arrays_eq!(&array2, &array);
337333

338334
// Test wrong dtype error.
339-
let mut builder = DecimalBuilder::new::<i64>(10, 2, false.into());
335+
let mut builder = DecimalBuilder::new::<i64>(DecimalDType::new(10, 2), false.into());
340336
let wrong_scalar = Scalar::from(true);
341337
assert!(builder.append_scalar(&wrong_scalar).is_err());
342338
}

0 commit comments

Comments
 (0)