Hi??

??????FlinkSQL??????????????ExecNodeGraph????????????optimizedRelNodes????


??????????SameRelObjectShuttle Rewrite same rel object to different rel objects.
e.g.
      Join              
         Join
     /    \            
         /    \
 Filter1 Filter2     =>     Filter1 
Filter2
     \   /            
         |      |
      Scan              
    Scan1    Scan2



??????????SubplanReuseShuttle
       Join              
        Join
     /      \          
        /      \
 Filter1  Filter2          Filter1  
Filter2
    |        |        
=>       \     /
 Project1 Project2            Project1
    |        |          
            |
  Scan1    Scan2            
 Scan1

val shuttle = new SameRelObjectShuttle()
val relsWithoutSameObj = optimizedRelNodes.map(_.accept(shuttle))
// reuse subplan
val reusedPlan = SubplanReuser.reuseDuplicatedSubplan(relsWithoutSameObj, 
config)
// convert FlinkPhysicalRel DAG to ExecNodeGraph
val generator = new ExecNodeGraphGenerator()
????????????????????

回复