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

Stamatis Zampetakis commented on CALCITE-2970:
----------------------------------------------

Thanks for the analysis [~xndai], [~jinxing6...@126.com]! I also think that 
creating a {{LogicalSort}} is not a very good idea. Going towards this 
direction I think we should reconsider where conversions happen and maybe the 
API of the {{RelTraitDef}}.

Typically when a converter/enforcer operator is introduced it rarely affects 
only one kind of physical properties. For instance, when an {{EnumerableSort}} 
is introduced it affects both convention and collation properties. Similar for 
an {{EnumerableExchange}} (doesn't exist at the moment) or an 
{{EnumerableSortExchange}} (doesn't exist at the moment).

Due to the above I have the impression that conversions shouldn't be part of 
the RelTraitDef API. 

On the other hand the rule introducing a converter/enforcer operator (e.g., the 
{{EnumerableSort}}) knows exactly which properties need to match and change. So 
the EnumerableSortRule is applied only on {{RelNode}}s which need to enforce 
the EnumerableConvention and necessarily some collation other than 
{{RelCollations.EMPTY}}. This comes a bit in contrast with what you mentioned 
earlier:
{quote} the framework would need to provide a way to create a physical node 
with given convention not through user rules
{quote}
 I didn't spend much time on this problem so apologies if what I am saying does 
not make sense.

> 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: 1h 20m
>  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