[ 
https://issues.apache.org/jira/browse/DERBY-3764?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12613952#action_12613952
 ] 

Knut Anders Hatlen commented on DERBY-3764:
-------------------------------------------

Not sure if it is the correct fix, but adding a call to 
resultColumns.removeGeneratedGroupingColumns() after cloning the result column 
list from the left result set in SetOperatorNode.buildRCL() seems to fix the 
problem. I think it makes sense to remove the non-visible columns from the 
cloned RCL at that point, since they are only meaningful for the left result 
set, not for the union result set. But I'm not sure exactly what's meant by a 
generated grouping column, so it's not quite clear to me if that's the correct 
method to call.

If it is the correct approach to trim away the non-visible columns from the 
clone at that point in the code, I think the already committed partial fix is 
unnecessary, but it shouldn't do any harm.

> Union Query fail on Derby 10.4.1.3
> ----------------------------------
>
>                 Key: DERBY-3764
>                 URL: https://issues.apache.org/jira/browse/DERBY-3764
>             Project: Derby
>          Issue Type: Bug
>    Affects Versions: 10.3.1.4, 10.4.1.3
>         Environment: Windows XP SP2, NetBeans 6.1 (IDE), Pentium 2 Core 512 
> Ram, Java 1.6.0_05
>            Reporter: Heleno da Silva Alves
>            Assignee: Knut Anders Hatlen
>         Attachments: CONSTAS_REMESSA.sql, d3764-1a.diff, 
> database_test.10.0.zip, database_test.10.3.zip, database_test.10.4.zip, 
> export_contas_remessas.exp
>
>
>     Running a Query on Derby 10.4.1.3 and 10.3.1.4 I got this error message: 
> Error code 0, SQL state XJ001: Java Exception: '4 >= 4: 
> java.lang.ArrayIndexOutOfBoundsException'.
>     After throw this exception the database shutdown and lost the connection.
>     I'm updating an application from a previous version of Derby 
> (Bundle-Version: 10.0.2000001 From derby.jar Manifest) so this query works 
> fine in version 10.0.
> The Query:
> select 0 vlr_proc_anterior
>              , 0 vlr_proc_atual
>              , sum(vlr_contabil + vlr_ajuste) disp_financeira    
>              from contas_remessa rec
>              where cd_tipo = 1105 and cd_conta = 4
>              group by rec.cd_conta, rec.ds_conta
>              union
>              select case when cd_tipo = 170 then sum(vlr_contabil) + 
> sum(vlr_ajuste) else 0 end vlr_proc_anterior
>                   , case when cd_tipo = 175 then sum(vlr_contabil) + 
> sum(vlr_ajuste) else 0 end vlr_proc_atual
>                   , 0 disp_financeira
>                   from contas_remessa where cd_tipo in (170, 175) and status 
> = 'S'                       
>                   group by cd_tipo
> The deby log entry:
> ----------------------------------------------------------------
> 2008-07-07 14:44:51.282 GMT:
>  Booting Derby version The Apache Software Foundation - Apache Derby - 
> 10.3.1.4 - (561794): instance c013800d-011a-fdfb-6fa4-00003451d386
> on database directory C:\PAD\database  
> Database Class Loader started - derby.database.classpath=''
> 2008-07-07 14:46:40.506 GMT Thread[SQLExecution,1,system] (XID = 3441038), 
> (SESSIONID = 0), (DATABASE = C:\PAD\database), (DRDAID = null), Cleanup 
> action starting
> 2008-07-07 14:46:40.506 GMT Thread[SQLExecution,1,system] (XID = 3441038), 
> (SESSIONID = 0), (DATABASE = C:\PAD\database), (DRDAID = null), Failed 
> Statement is: select 0 vlr_proc_anterior
>              , 0 vlr_proc_atual
>              , sum(vlr_contabil + vlr_ajuste) disp_financeira    
>              from contas_remessa rec
>              where cd_tipo = 1105 and cd_conta = 4
>              group by rec.cd_conta, rec.ds_conta
>              union
>              select case when cd_tipo = 170 then sum(vlr_contabil) + 
> sum(vlr_ajuste) else 0 end vlr_proc_anterior
>                   , case when cd_tipo = 175 then sum(vlr_contabil) + 
> sum(vlr_ajuste) else 0 end vlr_proc_atual
>                   , 0 disp_financeira
>                   from contas_remessa where cd_tipo in (170, 175) and status 
> = 'S'                       
>                   group by cd_tipo
> java.lang.ArrayIndexOutOfBoundsException: 4 >= 4
>       at java.util.Vector.elementAt(Vector.java:427)
>       at 
> org.apache.derby.impl.sql.compile.QueryTreeNodeVector.elementAt(Unknown 
> Source)
>       at 
> org.apache.derby.impl.sql.compile.ResultColumnList.setUnionResultExpression(Unknown
>  Source)
>       at org.apache.derby.impl.sql.compile.SetOperatorNode.buildRCL(Unknown 
> Source)
>       at 
> org.apache.derby.impl.sql.compile.SetOperatorNode.bindResultColumns(Unknown 
> Source)
>       at org.apache.derby.impl.sql.compile.CursorNode.bindStatement(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.netbeans.modules.db.sql.execute.SQLExecuteHelper.execute(SQLExecuteHelper.java:114)
>       at 
> org.netbeans.modules.db.sql.loader.SQLEditorSupport$SQLExecutor.run(SQLEditorSupport.java:479)
>       at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:561)
>       at 
> org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:986)
> Cleanup action completed

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