Hi, Stamatis, Danny~ Thanks for explain ~
> "The consumer in the case of P1 is the project which only needs $0, $2, $5, $6 so the trimmer could slim down the scan by projecting only these fields." I think RelFieldTrimmer is already doing this by [1]. But why the final BindableTableScan is not pruned ? I think the answer is that RelFieldTrimmer merges projects when trimming fields for Project: [2][3] > "RelFieldTrimmer can be used to transform the plan P1 to plan P2 and then ProjectTableScanRule can be used to introduce the BindableTableScan." If we wanna go by this approach, shall we avoid the project merging as mentioned in RelFieldTrimmer [2][3] ? Well, as an independent functionality for column pruning, I still suggest ProjectTableScanRule have the the ability to handle such complex scenarios. How do you think? Best, Jin [1] https://github.com/apache/calcite/blob/master/core/src/main/java/org/apache/calcite/sql2rel/RelFieldTrimmer.java#L1054 [2] https://github.com/apache/calcite/blob/master/core/src/main/java/org/apache/calcite/sql2rel/RelFieldTrimmer.java#L416 [3] https://github.com/apache/calcite/blob/master/core/src/main/java/org/apache/calcite/tools/RelBuilder.java#L1327 Danny Chan <yuzhao....@gmail.com> 于2019年10月14日周一 上午9:42写道: > +1, RelFieldTrimmer is the role to trim the unused fields. > > Best, > Danny Chan > 在 2019年10月13日 +0800 AM6:25,dev@calcite.apache.org,写道: > > > > RelFieldTrimmer >