Skip to content

Commit 0066c0b

Browse files
committed
Refactor tests using supports_filters_pushdown
1 parent ca9a9d2 commit 0066c0b

File tree

1 file changed

+29
-43
lines changed

1 file changed

+29
-43
lines changed

datafusion/optimizer/src/push_down_filter.rs

Lines changed: 29 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -2529,23 +2529,31 @@ mod tests {
25292529
}
25302530
}
25312531

2532-
fn table_scan_with_pushdown_provider(
2532+
fn table_scan_with_pushdown_provider_builder(
25332533
filter_support: TableProviderFilterPushDown,
2534-
) -> Result<LogicalPlan> {
2534+
filters: Vec<Expr>,
2535+
projection: Option<Vec<usize>>,
2536+
) -> Result<LogicalPlanBuilder> {
25352537
let test_provider = PushDownProvider { filter_support };
25362538

25372539
let table_scan = LogicalPlan::TableScan(TableScan {
25382540
table_name: "test".into(),
2539-
filters: vec![],
2541+
filters,
25402542
projected_schema: Arc::new(DFSchema::try_from(
25412543
(*test_provider.schema()).clone(),
25422544
)?),
2543-
projection: None,
2545+
projection,
25442546
source: Arc::new(test_provider),
25452547
fetch: None,
25462548
});
25472549

2548-
LogicalPlanBuilder::from(table_scan)
2550+
Ok(LogicalPlanBuilder::from(table_scan))
2551+
}
2552+
2553+
fn table_scan_with_pushdown_provider(
2554+
filter_support: TableProviderFilterPushDown,
2555+
) -> Result<LogicalPlan> {
2556+
table_scan_with_pushdown_provider_builder(filter_support, vec![], None)?
25492557
.filter(col("a").eq(lit(1i64)))?
25502558
.build()
25512559
}
@@ -2602,25 +2610,14 @@ mod tests {
26022610

26032611
#[test]
26042612
fn multi_combined_filter() -> Result<()> {
2605-
let test_provider = PushDownProvider {
2606-
filter_support: TableProviderFilterPushDown::Inexact,
2607-
};
2608-
2609-
let table_scan = LogicalPlan::TableScan(TableScan {
2610-
table_name: "test".into(),
2611-
filters: vec![col("a").eq(lit(10i64)), col("b").gt(lit(11i64))],
2612-
projected_schema: Arc::new(DFSchema::try_from(
2613-
(*test_provider.schema()).clone(),
2614-
)?),
2615-
projection: Some(vec![0]),
2616-
source: Arc::new(test_provider),
2617-
fetch: None,
2618-
});
2619-
2620-
let plan = LogicalPlanBuilder::from(table_scan)
2621-
.filter(and(col("a").eq(lit(10i64)), col("b").gt(lit(11i64))))?
2622-
.project(vec![col("a"), col("b")])?
2623-
.build()?;
2613+
let plan = table_scan_with_pushdown_provider_builder(
2614+
TableProviderFilterPushDown::Inexact,
2615+
vec![col("a").eq(lit(10i64)), col("b").gt(lit(11i64))],
2616+
Some(vec![0]),
2617+
)?
2618+
.filter(and(col("a").eq(lit(10i64)), col("b").gt(lit(11i64))))?
2619+
.project(vec![col("a"), col("b")])?
2620+
.build()?;
26242621

26252622
let expected = "Projection: a, b\
26262623
\n Filter: a = Int64(10) AND b > Int64(11)\
@@ -2631,25 +2628,14 @@ mod tests {
26312628

26322629
#[test]
26332630
fn multi_combined_filter_exact() -> Result<()> {
2634-
let test_provider = PushDownProvider {
2635-
filter_support: TableProviderFilterPushDown::Exact,
2636-
};
2637-
2638-
let table_scan = LogicalPlan::TableScan(TableScan {
2639-
table_name: "test".into(),
2640-
filters: vec![],
2641-
projected_schema: Arc::new(DFSchema::try_from(
2642-
(*test_provider.schema()).clone(),
2643-
)?),
2644-
projection: Some(vec![0]),
2645-
source: Arc::new(test_provider),
2646-
fetch: None,
2647-
});
2648-
2649-
let plan = LogicalPlanBuilder::from(table_scan)
2650-
.filter(and(col("a").eq(lit(10i64)), col("b").gt(lit(11i64))))?
2651-
.project(vec![col("a"), col("b")])?
2652-
.build()?;
2631+
let plan = table_scan_with_pushdown_provider_builder(
2632+
TableProviderFilterPushDown::Exact,
2633+
vec![],
2634+
Some(vec![0]),
2635+
)?
2636+
.filter(and(col("a").eq(lit(10i64)), col("b").gt(lit(11i64))))?
2637+
.project(vec![col("a"), col("b")])?
2638+
.build()?;
26532639

26542640
let expected = r#"
26552641
Projection: a, b

0 commit comments

Comments
 (0)