Assert failure (sane) or Array out of bounds error (insane) when attempting to 
GROUP BY accumulator function
------------------------------------------------------------------------------------------------------------

                 Key: DERBY-4402
                 URL: https://issues.apache.org/jira/browse/DERBY-4402
             Project: Derby
          Issue Type: Bug
          Components: SQL
    Affects Versions: 10.5.3.0
            Reporter: Dag H. Wanvik
            Priority: Minor


The error checking fails to catch this wrong usage (accumulator function sinde 
a group by column expression
:
select sum(i) from t group by (4+sum(j))
:
java.sql.SQLException: Java exception: 'ASSERT FAILED Unexpected Aggregate 
vector generated by Group By clause: 
org.apache.derby.shared.common.sanity.AssertFailure'.
        at 
org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:45)
        at 
org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(SQLExceptionFactory40.java:119)
        at 
org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(SQLExceptionFactory40.java:70)
        ... 16 more
Caused by: org.apache.derby.shared.common.sanity.AssertFailure: ASSERT FAILED 
Unexpected Aggregate vector generated by Group By clause
        at 
org.apache.derby.shared.common.sanity.SanityManager.ASSERT(SanityManager.java:120)
        at 
org.apache.derby.impl.sql.compile.SelectNode.bindExpressions(SelectNode.java:648)
        at 
org.apache.derby.impl.sql.compile.DMLStatementNode.bindExpressions(DMLStatementNode.java:227)
        at 
org.apache.derby.impl.sql.compile.DMLStatementNode.bind(DMLStatementNode.java:140)
        at 
org.apache.derby.impl.sql.compile.CursorNode.bindStatement(CursorNode.java:249)
        at 
org.apache.derby.impl.sql.GenericStatement.prepMinion(GenericStatement.java:319)
        at 
org.apache.derby.impl.sql.GenericStatement.prepare(GenericStatement.java:88)
        at 
org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(GenericLanguageConnectionContext.java:824)
        at 
org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:606)
        ... 9 more

The parser has a check against the top node of a "groupingColumnReference" 
being an aggregator, but fails to "see" inside an expression.
Maybe this check should be made by a visitor in the bind phase instead.


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to