[ 
https://issues.apache.org/jira/browse/DERBY-3303?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

A B updated DERBY-3303:
-----------------------

    Attachment: d3303_v1.patch

>From what I could gather the failures mentioned in my previous comment were 
>caused by two different problems, but both come down to the mistreatment (esp. 
>ignoring) of columns in a ResultColumnList that have been "pulled up" for 
>GROUP BY processing.

I'm attaching a patch, d3303_v1.patch, which makes two very small changes to 
OrderByColumn.java to account for "pulled" GROUP BY columns.  With this patch 
applied all of the queries posted in my previous comment run as expected.

I also ran derbyall and suites.All with ibm142 and they ran cleanly.

I _think_ this constitutes a complete fix for the issue, but I am not all that 
familiar with the GROUP BY and ORDER BY column "pulling" logic that exists in 
Derby.  I've skimmed through the relevant code for reviews but have never 
actually changed it myself.  So if anyone out there can double-check the 
change, that would be great.  It's only two lines of code change plus some 
additional comments, so it should in theory be quick...

> ArrayIndexOutOfBoundsException at MergeSort.compare
> ---------------------------------------------------
>
>                 Key: DERBY-3303
>                 URL: https://issues.apache.org/jira/browse/DERBY-3303
>             Project: Derby
>          Issue Type: Bug
>    Affects Versions: 10.3.2.1, 10.4.0.0
>         Environment: ------------------ Java Information ------------------
> Java Version:    1.6.0_03
> Java Vendor:     Sun Microsystems Inc.
> Java home:       D:\Programs\Java\jre1.6.0_03
> Java classpath:  derbytools.jar
> OS name:         Windows XP
> OS architecture: x86
> OS version:      5.1
> Java user name:  Donatas
> Java user home:  C:\Documents and Settings\Donatas
> Java user dir:   d:\java\derby-10.3.2.1\lib
> java.specification.name: Java Platform API Specification
> java.specification.version: 1.6
> --------- Derby Information --------
> JRE - JDBC: Java SE 6 - JDBC 4.0
> [D:\java\derby-10.3.2.1\lib\derbytools.jar] 10.3.2.1 - (599110)
> ------------------------------------------------------
> ----------------- Locale Information -----------------
> ------------------------------------------------------
>            Reporter: Donatas Ciuksys
>            Priority: Blocker
>         Attachments: d3303_v1.patch, db.zip, ddl.sql
>
>
> Derby throws ArrayIndexOutOfBoundsException  when I try to execute SQL query 
> shown below.
> This is a regression, since Derby 10.2.2.0 executes this query without 
> problems.
> Attached are DDL statements to create DB tables, and database itself (with 
> data).
> 2008-01-08 12:32:34.461 GMT Thread[DRDAConnThread_5,6,derby.daemons] (XID = 
> 1497), (SESSIONID = 0), (DATABASE = InventorizacijaDB), (DRDAID = 
> NF000001.G46A-666250070078662256{1}), Failed Statement is: select 
> MAX(preke0_.BARKODAS) as col_0_0_, MAX(preke0_.PAVADINIMAS) as col_1_0_, 
> MAX(preke0_.KIEKIS) as col_2_0_, SUM(irasas1_.FAKTINIS_KIEKIS) as col_3_0_ 
> from PREKE preke0_, IRASAS irasas1_, IRASU_BLOKAS irasubloka2_ where 
> irasas1_.IRASU_BLOKAS=irasubloka2_.ID and 
> preke0_.UNIKALUS_KODAS=irasas1_.UNIKALUS_KODAS and 
> irasubloka2_.INVENTORIZACIJA=? group by irasas1_.UNIKALUS_KODAS order by 
> abs(SUM(irasas1_.FAKTINIS_KIEKIS)-MAX(preke0_.KIEKIS)) DESC with 1 parameters 
> begin parameter #1: 1 :end parameter 
> java.lang.ArrayIndexOutOfBoundsException: 5
>       at org.apache.derby.impl.store.access.sort.MergeSort.compare(Unknown 
> Source)
>       at org.apache.derby.impl.store.access.sort.SortBuffer.insert(Unknown 
> Source)
>       at org.apache.derby.impl.store.access.sort.MergeInserter.insert(Unknown 
> Source)
>       at org.apache.derby.impl.sql.execute.SortResultSet.loadSorter(Unknown 
> Source)
>       at org.apache.derby.impl.sql.execute.SortResultSet.openCore(Unknown 
> Source)
>       at 
> org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.openCore(Unknown 
> Source)
>       at 
> org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.open(Unknown Source)
>       at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown 
> Source)
>       at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown 
> Source)
>       at 
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown 
> Source)
>       at org.apache.derby.impl.jdbc.EmbedPreparedStatement.execute(Unknown 
> Source)
>       at org.apache.derby.impl.drda.DRDAStatement.execute(Unknown Source)
>       at org.apache.derby.impl.drda.DRDAConnThread.processCommands(Unknown 
> Source)
>       at org.apache.derby.impl.drda.DRDAConnThread.run(Unknown Source)

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