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

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

Regarding the subject: thanks for making changes, but all of your iterations 
are very, very close to the code. Put yourself in the shoes of the user reading 
the release notes.

Sorry to harp on this, but quality commit messages are very important to the 
quality of this project.

> 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