Just a little curious, RelFieldTrimmer is used to 'slimmed down' relational expression that projects only the columns required by its consumer. How can it used to do this thing?
-- Best, Wang Yanlin 在 2019-10-12 18:03:33,"XING JIN" <jinxing.co...@gmail.com> 写道: >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. >> >> > > >> >> > >> >> >>