@@ -43,6 +43,7 @@ use crate::{
4343 Sort , Subquery , SubqueryAlias , TableScan , Union , Unnest , UserDefinedLogicalNode ,
4444 Values , Window ,
4545} ;
46+ use recursive:: recursive;
4647use std:: ops:: Deref ;
4748use std:: sync:: Arc ;
4849
@@ -773,6 +774,7 @@ impl LogicalPlan {
773774
774775 /// Visits a plan similarly to [`Self::visit`], including subqueries that
775776 /// may appear in expressions such as `IN (SELECT ...)`.
777+ #[ recursive]
776778 pub fn visit_with_subqueries < V : for < ' n > TreeNodeVisitor < ' n , Node = Self > > (
777779 & self ,
778780 visitor : & mut V ,
@@ -789,6 +791,7 @@ impl LogicalPlan {
789791 /// Similarly to [`Self::rewrite`], rewrites this node and its inputs using `f`,
790792 /// including subqueries that may appear in expressions such as `IN (SELECT
791793 /// ...)`.
794+ #[ recursive]
792795 pub fn rewrite_with_subqueries < R : TreeNodeRewriter < Node = Self > > (
793796 self ,
794797 rewriter : & mut R ,
@@ -807,6 +810,7 @@ impl LogicalPlan {
807810 & self ,
808811 mut f : F ,
809812 ) -> Result < TreeNodeRecursion > {
813+ #[ recursive]
810814 fn apply_with_subqueries_impl <
811815 F : FnMut ( & LogicalPlan ) -> Result < TreeNodeRecursion > ,
812816 > (
@@ -842,6 +846,7 @@ impl LogicalPlan {
842846 self ,
843847 mut f : F ,
844848 ) -> Result < Transformed < Self > > {
849+ #[ recursive]
845850 fn transform_down_with_subqueries_impl <
846851 F : FnMut ( LogicalPlan ) -> Result < Transformed < LogicalPlan > > ,
847852 > (
@@ -867,6 +872,7 @@ impl LogicalPlan {
867872 self ,
868873 mut f : F ,
869874 ) -> Result < Transformed < Self > > {
875+ #[ recursive]
870876 fn transform_up_with_subqueries_impl <
871877 F : FnMut ( LogicalPlan ) -> Result < Transformed < LogicalPlan > > ,
872878 > (
@@ -894,6 +900,7 @@ impl LogicalPlan {
894900 mut f_down : FD ,
895901 mut f_up : FU ,
896902 ) -> Result < Transformed < Self > > {
903+ #[ recursive]
897904 fn transform_down_up_with_subqueries_impl <
898905 FD : FnMut ( LogicalPlan ) -> Result < Transformed < LogicalPlan > > ,
899906 FU : FnMut ( LogicalPlan ) -> Result < Transformed < LogicalPlan > > ,
0 commit comments