Did you read the javadoc for the two ‘project’ methods? Julian
> On Oct 22, 2020, at 1:15 AM, JiaTao Tao <[email protected]> wrote: > > Some rules we use `RelBuilder project(Iterable<? extends RexNode> nodes) `, > sometimes use `RelBuilder project(Iterable<? extends RexNode> nodes, > Iterable<String> > fieldNames)`, and this really makes me confused. > > > Regards! > > Aron Tao > > > JiaTao Tao <[email protected]> 于2020年10月22日周四 下午4:13写道: > >> Thanks, Julian >> One more question is that I can see many >> RelBuilder#project(java.lang.Iterable<? extends >> org.apache.calcite.rex.RexNode>, java.lang.Iterable<java.lang.String>) >> calling in some rules, does this meets the expect, if we don't want to keep >> alias in optimizer. >> >> >> Regards! >> >> Aron Tao >> >> >> Julian Hyde <[email protected]> 于2020年10月22日周四 下午3:29写道: >> >>> See my comments in 1584. I think that answers your question. >>> >>> Julian >>> >>>> On Oct 21, 2020, at 23:35, JiaTao Tao <[email protected]> wrote: >>>> >>>> Hi Danny >>>> Thanks for your reply, can you explain "Calcite only optimize based on >>> the >>>> field input refs, if we always keep the alias, there are many cases that >>>> can not be promoted" a bit? In my mind, alias just field names, doesn't >>>> affect the input refs? >>>> >>>> Regards! >>>> >>>> Aron Tao >>>> >>>> >>>> Danny Chan <[email protected]> 于2020年10月22日周四 上午11:29写道: >>>> >>>>> During planning, Calcite only optimize based on the field input refs, >>> if >>>>> we always keep the alias, there are many cases that can not be >>> promoted. I >>>>> collected some cases that already tracked by the JIRA issue: >>>>> >>>>> [1] https://issues.apache.org/jira/browse/CALCITE-4037 >>>>> [2] https://issues.apache.org/jira/browse/CALCITE-3662 >>>>> [3] https://issues.apache.org/jira/browse/CALCITE-1584 >>>>> >>>>> Best, >>>>> Danny Chan >>>>> 在 2020年10月21日 +0800 PM2:49,JiaTao Tao <[email protected]>,写道: >>>>>> Hi fellows >>>>>> I found in some place, we just call `project(Iterable<? extends >>> RexNode> >>>>>> nodes) `, but this will lose alias, why don't we try to call >>>>>> `project(Iterable<? >>>>>> extends RexNode> nodes, Iterable<String> fieldNames) ` to keep alias? >>>>>> >>>>>> Regards! >>>>>> >>>>>> Aron Tao >>>>> >>> >>
