Skip to content

Commit 3d4b851

Browse files
committed
Stash some changes
Signed-off-by: Adam Gutglick <[email protected]>
1 parent 72d138a commit 3d4b851

File tree

5 files changed

+341
-49
lines changed

5 files changed

+341
-49
lines changed

vortex-datafusion/src/convert/exprs.rs

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ impl DefaultExpressionConvertor {
100100

101101
impl ExpressionConvertor for DefaultExpressionConvertor {
102102
fn can_be_pushed_down(&self, expr: &Arc<dyn PhysicalExpr>, schema: &Schema) -> bool {
103-
can_be_pushed_down(expr, schema)
103+
can_be_pushed_down_impl(expr, schema)
104104
}
105105

106106
fn convert(&self, df: &dyn PhysicalExpr) -> VortexResult<Expression> {
@@ -241,7 +241,7 @@ fn try_operator_from_df(value: &DFOperator) -> VortexResult<Operator> {
241241
}
242242
}
243243

244-
pub(crate) fn can_be_pushed_down(df_expr: &Arc<dyn PhysicalExpr>, schema: &Schema) -> bool {
244+
fn can_be_pushed_down_impl(df_expr: &Arc<dyn PhysicalExpr>, schema: &Schema) -> bool {
245245
// We currently do not support pushdown of dynamic expressions in DF.
246246
// See issue: https://github.com/vortex-data/vortex/issues/4034
247247
if is_dynamic_physical_expr(df_expr) {
@@ -257,20 +257,24 @@ pub(crate) fn can_be_pushed_down(df_expr: &Arc<dyn PhysicalExpr>, schema: &Schem
257257
.ok()
258258
.is_some_and(|field| supported_data_types(field.data_type()))
259259
} else if let Some(like) = expr.downcast_ref::<df_expr::LikeExpr>() {
260-
can_be_pushed_down(like.expr(), schema) && can_be_pushed_down(like.pattern(), schema)
260+
can_be_pushed_down_impl(like.expr(), schema)
261+
&& can_be_pushed_down_impl(like.pattern(), schema)
261262
} else if let Some(lit) = expr.downcast_ref::<df_expr::Literal>() {
262263
supported_data_types(&lit.value().data_type())
263264
} else if expr.downcast_ref::<df_expr::CastExpr>().is_some()
264265
|| expr.downcast_ref::<df_expr::CastColumnExpr>().is_some()
265266
{
266267
true
267268
} else if let Some(is_null) = expr.downcast_ref::<df_expr::IsNullExpr>() {
268-
can_be_pushed_down(is_null.arg(), schema)
269+
can_be_pushed_down_impl(is_null.arg(), schema)
269270
} else if let Some(is_not_null) = expr.downcast_ref::<df_expr::IsNotNullExpr>() {
270-
can_be_pushed_down(is_not_null.arg(), schema)
271+
can_be_pushed_down_impl(is_not_null.arg(), schema)
271272
} else if let Some(in_list) = expr.downcast_ref::<df_expr::InListExpr>() {
272-
can_be_pushed_down(in_list.expr(), schema)
273-
&& in_list.list().iter().all(|e| can_be_pushed_down(e, schema))
273+
can_be_pushed_down_impl(in_list.expr(), schema)
274+
&& in_list
275+
.list()
276+
.iter()
277+
.all(|e| can_be_pushed_down_impl(e, schema))
274278
} else if let Some(scalar_fn) = expr.downcast_ref::<ScalarFunctionExpr>() {
275279
can_scalar_fn_be_pushed_down(scalar_fn)
276280
} else {
@@ -282,8 +286,8 @@ pub(crate) fn can_be_pushed_down(df_expr: &Arc<dyn PhysicalExpr>, schema: &Schem
282286
fn can_binary_be_pushed_down(binary: &df_expr::BinaryExpr, schema: &Schema) -> bool {
283287
let is_op_supported = try_operator_from_df(binary.op()).is_ok();
284288
is_op_supported
285-
&& can_be_pushed_down(binary.left(), schema)
286-
&& can_be_pushed_down(binary.right(), schema)
289+
&& can_be_pushed_down_impl(binary.left(), schema)
290+
&& can_be_pushed_down_impl(binary.right(), schema)
287291
}
288292

289293
fn supported_data_types(dt: &DataType) -> bool {
@@ -548,30 +552,30 @@ mod tests {
548552
fn test_can_be_pushed_down_column_supported(test_schema: Schema) {
549553
let col_expr = Arc::new(df_expr::Column::new("id", 0)) as Arc<dyn PhysicalExpr>;
550554

551-
assert!(can_be_pushed_down(&col_expr, &test_schema));
555+
assert!(can_be_pushed_down_impl(&col_expr, &test_schema));
552556
}
553557

554558
#[rstest]
555559
fn test_can_be_pushed_down_column_unsupported_type(test_schema: Schema) {
556560
let col_expr =
557561
Arc::new(df_expr::Column::new("unsupported_list", 5)) as Arc<dyn PhysicalExpr>;
558562

559-
assert!(!can_be_pushed_down(&col_expr, &test_schema));
563+
assert!(!can_be_pushed_down_impl(&col_expr, &test_schema));
560564
}
561565

562566
#[rstest]
563567
fn test_can_be_pushed_down_column_not_found(test_schema: Schema) {
564568
let col_expr = Arc::new(df_expr::Column::new("nonexistent", 99)) as Arc<dyn PhysicalExpr>;
565569

566-
assert!(!can_be_pushed_down(&col_expr, &test_schema));
570+
assert!(!can_be_pushed_down_impl(&col_expr, &test_schema));
567571
}
568572

569573
#[rstest]
570574
fn test_can_be_pushed_down_literal_supported(test_schema: Schema) {
571575
let lit_expr =
572576
Arc::new(df_expr::Literal::new(ScalarValue::Int32(Some(42)))) as Arc<dyn PhysicalExpr>;
573577

574-
assert!(can_be_pushed_down(&lit_expr, &test_schema));
578+
assert!(can_be_pushed_down_impl(&lit_expr, &test_schema));
575579
}
576580

577581
#[rstest]
@@ -581,7 +585,7 @@ mod tests {
581585
let lit_expr =
582586
Arc::new(df_expr::Literal::new(unsupported_literal)) as Arc<dyn PhysicalExpr>;
583587

584-
assert!(!can_be_pushed_down(&lit_expr, &test_schema));
588+
assert!(!can_be_pushed_down_impl(&lit_expr, &test_schema));
585589
}
586590

587591
#[rstest]
@@ -592,7 +596,7 @@ mod tests {
592596
let binary_expr = Arc::new(df_expr::BinaryExpr::new(left, DFOperator::Eq, right))
593597
as Arc<dyn PhysicalExpr>;
594598

595-
assert!(can_be_pushed_down(&binary_expr, &test_schema));
599+
assert!(can_be_pushed_down_impl(&binary_expr, &test_schema));
596600
}
597601

598602
#[rstest]
@@ -606,7 +610,7 @@ mod tests {
606610
right,
607611
)) as Arc<dyn PhysicalExpr>;
608612

609-
assert!(!can_be_pushed_down(&binary_expr, &test_schema));
613+
assert!(!can_be_pushed_down_impl(&binary_expr, &test_schema));
610614
}
611615

612616
#[rstest]
@@ -617,7 +621,7 @@ mod tests {
617621
let binary_expr = Arc::new(df_expr::BinaryExpr::new(left, DFOperator::Eq, right))
618622
as Arc<dyn PhysicalExpr>;
619623

620-
assert!(!can_be_pushed_down(&binary_expr, &test_schema));
624+
assert!(!can_be_pushed_down_impl(&binary_expr, &test_schema));
621625
}
622626

623627
#[rstest]
@@ -629,7 +633,7 @@ mod tests {
629633
let like_expr =
630634
Arc::new(df_expr::LikeExpr::new(false, false, expr, pattern)) as Arc<dyn PhysicalExpr>;
631635

632-
assert!(can_be_pushed_down(&like_expr, &test_schema));
636+
assert!(can_be_pushed_down_impl(&like_expr, &test_schema));
633637
}
634638

635639
#[rstest]
@@ -641,6 +645,6 @@ mod tests {
641645
let like_expr =
642646
Arc::new(df_expr::LikeExpr::new(false, false, expr, pattern)) as Arc<dyn PhysicalExpr>;
643647

644-
assert!(!can_be_pushed_down(&like_expr, &test_schema));
648+
assert!(!can_be_pushed_down_impl(&like_expr, &test_schema));
645649
}
646650
}

vortex-datafusion/src/persistent/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ mod cache;
77
mod format;
88
pub mod metrics;
99
mod opener;
10+
mod projection;
1011
mod sink;
1112
mod source;
1213

0 commit comments

Comments
 (0)