[ 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