Mihai Budiu created CALCITE-6442:
------------------------------------

             Summary: Validator rejects FILTER in OVER windows
                 Key: CALCITE-6442
                 URL: https://issues.apache.org/jira/browse/CALCITE-6442
             Project: Calcite
          Issue Type: Bug
          Components: core
    Affects Versions: 1.37.0
            Reporter: Mihai Budiu


The Calcite grammar about windows says this:

{code}
windowedAggregateCall:
      agg '(' [ ALL | DISTINCT ] value [, value ]* ')'
      [ RESPECT NULLS | IGNORE NULLS ]
      [ WITHIN GROUP '(' ORDER BY orderItem [, orderItem ]* ')' ]
      [ FILTER '(' WHERE condition ')' ]
      OVER window
{code}

However, the validator rejects the following query:

{code:sql}
SELECT deptno,
       COUNT(DISTINCT deptno) FILTER (WHERE deptno > 10)
OVER win AS agg
FROM emp
WINDOW win AS (PARTITION BY empno)
{code}

with the following error:

{code}
org.apache.calcite.sql.validate.SqlValidatorException: OVER must be applied to 
aggregate function
        at 
java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:67)
        at 
java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
        at 
java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:484)
        at 
org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:507)
        at org.apache.calcite.runtime.Resources$ExInst.ex(Resources.java:601)
        at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:948)
        at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:933)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.newValidationError(SqlValidatorImpl.java:5676)
        at 
org.apache.calcite.sql.SqlOverOperator.validateCall(SqlOverOperator.java:77)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateCall(SqlValidatorImpl.java:6404)
{code}

The easy fix would be to remove this from the grammar.
A harder fix would be to implement support for FILTERs in windows, but I don't 
know how hard that would be.




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

Reply via email to