Sure we can ~ If we use BindableTableScanRule to derive a BindableTableScan from ProjectableFilterableTable, that would happen during a stage of optimization run by RelOptPlanner. But RelFieldTrimmer works right during conversion of Sql to Rel.
Wang Yanlin <1989yanlinw...@163.com> 于2019年10月12日周六 下午5:56写道: > Can we just use Bindables.BINDABLE_TABLE_SCAN_RULE to translate the > table scan to BindableTableScan ? > > > > -- > > Best, > Wang Yanlin > > > > At 2019-10-12 17:12:20, "XING JIN" <jinxing.co...@gmail.com> wrote: > >Hi Stamatis, > >In current code, BindableTableScan is only created by rules of > >ProjectTableScanRule and FilterTableScanRule. I think it's better to keep > >as it is? > >I made a PR for CALCITE-3405 -- > https://github.com/apache/calcite/pull/1500 > > > >The idea of the PR is quite straightforward: > >1. Analyze the parent Project -- collect all the needed fields; > >2. Column pruning by pushing down the needed fields to BindableTableScan; > >3. Adjust RexInputRefs in parent Project > > > >@Haisheng @Stamatis It would be great if you can give a review when you > >have time ~~~ Thanks a lot ! > > > >Best, > >Jin > > > > > >Stamatis Zampetakis <zabe...@gmail.com> 于2019年10月12日周六 下午3:00写道: > > > >> Hi Rommel, > >> > >> I was hoping that this could be done at least by RelFieldTrimmer [1]. > Are > >> you using it already? > >> > >> Best, > >> Stamatis > >> > >> [1] > >> > >> > https://github.com/apache/calcite/blob/master/core/src/main/java/org/apache/calcite/sql2rel/RelFieldTrimmer.java > >> > >> On Sat, Oct 12, 2019 at 6:06 AM XING JIN <jinxing.co...@gmail.com> > wrote: > >> > >> > Filed a JIRA: > >> > https://issues.apache.org/jira/browse/CALCITE-3405 > >> > > >> > Haisheng Yuan <h.y...@alibaba-inc.com> 于2019年10月12日周六 上午4:34写道: > >> > > >> > > 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. > >> > > > >> > > >> >