Skip to content

Commit 6768bec

Browse files
committed
Reuse fixed-width storage for decimal arrays
Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
1 parent cce0133 commit 6768bec

33 files changed

Lines changed: 235 additions & 368 deletions

File tree

fuzz/src/array/fill_null.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ use vortex_array::arrays::DecimalArray;
1313
use vortex_array::arrays::PrimitiveArray;
1414
use vortex_array::arrays::VarBinViewArray;
1515
use vortex_array::arrays::bool::BoolArrayExt;
16+
use vortex_array::arrays::decimal::DecimalArrayExt;
1617
use vortex_array::builtins::ArrayBuiltins;
1718
use vortex_array::dtype::DType;
1819
use vortex_array::dtype::Nullability;

fuzz/src/array/mask.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ use vortex_array::arrays::PrimitiveArray;
1616
use vortex_array::arrays::StructArray;
1717
use vortex_array::arrays::VarBinViewArray;
1818
use vortex_array::arrays::bool::BoolArrayExt;
19+
use vortex_array::arrays::decimal::DecimalArrayExt;
1920
use vortex_array::arrays::extension::ExtensionArrayExt;
2021
use vortex_array::arrays::fixed_size_list::FixedSizeListArrayExt;
2122
use vortex_array::arrays::listview::ListViewArrayExt;

fuzz/src/array/scalar_at.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use vortex_array::Canonical;
77
use vortex_array::ExecutionCtx;
88
use vortex_array::IntoArray;
99
use vortex_array::arrays::bool::BoolArrayExt;
10+
use vortex_array::arrays::decimal::DecimalArrayExt;
1011
use vortex_array::arrays::extension::ExtensionArrayExt;
1112
use vortex_array::arrays::fixed_size_list::FixedSizeListArrayExt;
1213
use vortex_array::arrays::listview::ListViewArrayExt;

vortex-array/src/aggregate_fn/fns/min_max/decimal.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ use super::MinMaxPartial;
99
use super::MinMaxResult;
1010
use crate::ExecutionCtx;
1111
use crate::arrays::DecimalArray;
12+
use crate::arrays::decimal::DecimalArrayExt;
1213
use crate::dtype::DecimalDType;
1314
use crate::dtype::NativeDecimalType;
1415
use crate::dtype::Nullability::NonNullable;

vortex-array/src/aggregate_fn/fns/sum/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -300,9 +300,9 @@ impl AggregateFnVTable for Sum {
300300

301301
let result = match batch {
302302
Columnar::Canonical(c) => match c {
303-
Canonical::Primitive(p) => accumulate_primitive(&mut inner, p, ctx, skip_nans),
303+
Canonical::Primitive(a) => accumulate_primitive(&mut inner, a, ctx, skip_nans),
304+
Canonical::Decimal(a) => accumulate_decimal(&mut inner, a, ctx),
304305
Canonical::Bool(b) => accumulate_bool(&mut inner, b, ctx),
305-
Canonical::Decimal(d) => accumulate_decimal(&mut inner, d, ctx),
306306
_ => vortex_bail!("Unsupported canonical type for sum: {}", batch.dtype()),
307307
},
308308
Columnar::Constant(_) => unreachable!(),

vortex-array/src/array/erased.rs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -804,3 +804,30 @@ impl<V: VTable> Matcher for V {
804804
Some(unsafe { ArrayView::new_unchecked(array, &inner.data) })
805805
}
806806
}
807+
808+
#[cfg(test)]
809+
mod tests {
810+
use vortex_buffer::buffer;
811+
812+
use super::*;
813+
use crate::arrays::Decimal;
814+
use crate::arrays::DecimalArray;
815+
use crate::arrays::Primitive;
816+
use crate::dtype::DecimalDType;
817+
818+
#[test]
819+
fn fixed_width_arrays_match_their_logical_vtable() {
820+
let primitive = buffer![1i32].into_array();
821+
let decimal = DecimalArray::new(
822+
buffer![1i32],
823+
DecimalDType::new(1, 0),
824+
Validity::NonNullable,
825+
)
826+
.into_array();
827+
828+
assert!(primitive.is::<Primitive>());
829+
assert!(!primitive.is::<Decimal>());
830+
assert!(decimal.is::<Decimal>());
831+
assert!(!decimal.is::<Primitive>());
832+
}
833+
}

0 commit comments

Comments
 (0)