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

Julian Hyde commented on CALCITE-4578:
--------------------------------------

Code changes are always in the code! So if you start thinking about which code 
you changed, you will always conclude that you can't explain it to the user.

Instead think about the impact. If the user writes a many-way UNION or VALUES, 
planning is slow. That's your subject.

> redundant HepPlanner#buildFinalPlan when there's no rule fired in the program
> -----------------------------------------------------------------------------
>
>                 Key: CALCITE-4578
>                 URL: https://issues.apache.org/jira/browse/CALCITE-4578
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>            Reporter: Jiatao Tao
>            Assignee: Jiatao Tao
>            Priority: Major
>         Attachments: image-2021-04-11-17-42-38-595.png
>
>
> Example like that: insert xxx VALUES (1, 'one'), (2, 'two'), (3, 
> 'three')...(10000, 'ten thousand');
> It generates a Union node with 10000 inputs, and the performance is poor, 
> here's the profile:
> !image-2021-04-11-17-42-38-595.png|width=1086,height=240!
> We create a program(HepProgram) to do the union merge, in this case, we only 
> have one union, so the rule is not fired, but it will still build the 
> buildFinalPlan, and AbstractRelNode#explain has performance issue in this 
> case(see the flame graph):
> {code:java}
> public RelNode findBestExp() {
>   assert root != null;
>   executeProgram(mainProgram);
>   // Get rid of everything except what's in the final plan.
>   collectGarbage();
>   return buildFinalPlan(root);
> }
> {code}
> And the union has large inputs, so the performance is poor(in 
> SetOp#replaceInput, we have to recomputeDigest ), we can skip buildFinalPlan 
> if there's no rule fired.
>   
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to