@@ -9,9 +9,11 @@ use crate::planner::operator::Operator;
99use crate :: planner:: LogicalPlan ;
1010use anyhow:: anyhow;
1111use anyhow:: Result ;
12+ use crate :: execution_v1:: physical_plan:: physical_filter:: PhysicalFilter ;
1213use crate :: execution_v1:: physical_plan:: physical_insert:: PhysicalInsert ;
1314use crate :: execution_v1:: physical_plan:: physical_values:: PhysicalValues ;
1415use crate :: planner:: logical_insert_plan:: LogicalInsertPlan ;
16+ use crate :: planner:: operator:: filter:: FilterOperator ;
1517use crate :: planner:: operator:: insert:: InsertOperator ;
1618use crate :: planner:: operator:: project:: ProjectOperator ;
1719use crate :: planner:: operator:: values:: ValuesOperator ;
@@ -84,6 +86,7 @@ impl PhysicalPlanBuilder {
8486 match plan. operator . as_ref ( ) {
8587 Operator :: Project ( op) => self . build_physical_select_projection ( plan, op) ,
8688 Operator :: Scan ( scan) => Ok ( self . build_physical_scan ( scan. clone ( ) ) ) ,
89+ Operator :: Filter ( op) => self . build_physical_filter ( plan, op) ,
8790 _ => Err ( anyhow ! ( format!(
8891 "Unsupported physical plan: {:?}" ,
8992 plan. operator
@@ -104,4 +107,14 @@ impl PhysicalPlanBuilder {
104107 fn build_physical_scan ( & mut self , base : ScanOperator ) -> PhysicalOperator {
105108 PhysicalOperator :: TableScan ( PhysicalTableScan { plan_id : self . next_plan_id ( ) , base } )
106109 }
110+
111+ fn build_physical_filter ( & mut self , plan : & LogicalSelectPlan , base : & FilterOperator ) -> Result < PhysicalOperator > {
112+ let input = self . build_select_logical_plan ( plan. child ( 0 ) ?) ?;
113+
114+ Ok ( PhysicalOperator :: Filter ( PhysicalFilter {
115+ plan_id : 0 ,
116+ predicate : base. predicate . clone ( ) ,
117+ input : Box :: new ( input) ,
118+ } ) )
119+ }
107120}
0 commit comments