Thanks for you input.

I think this doesn’t relates to the Volcano theory. I don’t try to separate the 
logical transformation from physical implementation. What I propose is not to 
fire the same transformation rule on physical nodes as those transformation are 
already done on the logic nodes. 

I tested out my patch, and all UTs passed. I can open a PR for that.


> On Oct 28, 2019, at 2:18 PM, Stamatis Zampetakis <zabe...@gmail.com> wrote:
> 
> Hello,
> 
> It is not surprising that by reducing the scope of the rules the
> planning times goes down since we are generating less alternatives.
> 
> Mixing logical with physical optimizations is costly but it is one of the
> big benefits offered by the Volcano framework in contrast with the System-R
> style optimization where logical and physical transformations are
> completely separated.
> 
> Indeed in some cases having the same rule fire for both matching logical
> and physical nodes does not make sense so we could apply some tunings.
> 
> @Xiening: Have you tried running all tests with the modifications you
> mentioned? Aren't we missing any good plans?
> @Haisheng: What do you mean by saying that rules should match logical
> operators only?
> 
> Best,
> Stamatis
> 
> On Mon, Oct 28, 2019 at 8:54 PM Haisheng Yuan <h.y...@alibaba-inc.com>
> wrote:
> 
>> Agree, it is indeed redundant. We had a discussion about this in pull
>> request #1130 [1].
>> 
>> Many of these rules not only match physical operaors, but still generate
>> new logical operators.
>> 
>> IMHO, rules should match logical operators only.
>> 
>> [1] https://github.com/apache/calcite/pull/1130
>> 
>> On 2019/10/28 16:47:55, Xiening Dai wrote:
>>> Hi all,
>>> 
>>> While I was looking at CALCITE-2970, I noticed that some of the rules
>> are fired for both logical and physical nodes. For example,
>> ProjectMergeRule matches Project.class, so it’s fired for LogicalProject.
>> But then after LogicalProject is converted into EnummerableProject, the
>> same rule is fired again for the physical rels. Same for
>> EnumerableLimitRule, SortRemoveConstantKeysRule, etc.
>>> 
>>> This seems to be unnecessary. When ProjectMerge is applied to
>> LogicalProject nodes, we already generate all possible alternatives with
>> merged projects. We just need to convert the LogicalProject into
>> EnumerableProject. There’s no need to merge EnumerableProject again.
>>> 
>>> If I update those rules to only match logical nodes, the planning time
>> of the case in CALCITE-2970 is reduced ~30%.
>>> 
>>> Any thoughts?
>> 
>> 

Reply via email to