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.
>> >> > >
>> >> >
>> >>
>>

Reply via email to