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

Haisheng Yuan commented on CALCITE-2970:
----------------------------------------

RelBuilder should be used for logical operators only, for the following 2 
reasons:
- RelBuilder can be used as an alternative to SQL text, so that we can build a 
query tree without parsing SQL query, in which case only logical tree is needed.
- Calcite has lots of logical transformation rules that are used by many 
different downstream projects. RelBuilder provides a unified way to pave the 
difference between different logical operators across different system so that 
different systems like Flink, Drill can share these transformation rules by 
just providing their own logical RelBuilder. But physical implementation rules 
are not shared, each system has its own implementation rule with its own 
physical operator. I don't see there is a need to have a physical RelBuilder.

It is quite natural for the Convention to participate the enforcement, because 
it knows exactly what physical operator to create for a RelTrait. 

> 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: 12h
>  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