[ 
https://issues.apache.org/jira/browse/CALCITE-2204?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16385600#comment-16385600
 ] 

LeoWangLZ commented on CALCITE-2204:
------------------------------------

[~julianhyde] In function propagateCostImprovements0, This subset is already in 
the chain being propagated to. This means that the graph is cyclic, and 
therefore the cost of this relational expression - not this subset - must be 
infinite. it may miss the best plan. I think we should change the way of 
propagation. now the algorithm like pre-order, it may use Breadth-first Search.

like
{code:java}
parent21,parent22
    parent11, parent12
        input{code}
now the order of propagation is input->parent11->parent22->parent12.

use BFS, it maybe input->parent11->parent12->parent21->parent22,

and so, it only concern the relNode in RelSubset instead of RelSubset. it will 
no have a cycle in RelSubset, the cost will be propagated normally

> Volcano Planner may not choose the cheapest cost of plan wrongly
> ----------------------------------------------------------------
>
>                 Key: CALCITE-2204
>                 URL: https://issues.apache.org/jira/browse/CALCITE-2204
>             Project: Calcite
>          Issue Type: Bug
>            Reporter: LeoWangLZ
>            Assignee: Julian Hyde
>            Priority: Major
>
> Volcano Planner will propagate the cost improvement to parents that one of 
> the inputs has the best plan. But it not propagate to all parents firstly, it 
> propagate one parent and go to the parent s of parent. In the way, if one 
> parent may propagate to other parent on the same level, and the cost maybe 
> less than others, but when propagate the parent again, it will not propagate 
> because the cost is already calculated, and it's can't be less then the cost 
> of the self.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to