Skip to content

Commit 68e19bb

Browse files
committed
Thread scope dtype through zoned pruning
Signed-off-by: Nicholas Gates <nick@nickgates.com>
1 parent 5ce2db0 commit 68e19bb

2 files changed

Lines changed: 14 additions & 8 deletions

File tree

vortex-layout/src/layouts/zoned/pruning.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ impl PruningState {
116116
self.pruning_predicates
117117
.entry(expr.clone())
118118
.or_default()
119-
.get_or_init(move || match expr.falsify(&self.session) {
119+
.get_or_init(move || match expr.falsify(&self.dtype, &self.session) {
120120
Ok(predicate) => predicate,
121121
Err(error) => {
122122
trace!(%expr, %error, "failed to construct stats rewrite predicate");

vortex-layout/src/layouts/zoned/zone_map.rs

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -269,8 +269,10 @@ mod tests {
269269
use vortex_array::arrays::PrimitiveArray;
270270
use vortex_array::arrays::StructArray;
271271
use vortex_array::assert_arrays_eq;
272+
use vortex_array::dtype::DType;
272273
use vortex_array::dtype::FieldNames;
273274
use vortex_array::dtype::PType;
275+
use vortex_array::expr::Expression;
274276
use vortex_array::expr::gt;
275277
use vortex_array::expr::gt_eq;
276278
use vortex_array::expr::is_not_null;
@@ -288,6 +290,10 @@ mod tests {
288290
use crate::layouts::zoned::zone_map::ZoneMap;
289291
use crate::test::SESSION;
290292

293+
fn falsify(expr: &Expression, dtype: DType) -> Expression {
294+
expr.falsify(&dtype, &SESSION).unwrap().unwrap()
295+
}
296+
291297
#[test]
292298
fn test_zone_map_prunes() {
293299
// Construct a zone map with 3 zones:
@@ -331,7 +337,7 @@ mod tests {
331337
// A >= 6
332338
// => A.max < 6
333339
let expr = gt_eq(root(), lit(6i32));
334-
let pruning_expr = expr.falsify(&SESSION).unwrap().unwrap();
340+
let pruning_expr = falsify(&expr, PType::I32.into());
335341
let mask = zone_map.prune(&pruning_expr, &SESSION).unwrap();
336342
assert_arrays_eq!(
337343
mask.into_array(),
@@ -341,7 +347,7 @@ mod tests {
341347
// A > 5
342348
// => A.max <= 5
343349
let expr = gt(root(), lit(5i32));
344-
let pruning_expr = expr.falsify(&SESSION).unwrap().unwrap();
350+
let pruning_expr = falsify(&expr, PType::I32.into());
345351
let mask = zone_map.prune(&pruning_expr, &SESSION).unwrap();
346352
assert_arrays_eq!(
347353
mask.into_array(),
@@ -351,7 +357,7 @@ mod tests {
351357
// A < 2
352358
// => A.min >= 2
353359
let expr = lt(root(), lit(2i32));
354-
let pruning_expr = expr.falsify(&SESSION).unwrap().unwrap();
360+
let pruning_expr = falsify(&expr, PType::I32.into());
355361
let mask = zone_map.prune(&pruning_expr, &SESSION).unwrap();
356362
assert_arrays_eq!(mask.into_array(), BoolArray::from_iter([false, true, true]));
357363
}
@@ -372,7 +378,7 @@ mod tests {
372378
.unwrap();
373379

374380
let expr = is_not_null(root());
375-
let pruning_expr = expr.falsify(&SESSION).unwrap().unwrap();
381+
let pruning_expr = falsify(&expr, PType::U64.into());
376382

377383
let mask = zone_map.prune(&pruning_expr, &SESSION).unwrap();
378384
assert_arrays_eq!(
@@ -458,7 +464,7 @@ mod tests {
458464
);
459465

460466
let expr = gt(root(), lit(5u64));
461-
let pruning_expr = expr.falsify(&SESSION).unwrap().unwrap();
467+
let pruning_expr = falsify(&expr, PType::U64.into());
462468
let mask = zone_map.prune(&pruning_expr, &SESSION).unwrap();
463469
assert_arrays_eq!(
464470
mask.into_array(),
@@ -488,7 +494,7 @@ mod tests {
488494
.unwrap();
489495

490496
let expr = gt(root(), lit(5.0f32));
491-
let pruning_expr = expr.falsify(&SESSION).unwrap().unwrap();
497+
let pruning_expr = falsify(&expr, PType::F32.into());
492498
let mask = zone_map.prune(&pruning_expr, &SESSION).unwrap();
493499
assert_arrays_eq!(
494500
mask.into_array(),
@@ -541,7 +547,7 @@ mod tests {
541547
.unwrap();
542548

543549
let expr = is_not_null(root());
544-
let pruning_expr = expr.falsify(&SESSION).unwrap().unwrap();
550+
let pruning_expr = falsify(&expr, PType::U64.into());
545551

546552
// All three zones have length 4 (total rows = 12).
547553
let mask = zone_map.prune(&pruning_expr, &SESSION).unwrap();

0 commit comments

Comments
 (0)