@Haisheng

> Calcite uses Project operator and all kinds of ProjectXXXTranposeRule to 
> prune unused columns.

I also noticed that in most cases Project-related rules took significant
part of the planning time. But I didn't explore this problem yet.

> MEMO group (RelSet) represents logically equivalent expressions. All the 
> expressions in one group should share the same logical properties, e.g. 
> functional dependency, constraint properties etc. But they are not sharing 
> it. Computation is done for each individual operator.

I thought the equivalence of logical properties within groups (RelSets)
are implicit. For example, in RelSet#addInternal it is always verified
that the new added node has the same type as other members of the set.

Anyway I absolutely agree with you that problems with traits
propagation, rules matching and other that you mentioned in the previous
e-mails should be solved in the first place. We need first to make
Volcano optimizer work right and only then make some improvements like
search space pruning.

I would love to join this work to improve Volcano planner. Looking
forward for design doc.


-- 
Kind Regards
Roman Kondakov


On 11.01.2020 11:42, Haisheng Yuan wrote:
> Currently, Calcite uses Project operator and all kinds of 
> ProjectXXXTranposeRule to prune unused columns. Every operator's output 
> columns use index to reference child operators' columns. If there is a 
> Project operator with child operator of a Filter, if we push project down 
> under Filter, we will have Project-Filter-Project-FilterInput. All the newly 
> generated relnodes will trigger rule matches. e.g. If we already did 
> ReduceExpressionRule on filter, but due to the new filter RexCall's input ref 
> index changed, we have to apply ReduceExpressionRule on the new filter again, 
> even there is nothing can be reduced. Similarly new operator transpose/merge 
> rule will be triggered. This can trigger a lot of rule matches.
> 
> MEMO group (RelSet) represents logically equivalent expressions. All the 
> expressions in one group should share the same logical properties, e.g. 
> functional dependency, constraint properties etc. But they are not sharing 
> it. Computation is done for each individual operator.
> 
> Without resolving those issue, space pruning won't help much.
> 
> There are a lot of room for improvement. Hope the community can join the 
> effort to make Calcite better. 
> 
> - Haisheng
> 
> ------------------------------------------------------------------
> 发件人:Roman Kondakov<kondako...@mail.ru.INVALID>
> 日 期:2020年01月10日 19:39:51
> 收件人:<dev@calcite.apache.org>
> 主 题:Re: [DISCUSS] Proposal to add API to force rules matching specific rels
> 
> @Haisheng, could you please clarify what you mean by these points?
> 
>> - the poor-design of column pruning, 
>> - lack of group properties etc.
> 
> I guess I'm not aware of these problems.
> 

Reply via email to