Skip to content

Commit 60efa03

Browse files
perf: support pushing physical filters down through DeltaScan (#3859)
1 parent daa8a68 commit 60efa03

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

crates/core/src/delta_datafusion/table_provider.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ use datafusion::logical_expr::utils::split_conjunction;
2929
use datafusion::logical_expr::{BinaryExpr, LogicalPlan, Operator};
3030
use datafusion::optimizer::simplify_expressions::ExprSimplifier;
3131
use datafusion::physical_optimizer::pruning::PruningPredicate;
32+
use datafusion::physical_plan::filter_pushdown::{FilterDescription, FilterPushdownPhase};
3233
use datafusion::physical_plan::metrics::{ExecutionPlanMetricsSet, MetricBuilder, MetricsSet};
3334
use datafusion::physical_plan::{
3435
stream::RecordBatchStreamAdapter, DisplayAs, DisplayFormatType, ExecutionPlan, PhysicalExpr,
@@ -980,6 +981,18 @@ impl ExecutionPlan for DeltaScan {
980981
fn partition_statistics(&self, partition: Option<usize>) -> Result<Statistics> {
981982
self.parquet_scan.partition_statistics(partition)
982983
}
984+
985+
fn gather_filters_for_pushdown(
986+
&self,
987+
_phase: FilterPushdownPhase,
988+
parent_filters: Vec<Arc<dyn PhysicalExpr>>,
989+
_config: &ConfigOptions,
990+
) -> Result<FilterDescription> {
991+
Ok(FilterDescription::from_children(
992+
parent_filters,
993+
&self.children(),
994+
)?)
995+
}
983996
}
984997

985998
/// The logical schema for a Deltatable is different from the protocol level schema since partition

0 commit comments

Comments
 (0)