[
https://issues.apache.org/jira/browse/CALCITE-5883?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17875289#comment-17875289
]
Julian Hyde commented on CALCITE-5883:
--------------------------------------
I have changed my mind about this. Consider the query
{code:sql}
SELECT sum(x) OVER (ROWS BETWEEN 3 PRECEDING AND 2 PRECEDING)
FROM t {code}
Since there is no {{ORDER BY}} clause, it is nondeterministic. (But queries
with an {{ORDER BY}} clause are nondeterministic also, if the key is not
unique.) Although it is nondeterministic, we know that it evaluates over a
window of one row (except for the first 3 rows, where the window is not yet
full).
In summary, I think we should keep the bounds if the window is {{ROWS}}, even
if there is no {{ORDER BY}}.
> Calcite ignores window frames when there is no ORDER BY clause
> --------------------------------------------------------------
>
> Key: CALCITE-5883
> URL: https://issues.apache.org/jira/browse/CALCITE-5883
> Project: Calcite
> Issue Type: Bug
> Affects Versions: 1.35.0
> Reporter: Itiel Sadeh
> Priority: Major
>
> When specifying window frame without an ORDER BY clause, Calcite will ignore
> it and will generate the frame UNBOUNDED PRECEDING to UNBOUNDED FOLLOWING.
> e.g, calcite will translate
> {code:java}
> SELECT sum(x) over(partition by y ROWS between CURRENT ROW and UNBOUNDED
> FOLLOWING) from t
> {code}
> into
> {code:java}
> SELECT sum(x) over(partition by y RANGE between UNBOUNDED FOLLOWING and
> UNBOUNDED FOLLOWING) from t
> {code}
> There is a comment in the offending code (SqlToRelConverter.java:2207) which
> states that
> ??"without ORDER BY, there must be no bracketing"?? . I've tried to find a
> specification like that in the SQL 2003 standard, but didn't find anything to
> that effect.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)