Skip to content

Commit 122b6b7

Browse files
committed
ensure
Signed-off-by: Robert Kruszewski <github@robertk.io>
1 parent 344e5e9 commit 122b6b7

1 file changed

Lines changed: 34 additions & 48 deletions

File tree

  • encodings/fastlanes/src/delta/array

encodings/fastlanes/src/delta/array/mod.rs

Lines changed: 34 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
use fastlanes::FastLanes;
55
use vortex_array::ArrayRef;
6+
use vortex_array::DynArray;
67
use vortex_array::ExecutionCtx;
78
use vortex_array::IntoArray;
89
use vortex_array::arrays::PrimitiveArray;
@@ -12,7 +13,7 @@ use vortex_array::match_each_unsigned_integer_ptype;
1213
use vortex_array::stats::ArrayStats;
1314
use vortex_error::VortexExpect as _;
1415
use vortex_error::VortexResult;
15-
use vortex_error::vortex_bail;
16+
use vortex_error::vortex_ensure;
1617

1718
pub mod delta_compress;
1819
pub mod delta_decompress;
@@ -90,50 +91,37 @@ impl DeltaArray {
9091
offset: usize,
9192
logical_len: usize,
9293
) -> VortexResult<Self> {
93-
if offset >= 1024 {
94-
vortex_bail!("offset must be less than 1024: {}", offset);
95-
}
96-
if offset + logical_len > deltas.len() {
97-
vortex_bail!(
98-
"offset + logical_len, {} + {}, must be less than or equal to the size of deltas: {}",
99-
offset,
100-
logical_len,
101-
deltas.len()
102-
)
103-
}
104-
if !bases.dtype().eq_ignore_nullability(deltas.dtype()) {
105-
vortex_bail!(
106-
"DeltaArray: bases and deltas must have the same dtype, got {:?} and {:?}",
107-
bases.dtype(),
108-
deltas.dtype()
109-
);
110-
}
111-
let DType::Primitive(ptype, _) = bases.dtype().clone() else {
112-
vortex_bail!(
113-
"DeltaArray: dtype must be an integer, got {}",
114-
bases.dtype()
115-
);
116-
};
117-
118-
if !ptype.is_int() {
119-
vortex_bail!("DeltaArray: ptype must be an integer, got {}", ptype);
120-
}
121-
122-
let lanes = lane_count(ptype);
123-
124-
if !deltas.len().is_multiple_of(1024) {
125-
vortex_bail!(
126-
"deltas length ({}) must be a multiple of 1024",
127-
deltas.len(),
128-
);
129-
}
130-
if !bases.len().is_multiple_of(lanes) {
131-
vortex_bail!(
132-
"bases length ({}) must be a multiple of LANES ({})",
133-
bases.len(),
134-
lanes,
135-
);
136-
}
94+
vortex_ensure!(offset < 1024, "offset must be less than 1024: {offset}");
95+
vortex_ensure!(
96+
offset + logical_len <= deltas.len(),
97+
"offset + logical_len, {offset} + {logical_len}, must be less than or equal to the size of deltas: {}",
98+
deltas.len()
99+
);
100+
vortex_ensure!(
101+
bases.dtype().eq_ignore_nullability(deltas.dtype()),
102+
"DeltaArray: bases and deltas must have the same dtype, got {} and {}",
103+
bases.dtype(),
104+
deltas.dtype()
105+
);
106+
107+
vortex_ensure!(
108+
bases.dtype().is_int(),
109+
"DeltaArray: dtype must be an integer, got {}",
110+
bases.dtype()
111+
);
112+
113+
let lanes = lane_count(bases.dtype().as_ptype());
114+
115+
vortex_ensure!(
116+
deltas.len().is_multiple_of(1024),
117+
"deltas length ({}) must be a multiple of 1024",
118+
deltas.len(),
119+
);
120+
vortex_ensure!(
121+
bases.len().is_multiple_of(lanes),
122+
"bases length ({}) must be a multiple of LANES ({lanes})",
123+
bases.len(),
124+
);
137125

138126
// SAFETY: validation done above
139127
Ok(unsafe { Self::new_unchecked(bases, deltas, offset, logical_len) })
@@ -167,9 +155,7 @@ impl DeltaArray {
167155

168156
#[inline]
169157
pub(crate) fn lanes(&self) -> usize {
170-
let ptype =
171-
PType::try_from(self.dtype()).vortex_expect("DeltaArray DType must be primitive");
172-
lane_count(ptype)
158+
lane_count(self.dtype().as_ptype())
173159
}
174160

175161
#[inline]

0 commit comments

Comments
 (0)