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() ????????????????????