[
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)