@@ -2529,23 +2529,31 @@ mod tests {
2529
2529
}
2530
2530
}
2531
2531
2532
- fn table_scan_with_pushdown_provider (
2532
+ fn table_scan_with_pushdown_provider_builder (
2533
2533
filter_support : TableProviderFilterPushDown ,
2534
- ) -> Result < LogicalPlan > {
2534
+ filters : Vec < Expr > ,
2535
+ projection : Option < Vec < usize > > ,
2536
+ ) -> Result < LogicalPlanBuilder > {
2535
2537
let test_provider = PushDownProvider { filter_support } ;
2536
2538
2537
2539
let table_scan = LogicalPlan :: TableScan ( TableScan {
2538
2540
table_name : "test" . into ( ) ,
2539
- filters : vec ! [ ] ,
2541
+ filters,
2540
2542
projected_schema : Arc :: new ( DFSchema :: try_from (
2541
2543
( * test_provider. schema ( ) ) . clone ( ) ,
2542
2544
) ?) ,
2543
- projection : None ,
2545
+ projection,
2544
2546
source : Arc :: new ( test_provider) ,
2545
2547
fetch : None ,
2546
2548
} ) ;
2547
2549
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 ) ?
2549
2557
. filter ( col ( "a" ) . eq ( lit ( 1i64 ) ) ) ?
2550
2558
. build ( )
2551
2559
}
@@ -2602,25 +2610,14 @@ mod tests {
2602
2610
2603
2611
#[ test]
2604
2612
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 ( ) ?;
2624
2621
2625
2622
let expected = "Projection: a, b\
2626
2623
\n Filter: a = Int64(10) AND b > Int64(11)\
@@ -2631,25 +2628,14 @@ mod tests {
2631
2628
2632
2629
#[ test]
2633
2630
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 ( ) ?;
2653
2639
2654
2640
let expected = r#"
2655
2641
Projection: a, b
0 commit comments