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

Zhen Chen commented on CALCITE-7047:
------------------------------------

I carefully read the implementation of EnumerableLimitSortRule, and the 
description says
{code:java}
Rule to convert an {@link EnumerableLimit} of on {@link EnumerableSort} into an 
{@link EnumerableLimitSort}. {code}
 And there are corresponding conditional restrictions when matching.
{code:java}
    Config DEFAULT =
        ImmutableEnumerableLimitSortRule.Config.of()
            .withOperandSupplier(b0 ->
                b0.operand(LogicalSort.class)
                    .predicate(sort -> sort.fetch != null)
                    .anyInputs());{code}
It is not a replacement, but a supplement. There should be a missing judgment 
condition.
{code:java}
!sort.getSortExps().isEmpty() {code}

> Improve Volcano planner selection of sort conversion rules
> ----------------------------------------------------------
>
>                 Key: CALCITE-7047
>                 URL: https://issues.apache.org/jira/browse/CALCITE-7047
>             Project: Calcite
>          Issue Type: Bug
>            Reporter: Zhen Chen
>            Assignee: Zhen Chen
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.41.0
>
>
> In Calcite, there are three operators: {{{}EnumerableLimit{}}}, 
> {{{}EnumerableSort{}}}, and {{{}EnumerableLimitSort{}}}. Therefore, when 
> converting {{LogicalSort}} to an {{Enumerable}} operator, the following logic 
> applies:
>  * If {{limit}} is not null and {{orderby}} is empty in {{{}Sort{}}}, it is 
> converted to {{{}EnumerableLimit{}}}.
>  * If {{limit}} is empty and {{orderby}} is not null in {{{}Sort{}}}, it is 
> converted to {{{}EnumerableSort{}}}.
>  * If both are not empty, it is converted to {{{}EnumerableLimitSort{}}}.
> Currently, the {{EnumerableLimitSortRule}} does not check these two 
> properties and should be updated accordingly.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to