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

Julian Hyde commented on CALCITE-7761:
--------------------------------------

Claude and I did some investigation and we confirmed that this cannot be 
reproduced in SQL. The SQL parser never provides a null {{{}orderList{}}}:
{code:java}
return new SqlOrderBy(getPos(), e,
      Util.first(orderBy, SqlNodeList.EMPTY),   // <-- EMPTY, never null
      offsetFetch[0], offsetFetch[1]);{code}
Should we disallow null {{{}orderList{}}}? Probably better to automatically 
convert null to {{SqlNodeList.EMPTY}} in the constructor.

Note that {{RelToSqlConverter}} sometimes creates a {{SqlOrderBy}} with null 
{{{}orderList{}}}:
{code:java}
RelBuilder.scan("EMP").limit(0, 5)  -> orderList=null offset=null fetch=5
RelBuilder.scan("EMP").limit(2, -1) -> orderList=null offset=2    
fetch=null{code}

I logged related issues CALCITE-7763 and CALCITE-7764.

> Preserve OFFSET and FETCH when rewriting outer ORDER BY
> -------------------------------------------------------
>
>                 Key: CALCITE-7761
>                 URL: https://issues.apache.org/jira/browse/CALCITE-7761
>             Project: Calcite
>          Issue Type: Improvement
>            Reporter: Kirill Tkalenko
>            Assignee: Kirill Tkalenko
>            Priority: Major
>              Labels: pull-request-available
>
> {{SqlValidatorImpl.performUnconditionalRewrites}} may overwrite {{OFFSET}} or 
> {{FETCH}} previously added to an inner {{SELECT}} during query rewriting. 
> Merge the outer {{SqlOrderBy}} only when the inner {{SELECT}} has no 
> {{{}ORDER BY{}}}, {{{}OFFSET{}}}, or {{{}FETCH{}}}.



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

Reply via email to