@@ -144,6 +144,13 @@ impl<'a> SQLPlanner<'a> {
144
144
}
145
145
}
146
146
147
+ /// Set `self.current_plan`. Should only be called once per query.
148
+ fn set_plan ( & mut self , plan : LogicalPlanBuilder ) {
149
+ assert ! ( self . current_plan. is_none( ) ) ;
150
+
151
+ self . current_plan = Some ( plan) ;
152
+ }
153
+
147
154
fn update_plan < E > (
148
155
& mut self ,
149
156
f : impl FnOnce ( & LogicalPlanBuilder ) -> Result < LogicalPlanBuilder , E > ,
@@ -672,7 +679,7 @@ impl<'a> SQLPlanner<'a> {
672
679
let relation = from. relation . clone ( ) ;
673
680
let left_plan = self . plan_relation ( & relation) ?;
674
681
let mut left_planner = self . new_with_context ( ) ;
675
- left_planner. current_plan = Some ( left_plan) ;
682
+ left_planner. set_plan ( left_plan) ;
676
683
677
684
for join in & from. joins {
678
685
use sqlparser:: ast:: {
@@ -689,7 +696,7 @@ impl<'a> SQLPlanner<'a> {
689
696
690
697
// construct a planner with the right table to use for expr planning
691
698
let mut right_planner = self . new_with_context ( ) ;
692
- right_planner. current_plan = Some ( right_plan) ;
699
+ right_planner. set_plan ( right_plan) ;
693
700
694
701
let ( join_type, constraint) = match & join. join_operator {
695
702
Inner ( constraint) => ( JoinType :: Inner , constraint) ,
@@ -761,7 +768,7 @@ impl<'a> SQLPlanner<'a> {
761
768
Ok ( left_planner. current_plan . unwrap ( ) )
762
769
}
763
770
764
- /// Plans the FROM clause of a query and populates self.current_relation and self.table_map
771
+ /// Plans the FROM clause of a query and populates ` self.current_relation`.
765
772
/// Should only be called once per query.
766
773
fn plan_from ( & mut self , from : & [ TableWithJoins ] ) -> SQLPlannerResult < ( ) > {
767
774
let plan = if let Some ( plan) = from
@@ -782,10 +789,11 @@ impl<'a> SQLPlanner<'a> {
782
789
{
783
790
plan
784
791
} else {
792
+ // singleton plan for SELECT without FROM
785
793
singleton_plan ( ) ?
786
794
} ;
787
795
788
- self . current_plan = Some ( plan) ;
796
+ self . set_plan ( plan) ;
789
797
790
798
Ok ( ( ) )
791
799
}
0 commit comments