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

Julian Hyde edited comment on CALCITE-5348 at 11/6/22 1:12 AM:
---------------------------------------------------------------

Fixed in 
[d4817ba2|https://github.com/apache/calcite/commit/d4817ba28c354c8512bd213d7c4524c622b12789].
 Thanks for the review, [~shpodg]!


was (Author: julianhyde):
Fixed in 
[d4817ba2|https://github.com/apache/calcite/commit/d4817ba28c354c8512bd213d7c4524c622b12789].

> When translating ORDER BY in OVER, use the session's default null collation 
> (e.g. NULLS LAST)
> ---------------------------------------------------------------------------------------------
>
>                 Key: CALCITE-5348
>                 URL: https://issues.apache.org/jira/browse/CALCITE-5348
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.32.0
>            Reporter: shampoo liu
>            Assignee: Julian Hyde
>            Priority: Major
>             Fix For: 1.33.0
>
>
> The connection configuration  string defaultNullCollation=LOW can't take 
> effect for order by in over clause.  When translating ORDER BY in OVER, 
> Calcite should use the session's default null collation (e.g. NULLS LAST).
> After debug, I found that the  convertSortExpression in 
> SqlToRelConverter.convertOver was changed to bb::sortToRex and the 
> bb::sortToRex didn't read default configuration.
> [https://github.com/apache/calcite/blob/c945b7f49b99538748c871557f6ac80957be2b6e/core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java#L2247]
> Also, The corresponding test case is incorrect at  
> org.apache.calcite.test.SqlToRelConverterTest#testUserDefinedOrderByOver .
> sql :
> {code:java}
> select deptno,rank() over(partition by empno order by deptno) 
>   from emp 
>   order by row_number() over(partition by empno order by deptno) {code}
> correct result
> {code:java}
> LogicalProject(DEPTNO=[$0], EXPR$1=[$1])
>   LogicalSort(sort0=[$2], dir0=[ASC-nulls-first])
>     LogicalProject(DEPTNO=[$7], EXPR$1=[RANK() OVER (PARTITION BY $0 ORDER BY 
> $7 NULLS FIRST)], EXPR$2=[ROW_NUMBER() OVER (PARTITION BY $0 ORDER BY $7 
> NULLS FIRST)])
>       LogicalTableScan(table=[[CATALOG, SALES, EMP]]) {code}
> but was 
> {code:java}
> LogicalProject(DEPTNO=[$0], EXPR$1=[$1])
>   LogicalSort(sort0=[$2], dir0=[ASC-nulls-first])
>     LogicalProject(DEPTNO=[$7], EXPR$1=[RANK() OVER (PARTITION BY $0 ORDER BY 
> $7)], EXPR$2=[ROW_NUMBER() OVER (PARTITION BY $0 ORDER BY $7)])
>       LogicalTableScan(table=[[CATALOG, SALES, EMP]]) {code}



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

Reply via email to