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.

Reply via email to