1- use std:: { borrow:: Borrow , sync :: Arc } ;
1+ use std:: borrow:: Borrow ;
22
33use crate :: {
44 catalog:: ColumnRefId ,
55 expression:: ScalarExpression ,
66 planner:: {
7- logical_select_plan:: LogicalSelectPlan ,
87 operator:: {
98 filter:: FilterOperator , join:: JoinOperator as LJoinOperator , limit:: LimitOperator ,
109 project:: ProjectOperator , Operator ,
@@ -23,10 +22,11 @@ use sqlparser::ast::{
2322 Expr , Ident , Join , JoinConstraint , JoinOperator , Offset , OrderByExpr , Query , Select ,
2423 SelectItem , SetExpr , TableFactor , TableWithJoins ,
2524} ;
25+ use crate :: planner:: LogicalPlan ;
2626use crate :: planner:: operator:: sort:: { SortField , SortOperator } ;
2727
2828impl Binder {
29- pub ( crate ) fn bind_query ( & mut self , query : & Query ) -> Result < LogicalSelectPlan > {
29+ pub ( crate ) fn bind_query ( & mut self , query : & Query ) -> Result < LogicalPlan > {
3030 if let Some ( _with) = & query. with {
3131 // TODO support with clause.
3232 }
@@ -51,7 +51,7 @@ impl Binder {
5151 & mut self ,
5252 select : & Select ,
5353 orderby : & [ OrderByExpr ] ,
54- ) -> Result < LogicalSelectPlan > {
54+ ) -> Result < LogicalPlan > {
5555 let mut plan = self . bind_table_ref ( & select. from ) ?;
5656
5757 // Resolve scalar function call.
@@ -99,12 +99,12 @@ impl Binder {
9999 Ok ( plan)
100100 }
101101
102- fn bind_table_ref ( & mut self , from : & [ TableWithJoins ] ) -> Result < LogicalSelectPlan > {
102+ fn bind_table_ref ( & mut self , from : & [ TableWithJoins ] ) -> Result < LogicalPlan > {
103103 assert ! ( from. len( ) < 2 , "not support yet." ) ;
104104 if from. is_empty ( ) {
105- return Ok ( LogicalSelectPlan {
106- operator : Arc :: new ( Operator :: Dummy ) ,
107- children : vec ! [ ] ,
105+ return Ok ( LogicalPlan {
106+ operator : Operator :: Dummy ,
107+ childrens : vec ! [ ] ,
108108 } ) ;
109109 }
110110
@@ -120,7 +120,7 @@ impl Binder {
120120 Ok ( plan)
121121 }
122122
123- fn bind_single_table_ref ( & mut self , table : & TableFactor ) -> Result < LogicalSelectPlan > {
123+ fn bind_single_table_ref ( & mut self , table : & TableFactor ) -> Result < LogicalPlan > {
124124 let plan = match table {
125125 TableFactor :: Table { name, alias, .. } => {
126126 let obj_name = name
@@ -201,23 +201,22 @@ impl Binder {
201201 let mut exprs = vec ! [ ] ;
202202 for ref_id in self . context . bind_table . values ( ) . cloned ( ) . collect_vec ( ) {
203203 let table = self . context . catalog . get_table ( ref_id) . unwrap ( ) ;
204- for ( col_id, col) in & table. all_columns ( ) {
205- let column_ref_id = ColumnRefId :: from_table ( ref_id, * col_id) ;
204+ for ( col_id, col) in table. all_columns ( ) {
205+ let column_ref_id = ColumnRefId :: from_table ( ref_id, col_id) ;
206206 // self.record_regular_table_column(
207207 // &table.name(),
208208 // col.name(),
209209 // *col_id,
210210 // col.desc().clone(),
211211 // );
212- let expr = ScalarExpression :: ColumnRef ( ( * col) . clone ( ) ) ;
213- exprs. push ( expr) ;
212+ exprs. push ( ScalarExpression :: ColumnRef ( col. clone ( ) ) ) ;
214213 }
215214 }
216215
217216 Ok ( exprs)
218217 }
219218
220- fn bind_join ( & mut self , left : LogicalSelectPlan , join : & Join ) -> Result < LogicalSelectPlan > {
219+ fn bind_join ( & mut self , left : LogicalPlan , join : & Join ) -> Result < LogicalPlan > {
221220 let Join {
222221 relation,
223222 join_operator,
@@ -250,9 +249,9 @@ impl Binder {
250249
251250 fn bind_where (
252251 & mut self ,
253- children : LogicalSelectPlan ,
252+ children : LogicalPlan ,
254253 predicate : & Expr ,
255- ) -> Result < LogicalSelectPlan > {
254+ ) -> Result < LogicalPlan > {
256255 Ok ( FilterOperator :: new (
257256 self . bind_expr ( predicate) ?,
258257 children,
@@ -262,46 +261,46 @@ impl Binder {
262261
263262 fn bind_having (
264263 & mut self ,
265- children : LogicalSelectPlan ,
264+ children : LogicalPlan ,
266265 having : ScalarExpression ,
267- ) -> Result < LogicalSelectPlan > {
266+ ) -> Result < LogicalPlan > {
268267 self . validate_having_orderby ( & having) ?;
269268 Ok ( FilterOperator :: new ( having, children, true ) )
270269 }
271270
272271 fn bind_project (
273272 & mut self ,
274- children : LogicalSelectPlan ,
273+ children : LogicalPlan ,
275274 select_list : Vec < ScalarExpression > ,
276- ) -> LogicalSelectPlan {
277- LogicalSelectPlan {
278- operator : Arc :: new ( Operator :: Project ( ProjectOperator {
275+ ) -> LogicalPlan {
276+ LogicalPlan {
277+ operator : Operator :: Project ( ProjectOperator {
279278 columns : select_list,
280- } ) ) ,
281- children : vec ! [ Arc :: new ( children) ] ,
279+ } ) ,
280+ childrens : vec ! [ children] ,
282281 }
283282 }
284283
285284 fn bind_sort (
286285 & mut self ,
287- children : LogicalSelectPlan ,
286+ children : LogicalPlan ,
288287 sort_fields : Vec < SortField > ,
289- ) -> LogicalSelectPlan {
290- LogicalSelectPlan {
291- operator : Arc :: new ( Operator :: Sort ( SortOperator {
288+ ) -> LogicalPlan {
289+ LogicalPlan {
290+ operator : Operator :: Sort ( SortOperator {
292291 sort_fields,
293292 limit : None ,
294- } ) ) ,
295- children : vec ! [ Arc :: new ( children) ] ,
293+ } ) ,
294+ childrens : vec ! [ children] ,
296295 }
297296 }
298297
299298 fn bind_limit (
300299 & mut self ,
301- children : LogicalSelectPlan ,
300+ children : LogicalPlan ,
302301 limit_expr : & Option < Expr > ,
303302 offset_expr : & Option < Offset > ,
304- ) -> Result < LogicalSelectPlan > {
303+ ) -> Result < LogicalPlan > {
305304 let mut limit = 0 ;
306305 let mut offset = 0 ;
307306 if let Some ( expr) = limit_expr {
0 commit comments