[ http://issues.apache.org/jira/browse/DERBY-176?page=all ]

Daniel John Debrunner resolved DERBY-176.
-----------------------------------------

    Fix Version/s: 10.2.1.0
                   10.3.0.0
       Resolution: Fixed

Changes for DERBY-766 and under this bug ensured that a "Query too complex" 
exception  is thrown if  the resulting generated class will not be loadable by 
the JVM due to exceeding limits.

> Derby throws ERROR XBCM1: Java linkage error thrown during load of generated 
> class org.apache.derby.exe.aced07c066x0102xca87x3319x00004aa5686e1 during 
> execution of large query
> -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-176
>                 URL: http://issues.apache.org/jira/browse/DERBY-176
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.0.2.2, 10.0.2.1, 10.0.2.0, 10.1.1.0
>            Reporter: Kathey Marsden
>         Assigned To: Daniel John Debrunner
>             Fix For: 10.2.1.0, 10.3.0.0
>
>         Attachments: largeCodeGen.java
>
>
> When executing a large query or oather large operations, Derby throws a java 
> linkage exception.
> This is because the generated byte code exceeds the JVM limits for method 
> sizes constant pool entries etc, the amount of code in a conditional etc.  
> The attached repro demonstrates the problem but the problem can also occur 
> for other operations that generate lots of byte code.  The repro is just a 
> new functional test,
> so should be copied to derbyTesting/functionTests/lang/largeCodeGen.java and 
> run like
>  java -Djvmflags=-Xmx512M org.apache.derbyTesting.harness.RunTest 
> lang/largeCodeGen
> When this problem is fixed additional scenarios should be added to this test.
> ERROR XBCM1: Java linkage error thrown during load of 
> generated class org.apache.derby.exe.aced07c066x0102xca87x3319x00004aa5686e1.
>       at 
> org.apache.derby.iapi.error.StandardException.newException(StandardException.java:315)
>       at 
> org.apache.derby.impl.services.reflect.DatabaseClasses.loadGeneratedClass(DatabaseClasses.java:162)
>       at 
> org.apache.derby.impl.services.bytecode.GClass.getGeneratedClass(GClass.java:59)
>       at 
> org.apache.derby.impl.sql.compile.ExpressionClassBuilder.getGeneratedClass(ExpressionClassBuilder.java:920)
>       at 
> org.apache.derby.impl.sql.compile.StatementNode.generate(StatementNode.java:270)
>       at 
> org.apache.derby.impl.sql.GenericStatement.prepMinion(GenericStatement.java:432)
>       at 
> org.apache.derby.impl.sql.GenericStatement.prepare(GenericStatement.java:107)
>       at 
> org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(GenericLanguageConnectionContext.java:688)
>       at 
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(EmbedPreparedStatement.java:118)
>       at 
> org.apache.derby.impl.jdbc.EmbedPreparedStatement20.<init>(EmbedPreparedStatement20.java:82)
>       at 
> org.apache.derby.impl.jdbc.EmbedPreparedStatement30.<init>(EmbedPreparedStatement30.java:62)
>       at 
> org.apache.derby.jdbc.Driver30.newEmbedPreparedStatement(Driver30.java:92)
>       at 
> org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(EmbedConnection.java:675)
>       at 
> org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(EmbedConnection.java:519)
>       at 
> org.apache.derbyTesting.functionTests.tests.lang.largeCodeGen.main(largeCodeGen.java:86)
> Exception in thread "main" 

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to