[
https://issues.apache.org/jira/browse/DERBY-2016?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Dag H. Wanvik updated DERBY-2016:
---------------------------------
Attachment: DERBY-2016.stat
DERBY-2016.diff
This is a patch which makes the repro work. It is for review only at
this point.
Manish's analysis seems correct to me, and my patch builds on that
observation; I simply let the visitor visit firstNonParameterNode also
(which holds the aggregate function).
Btw, the dumping of the query tree omits to show
firstNonParameterNode, but I added it temporarily and was able to see
that the rewriting had happened after optimization.
I also added a new test to CoalesceTest.
Running regression tests now.
> ArrayIndexOutOfBoundsException for COALESCE with aggregate functions
> --------------------------------------------------------------------
>
> Key: DERBY-2016
> URL: https://issues.apache.org/jira/browse/DERBY-2016
> Project: Derby
> Issue Type: Bug
> Components: SQL
> Affects Versions: 10.2.1.6
> Environment: 1.5.0_06-b05
> Reporter: Christian d'Heureuse
> Attachments: DERBY-2016.diff, DERBY-2016.stat
>
>
> The following statements produce an ArrayIndexOutOfBoundsException:
> CREATE TABLE t1 (
> f1 INTEGER);
> SELECT COALESCE(MAX(f1),0) FROM t1;
> Workaround:
> VALUES COALESCE( (SELECT MAX(f1) FROM t1), 0);
> Stack trace:
> ----------------------------------------------------------------
> 2006-10-29 14:52:53.765 GMT:
> Booting Derby version The Apache Software Foundation - Apache Derby -
> 10.2.1.6 - (452058): instance c013800d-010e-948f-0faa-00000012f418
> on database directory C:\temp_sys\temp_Derby_TestErr_db
> Database Class Loader started - derby.database.classpath=''
> 2006-10-29 14:53:02.906 GMT Thread[main,5,main] (XID = 122), (SESSIONID = 0),
> (DATABASE = c:\temp_sys\temp_Derby_TestErr_db), (DRDAID = null), Cleanup
> action starting
> 2006-10-29 14:53:02.906 GMT Thread[main,5,main] (XID = 122), (SESSIONID = 0),
> (DATABASE = c:\temp_sys\temp_Derby_TestErr_db), (DRDAID = null), Failed
> Statement is: SELECT COALESCE(MAX(f1),0) FROM t1
> java.lang.ArrayIndexOutOfBoundsException: -1
> at org.apache.derby.impl.services.bytecode.BCMethod.popStack(Unknown
> Source)
> at
> org.apache.derby.impl.services.bytecode.BCMethod.callMethod(Unknown Source)
> at
> org.apache.derby.impl.sql.compile.ResultColumnList.generateCore(Unknown
> Source)
> at
> org.apache.derby.impl.sql.compile.ProjectRestrictNode.generateMinion(Unknown
> Source)
> at
> org.apache.derby.impl.sql.compile.ProjectRestrictNode.generate(Unknown Source)
> at
> org.apache.derby.impl.sql.compile.ScrollInsensitiveResultSetNode.generate(Unknown
> Source)
> at org.apache.derby.impl.sql.compile.CursorNode.generate(Unknown
> Source)
> at org.apache.derby.impl.sql.compile.StatementNode.generate(Unknown
> Source)
> at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown
> Source)
> at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source)
> at
> org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown
> Source)
> at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
> at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
> at org.apache.derby.impl.tools.ij.ij.executeImmediate(Unknown Source)
> at org.apache.derby.impl.tools.ij.utilMain.doCatch(Unknown Source)
> at org.apache.derby.impl.tools.ij.utilMain.go(Unknown Source)
> at org.apache.derby.impl.tools.ij.Main.go(Unknown Source)
> at org.apache.derby.impl.tools.ij.Main.mainCore(Unknown Source)
> at org.apache.derby.impl.tools.ij.Main14.main(Unknown Source)
> at org.apache.derby.tools.ij.main(Unknown Source)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.