@@ -921,6 +921,35 @@ mod tests {
921921 Ok ( ( ) )
922922 }
923923
924+ #[ cfg( feature = "spill" ) ]
925+ #[ test]
926+ fn recursive_operators_visit_display_and_build ( ) -> Result < ( ) , DatabaseError > {
927+ let table_arena = TableArenaCell :: default ( ) ;
928+ let mut arena = PlanArena :: new ( & table_arena) ;
929+ let value = column ( "value" , & mut arena) ;
930+ let depth = column ( "depth" , & mut arena) ;
931+ let schema = vec ! [ value, depth] ;
932+
933+ let recursive_cte = Operator :: RecursiveCte ( RecursiveCteOperator {
934+ schema_ref : schema. clone ( ) ,
935+ } ) ;
936+ assert_eq ! ( referenced_columns( & recursive_cte, & mut arena) ?, schema) ;
937+ assert_eq ! ( recursive_cte. to_string( ) , "Recursive CTE: [#0, #1]" ) ;
938+
939+ let recursive_scan = Operator :: RecursiveScan ( RecursiveScanOperator {
940+ schema_ref : schema. clone ( ) ,
941+ } ) ;
942+ assert_eq ! ( referenced_columns( & recursive_scan, & mut arena) ?, schema) ;
943+ assert_eq ! ( recursive_scan. to_string( ) , "Recursive Scan: [#0, #1]" ) ;
944+
945+ let anchor = LogicalPlan :: new ( Operator :: ShowTable , Childrens :: None ) ;
946+ let recursive = LogicalPlan :: new ( Operator :: ShowView , Childrens :: None ) ;
947+ let plan = RecursiveCteOperator :: build ( schema, anchor, recursive) ;
948+ assert ! ( matches!( plan. operator, Operator :: RecursiveCte ( _) ) ) ;
949+ assert ! ( matches!( * plan. childrens, Childrens :: Twins { .. } ) ) ;
950+ Ok ( ( ) )
951+ }
952+
924953 #[ test]
925954 fn mark_apply_constructors_and_accessors_cover_quantified_paths ( ) {
926955 let left = LogicalPlan :: new ( Operator :: ShowTable , Childrens :: None ) ;
0 commit comments