Yes, definitely. You can go through the project expression with InputFinder to find all the used columns, create a logical project with those columns, and remap the top project with new column indexes.
On the other hand, instead of creating a new intermidiate pogical project, we can also update ProjectTableScanRule to accept LogicalProject that is not a simple mapping, and do the same task I mentioned above. - Haisheng ------------------------------------------------------------------ 发件人:Rommel Quintanilla<rom...@blazingdb.com> 日 期:2019年10月12日 03:15:31 收件人:<dev@calcite.apache.org> 主 题:[QUESTION] Pushing up evaluations from LogicalProjects Hi, maybe you can help me. I have this portion from a larger logical plan: .. LogicalProject(l_orderkey=[$0], l_suppkey=[$2], *=[*($5, -(1, $6))]) LogicalTableScan(table=[[main, lineitem]]) .. Because the LogicalProject above contains an evaluation, the ProjectTableScanRule can't convert it to a BindableTableScan. I wonder if somehow the evaluation could be pushed up more or less like this: .. LogicalProject(l_orderkey=[$0], l_suppkey=[$1], *=[*($2, -(1, $3))]) LogicalProject(l_orderkey=[$0], l_suppkey=[$2], l_extendedprice=[$5], l_discount=[$6]]) LogicalTableScan(table=[[main, lineitem]]) .. Regards.