Hi! 这是因为我们有配置关闭 subplan reuse 和 source reuse,因此需要先把 plan 拆开,然后再判断是否允许 reuse,如果允许才能合并。
岳晗 <yuehan...@qq.com.invalid> 于2021年11月24日周三 下午3:55写道: > 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() > 目的是啥,谢谢回复。