From f1f062b7577d81e4d58306e8e8d28a8584015cf7 Mon Sep 17 00:00:00 2001
From: "vortex-claude[bot]"
<274007616+vortex-claude[bot]@users.noreply.github.com>
Date: Mon, 8 Jun 2026 16:10:36 +0000
Subject: [PATCH] fix(fuzz): VortexError in file_io (#8249)
Automated fix for fuzzer issue #8249.
Signed-off-by: vortex-claude[bot] <274007616+vortex-claude[bot]@users.noreply.github.com>
---
vortex-array/src/stats/rewrite/builtins.rs | 121 +++++++++++++--------
1 file changed, 76 insertions(+), 45 deletions(-)
diff --git a/vortex-array/src/stats/rewrite/builtins.rs b/vortex-array/src/stats/rewrite/builtins.rs
index 3476c053ecf..48e3c3f89d4 100644
--- a/vortex-array/src/stats/rewrite/builtins.rs
+++ b/vortex-array/src/stats/rewrite/builtins.rs
@@ -84,15 +84,15 @@ impl StatsRewriteRule for BinaryStatsRewrite {
Ok(match operator {
Operator::Eq => {
- let left = min(lhs).zip(max(rhs)).map(|(a, b)| gt(a, b));
- let right = min(rhs).zip(max(lhs)).map(|(a, b)| gt(a, b));
+ let left = min(ctx, lhs).zip(max(ctx, rhs)).map(|(a, b)| gt(a, b));
+ let right = min(ctx, rhs).zip(max(ctx, lhs)).map(|(a, b)| gt(a, b));
or_collect(left.into_iter().chain(right))
.map(|value_predicate| with_nan_predicate(ctx, lhs, rhs, value_predicate))
.transpose()?
}
- Operator::NotEq => min(lhs)
- .zip(max(rhs))
- .zip(max(lhs).zip(min(rhs)))
+ Operator::NotEq => min(ctx, lhs)
+ .zip(max(ctx, rhs))
+ .zip(max(ctx, lhs).zip(min(ctx, rhs)))
.map(|((min_lhs, max_rhs), (max_lhs, min_rhs))| {
with_nan_predicate(
ctx,
@@ -102,20 +102,20 @@ impl StatsRewriteRule for BinaryStatsRewrite {
)
})
.transpose()?,
- Operator::Gt => max(lhs)
- .zip(min(rhs))
+ Operator::Gt => max(ctx, lhs)
+ .zip(min(ctx, rhs))
.map(|(a, b)| with_nan_predicate(ctx, lhs, rhs, lt_eq(a, b)))
.transpose()?,
- Operator::Gte => max(lhs)
- .zip(min(rhs))
+ Operator::Gte => max(ctx, lhs)
+ .zip(min(ctx, rhs))
.map(|(a, b)| with_nan_predicate(ctx, lhs, rhs, lt(a, b)))
.transpose()?,
- Operator::Lt => min(lhs)
- .zip(max(rhs))
+ Operator::Lt => min(ctx, lhs)
+ .zip(max(ctx, rhs))
.map(|(a, b)| with_nan_predicate(ctx, lhs, rhs, gt_eq(a, b)))
.transpose()?,
- Operator::Lte => min(lhs)
- .zip(max(rhs))
+ Operator::Lte => min(ctx, lhs)
+ .zip(max(ctx, rhs))
.map(|(a, b)| with_nan_predicate(ctx, lhs, rhs, gt(a, b)))
.transpose()?,
Operator::And => {
@@ -167,17 +167,17 @@ impl StatsRewriteRule for IsNullLegacyStatsRewrite {
fn falsify(
&self,
expr: &Expression,
- _ctx: &StatsRewriteCtx<'_>,
+ ctx: &StatsRewriteCtx<'_>,
) -> VortexResult