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

Xiening Dai commented on CALCITE-2970:
--------------------------------------

[~hyuan] [~julianhyde] I've updated the PR based on feedback from you. Please 
take a look.

The fix does improve the planning performance significantly. I use 
JDBCTest.testJoinManyWay() as an example, the number of rule firing is reduced 
~1/3.

Before fix -

{noformat}Rules                                                                 
  Attempts           Time (us)
ProjectMergeRule:force_mode                                               
75,853           2,328,906
JoinPushThroughJoinRule:left                                               
5,839             874,298
JoinPushThroughJoinRule:right                                              
5,839               5,529
EnumerableProjectRule(in:NONE,out:ENUMERABLE)                              
2,592             494,787
AggregateProjectMergeRule                                                  
1,722              78,013
AggregatePullUpConstantsRule                                               
1,402              12,073
JoinPushExpressionsRule                                                      
755              32,017
FilterJoinRule:FilterJoinRule:no-filter                                      
755              11,322
ProjectFilterTransposeRule                                                   
366              10,986
EnumerableMergeJoinRule(in:NONE,out:ENUMERABLE)                              
364             489,524
EnumerableJoinRule(in:NONE,out:ENUMERABLE)                                   
364             123,017
JoinCommuteRule                                                              
356             336,175
FilterJoinRule:FilterJoinRule:filter                                          
67             208,296
FilterProjectTransposeRule                                                    
64              26,336
SortRemoveConstantKeysRule                                                    
48               2,499
SortRemoveRule                                                                
48                 913
PruneSortLimit0                                                               
48                  58
EnumerableLimitRule                                                           
48                  23
ReduceExpressionsRule(Filter)                                                 
44              34,105
EnumerableFilterRule(in:NONE,out:ENUMERABLE)                                  
44               9,386
EnumerableAggregateRule(in:NONE,out:ENUMERABLE)                               
37              20,525
AggregateExpandDistinctAggregatesRule                                         
37                  73
ExpandConversionRule                                                          
34              16,408
EnumerableSortRule(in:NONE,out:ENUMERABLE)                                    
25              20,265
BindableTableScanRule                                                          
1                 479
EnumerableTableScanRule(in:NONE,out:ENUMERABLE)                                
1                 258
EnumerableInterpreterRule(in:BINDABLE,out:ENUMERABLE)                          
1                 257
* Total                                                                   
96,754           5,136,528{noformat}

After fix -

{noformat}Rules                                                                 
  Attempts           Time (us)
ProjectMergeRule:force_mode                                               
57,200           2,302,027
EnumerableProjectRule(in:NONE,out:ENUMERABLE)                              
1,898             368,744
AggregateProjectMergeRule                                                  
1,105              60,956
AggregatePullUpConstantsRule                                                 
871               9,786
JoinPushThroughJoinRule:left                                                 
771             138,373
JoinPushThroughJoinRule:right                                                
771              18,638
ProjectFilterTransposeRule                                                   
368              10,672
JoinPushExpressionsRule                                                      
316              17,998
FilterJoinRule:FilterJoinRule:no-filter                                      
316               5,022
EnumerableJoinRule(in:NONE,out:ENUMERABLE)                                   
108              65,576
EnumerableMergeJoinRule(in:NONE,out:ENUMERABLE)                              
108              33,583
JoinCommuteRule                                                              
101              59,368
FilterJoinRule:FilterJoinRule:filter                                          
67             103,464
FilterProjectTransposeRule                                                    
64              27,344
ReduceExpressionsRule(Filter)                                                 
44              28,505
EnumerableFilterRule(in:NONE,out:ENUMERABLE)                                  
44              12,478
EnumerableAggregateRule(in:NONE,out:ENUMERABLE)                               
24               3,295
AggregateExpandDistinctAggregatesRule                                         
24                  41
ExpandConversionRule                                                          
16              12,361
SortRemoveConstantKeysRule                                                    
14                 638
SortRemoveRule                                                                
14                 234
PruneSortLimit0                                                               
14                  11
EnumerableLimitRule                                                           
14                   1
BindableTableScanRule                                                          
1                 522
EnumerableTableScanRule(in:NONE,out:ENUMERABLE)                                
1                 303
EnumerableInterpreterRule(in:BINDABLE,out:ENUMERABLE)                          
1                 216
* Total                                                                   
64,275           3,280,156{noformat}


> Performance issue when enabling abstract converter for EnumerableConvention
> ---------------------------------------------------------------------------
>
>                 Key: CALCITE-2970
>                 URL: https://issues.apache.org/jira/browse/CALCITE-2970
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>            Reporter: Haisheng Yuan
>            Priority: Major
>              Labels: pull-request-available
>          Time Spent: 13.5h
>  Remaining Estimate: 0h
>
> If we enable the use of abstract converter for {{EnumerableConvention}}, by 
> making {{useAbstractConvertersForConversion}} return true, 
> {{JDBCTest.testJoinManyWay}} will not complete.



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

Reply via email to