You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Kathey Marsden (JIRA)" <de...@db.apache.org> on 2005/11/30 14:27:31 UTC

[jira] Created: (DERBY-732) ERROR XBCM1: Java linkage error thrown during load of generated class for query with large number of logical operators and substitution parameters.

ERROR XBCM1: Java linkage error thrown during load of generated class  for  query with large number of logical operators and substitution parameters.
-----------------------------------------------------------------------------------------------------------------------------------------------------

         Key: DERBY-732
         URL: http://issues.apache.org/jira/browse/DERBY-732
     Project: Derby
        Type: Bug
  Components: Services  
    Reporter: Kathey Marsden
     Fix For: 10.2.0.0, 10.1.3.0, 10.1.2.2


The attatched test case with a large number of logical operators in the where clause fails. This is the delete statement causing the problem

 String sql = "DELETE FROM T1 WHERE " +
          "(ITEMID=? AND VERSIONID=?) OR (ITEMID=? AND VERSIONID=?) OR " +
          "(ITEMID=? AND VERSIONID=?) OR (ITEMID=? AND VERSIONID=?) OR " +
          "(ITEMID=? AND VERSIONID=?) OR (ITEMID=? AND VERSIONID=?) OR " +
	  [ repeat line above 90 times]
	"(ITEMID=? AND VERSIONID=?) OR (ITEMID=? AND VERSIONID=?) OR " +
          "(ITEMID=? AND VERSIONID=?)";

To reproduce  create the table with ij and run the TestConnect.java program attached.

connect 'wombat;create=true';
create table t1 (ITEMID int, VERSIONID int);


java TestConnect

The error is different with Sun and IBM JVMS

With Sun 1,4,2 JVM the error is
ERROR XBCM2: Cannot create an instance of generated class org.apache.derby.exe.ac601a400fx0107xdfdfx9bb8x000000156cb80.
        at org.apache.derby.iapi.error.StandardException.newException(StandardException.java:315)
        at org.apache.derby.impl.services.reflect.LoadedGeneratedClass.newInstance(LoadedGeneratedClass.java:83)
        at org.apache.derby.impl.services.reflect.ReflectGeneratedClass.newInstance(ReflectGeneratedClass.java:59)
        at org.apache.derby.impl.sql.GenericActivationHolder.<init>(GenericActivationHolder.java:121)
        at org.apache.derby.impl.sql.GenericPreparedStatement.getActivation(GenericPreparedStatement.java:233)
        at org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(EmbedPreparedStatement.java:123)
        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:678)
        at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(EmbedConnection.java:522)
        at TestConnect.main(TestConnect.java:119)




With IBM 1.4.2 it gives a linkage error

Exception in thread "main" ERROR XBCM1: Java linkage error thrown during load of generated class org.apache.derby.exe.ac601a400fx0107xdfe4xf35ax000000267c780.
        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:923)
        at org.apache.derby.impl.sql.compile.StatementNode.generate(StatementNode.java:267)
        at org.apache.derby.impl.sql.GenericStatement.prepMinion(GenericStatement.java:472)
        at org.apache.derby.impl.sql.GenericStatement.prepare(GenericStatement.java:110)
        at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(GenericLanguageConnectionContext.java:704)
        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:678)
        at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(EmbedConnection.java:522)
        at TestConnect.main(TestConnect.java:119)
$


The query itself is really not that large or complex but the entire where clause goes into a single method. Dumping the class with derby.debug.true=DumpClassFile shows that the  very large method e1()  is the source of the trouble.


$ java org.apache.derby.exe.ac601a400fx0107xdf9bx1ce4x000000156ed80
Exception in thread "main" java.lang.VerifyError: (class: org/apache/derby/exe/ac601a400fx0107xdf9bx1ce4x000000156ed80, method: e1 signature: ()Ljava/lang/Object;) Illegal target of jump or branch





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


[jira] Resolved: (DERBY-732) ERROR XBCM1: Java linkage error thrown during load of generated class for query with large number of logical operators and substitution parameters.

Posted by "Kathey Marsden (JIRA)" <de...@db.apache.org>.
     [ http://issues.apache.org/jira/browse/DERBY-732?page=all ]
     
Kathey Marsden resolved DERBY-732:
----------------------------------

    Fix Version:     (was: 10.1.3.0)
                     (was: 10.1.2.2)
     Resolution: Fixed
      Assign To: Daniel John Debrunner

All subtasks are complete and the original query now runs.
Of course there is still an upper bound on the size of the query,  but a new issue can be filed for additional work and associated with DERBY-176

> ERROR XBCM1: Java linkage error thrown during load of generated class  for  query with large number of logical operators and substitution parameters.
> -----------------------------------------------------------------------------------------------------------------------------------------------------
>
>          Key: DERBY-732
>          URL: http://issues.apache.org/jira/browse/DERBY-732
>      Project: Derby
>         Type: Bug
>   Components: Services
>     Reporter: Kathey Marsden
>     Assignee: Daniel John Debrunner
>      Fix For: 10.2.0.0
>  Attachments: TestConnect.java, clss.txt
>
> The attatched test case with a large number of logical operators in the where clause fails. This is the delete statement causing the problem
>  String sql = "DELETE FROM T1 WHERE " +
>           "(ITEMID=? AND VERSIONID=?) OR (ITEMID=? AND VERSIONID=?) OR " +
>           "(ITEMID=? AND VERSIONID=?) OR (ITEMID=? AND VERSIONID=?) OR " +
>           "(ITEMID=? AND VERSIONID=?) OR (ITEMID=? AND VERSIONID=?) OR " +
> 	  [ repeat line above 90 times]
> 	"(ITEMID=? AND VERSIONID=?) OR (ITEMID=? AND VERSIONID=?) OR " +
>           "(ITEMID=? AND VERSIONID=?)";
> To reproduce  create the table with ij and run the TestConnect.java program attached.
> connect 'wombat;create=true';
> create table t1 (ITEMID int, VERSIONID int);
> java TestConnect
> The error is different with Sun and IBM JVMS
> With Sun 1,4,2 JVM the error is
> ERROR XBCM2: Cannot create an instance of generated class org.apache.derby.exe.ac601a400fx0107xdfdfx9bb8x000000156cb80.
>         at org.apache.derby.iapi.error.StandardException.newException(StandardException.java:315)
>         at org.apache.derby.impl.services.reflect.LoadedGeneratedClass.newInstance(LoadedGeneratedClass.java:83)
>         at org.apache.derby.impl.services.reflect.ReflectGeneratedClass.newInstance(ReflectGeneratedClass.java:59)
>         at org.apache.derby.impl.sql.GenericActivationHolder.<init>(GenericActivationHolder.java:121)
>         at org.apache.derby.impl.sql.GenericPreparedStatement.getActivation(GenericPreparedStatement.java:233)
>         at org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(EmbedPreparedStatement.java:123)
>         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:678)
>         at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(EmbedConnection.java:522)
>         at TestConnect.main(TestConnect.java:119)
> With IBM 1.4.2 it gives a linkage error
> Exception in thread "main" ERROR XBCM1: Java linkage error thrown during load of generated class org.apache.derby.exe.ac601a400fx0107xdfe4xf35ax000000267c780.
>         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:923)
>         at org.apache.derby.impl.sql.compile.StatementNode.generate(StatementNode.java:267)
>         at org.apache.derby.impl.sql.GenericStatement.prepMinion(GenericStatement.java:472)
>         at org.apache.derby.impl.sql.GenericStatement.prepare(GenericStatement.java:110)
>         at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(GenericLanguageConnectionContext.java:704)
>         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:678)
>         at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(EmbedConnection.java:522)
>         at TestConnect.main(TestConnect.java:119)
> $
> The query itself is really not that large or complex but the entire where clause goes into a single method. Dumping the class with derby.debug.true=DumpClassFile shows that the  very large method e1()  is the source of the trouble.
> $ java org.apache.derby.exe.ac601a400fx0107xdf9bx1ce4x000000156ed80
> Exception in thread "main" java.lang.VerifyError: (class: org/apache/derby/exe/ac601a400fx0107xdf9bx1ce4x000000156ed80, method: e1 signature: ()Ljava/lang/Object;) Illegal target of jump or branch

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


[jira] Updated: (DERBY-732) ERROR XBCM1: Java linkage error thrown during load of generated class for query with large number of logical operators and substitution parameters.

Posted by "Daniel John Debrunner (JIRA)" <de...@db.apache.org>.
     [ http://issues.apache.org/jira/browse/DERBY-732?page=all ]

Daniel John Debrunner updated DERBY-732:
----------------------------------------

    Attachment: clss.txt

Javap dump of generated class file for the SQL  statement

> ERROR XBCM1: Java linkage error thrown during load of generated class  for  query with large number of logical operators and substitution parameters.
> -----------------------------------------------------------------------------------------------------------------------------------------------------
>
>          Key: DERBY-732
>          URL: http://issues.apache.org/jira/browse/DERBY-732
>      Project: Derby
>         Type: Bug
>   Components: Services
>     Reporter: Kathey Marsden
>      Fix For: 10.2.0.0, 10.1.3.0, 10.1.2.2
>  Attachments: TestConnect.java, clss.txt
>
> The attatched test case with a large number of logical operators in the where clause fails. This is the delete statement causing the problem
>  String sql = "DELETE FROM T1 WHERE " +
>           "(ITEMID=? AND VERSIONID=?) OR (ITEMID=? AND VERSIONID=?) OR " +
>           "(ITEMID=? AND VERSIONID=?) OR (ITEMID=? AND VERSIONID=?) OR " +
>           "(ITEMID=? AND VERSIONID=?) OR (ITEMID=? AND VERSIONID=?) OR " +
> 	  [ repeat line above 90 times]
> 	"(ITEMID=? AND VERSIONID=?) OR (ITEMID=? AND VERSIONID=?) OR " +
>           "(ITEMID=? AND VERSIONID=?)";
> To reproduce  create the table with ij and run the TestConnect.java program attached.
> connect 'wombat;create=true';
> create table t1 (ITEMID int, VERSIONID int);
> java TestConnect
> The error is different with Sun and IBM JVMS
> With Sun 1,4,2 JVM the error is
> ERROR XBCM2: Cannot create an instance of generated class org.apache.derby.exe.ac601a400fx0107xdfdfx9bb8x000000156cb80.
>         at org.apache.derby.iapi.error.StandardException.newException(StandardException.java:315)
>         at org.apache.derby.impl.services.reflect.LoadedGeneratedClass.newInstance(LoadedGeneratedClass.java:83)
>         at org.apache.derby.impl.services.reflect.ReflectGeneratedClass.newInstance(ReflectGeneratedClass.java:59)
>         at org.apache.derby.impl.sql.GenericActivationHolder.<init>(GenericActivationHolder.java:121)
>         at org.apache.derby.impl.sql.GenericPreparedStatement.getActivation(GenericPreparedStatement.java:233)
>         at org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(EmbedPreparedStatement.java:123)
>         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:678)
>         at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(EmbedConnection.java:522)
>         at TestConnect.main(TestConnect.java:119)
> With IBM 1.4.2 it gives a linkage error
> Exception in thread "main" ERROR XBCM1: Java linkage error thrown during load of generated class org.apache.derby.exe.ac601a400fx0107xdfe4xf35ax000000267c780.
>         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:923)
>         at org.apache.derby.impl.sql.compile.StatementNode.generate(StatementNode.java:267)
>         at org.apache.derby.impl.sql.GenericStatement.prepMinion(GenericStatement.java:472)
>         at org.apache.derby.impl.sql.GenericStatement.prepare(GenericStatement.java:110)
>         at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(GenericLanguageConnectionContext.java:704)
>         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:678)
>         at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(EmbedConnection.java:522)
>         at TestConnect.main(TestConnect.java:119)
> $
> The query itself is really not that large or complex but the entire where clause goes into a single method. Dumping the class with derby.debug.true=DumpClassFile shows that the  very large method e1()  is the source of the trouble.
> $ java org.apache.derby.exe.ac601a400fx0107xdf9bx1ce4x000000156ed80
> Exception in thread "main" java.lang.VerifyError: (class: org/apache/derby/exe/ac601a400fx0107xdf9bx1ce4x000000156ed80, method: e1 signature: ()Ljava/lang/Object;) Illegal target of jump or branch

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


[jira] Commented: (DERBY-732) ERROR XBCM1: Java linkage error thrown during load of generated class for query with large number of logical operators and substitution parameters.

Posted by "Daniel John Debrunner (JIRA)" <de...@db.apache.org>.
    [ http://issues.apache.org/jira/browse/DERBY-732?page=comments#action_12359079 ] 

Daniel John Debrunner commented on DERBY-732:
---------------------------------------------

The expression method e1() contains a possibility for code reduction. There are some checkcasts() that could be removed after a getParameter:

E.g.

   2508:	invokeinterface	#123,  2; //InterfaceMethod org/apache/derby/iapi/sql/ParameterValueSet.getParameter:(I)Lorg/apache/derby/iapi/types/DataValueDescriptor;
   2513:	checkcast	#125; //class NumberDataValue
   2516:	checkcast	#127; //class DataValueDescriptor
   2519:	dup
   2520:	checkcast	#127; //class DataValueDescriptor


The one at 2516 is not required because NumberDataValue is a DataValueDescriptor.

The one at 2520 is not required because a dup of a DataValueDescriptor is still a DataValueDescriptor :-)

These casts are most likely to set up for method calls further down the stack, and since the method calls probably come from different query tree nodes and there's no interaction to resolve these issues.

The byte code compiler could potentially spot some, but it doesn't load classes to determine type relationships. Mainly because the type may not be available for a routine (procedure/function) and the compile needs to complete, even when classes cannot be loaded.

It could spot check casts where the class names are identical. I'll enter a sub-task for this one.

> ERROR XBCM1: Java linkage error thrown during load of generated class  for  query with large number of logical operators and substitution parameters.
> -----------------------------------------------------------------------------------------------------------------------------------------------------
>
>          Key: DERBY-732
>          URL: http://issues.apache.org/jira/browse/DERBY-732
>      Project: Derby
>         Type: Bug
>   Components: Services
>     Reporter: Kathey Marsden
>      Fix For: 10.2.0.0, 10.1.3.0, 10.1.2.2
>  Attachments: TestConnect.java
>
> The attatched test case with a large number of logical operators in the where clause fails. This is the delete statement causing the problem
>  String sql = "DELETE FROM T1 WHERE " +
>           "(ITEMID=? AND VERSIONID=?) OR (ITEMID=? AND VERSIONID=?) OR " +
>           "(ITEMID=? AND VERSIONID=?) OR (ITEMID=? AND VERSIONID=?) OR " +
>           "(ITEMID=? AND VERSIONID=?) OR (ITEMID=? AND VERSIONID=?) OR " +
> 	  [ repeat line above 90 times]
> 	"(ITEMID=? AND VERSIONID=?) OR (ITEMID=? AND VERSIONID=?) OR " +
>           "(ITEMID=? AND VERSIONID=?)";
> To reproduce  create the table with ij and run the TestConnect.java program attached.
> connect 'wombat;create=true';
> create table t1 (ITEMID int, VERSIONID int);
> java TestConnect
> The error is different with Sun and IBM JVMS
> With Sun 1,4,2 JVM the error is
> ERROR XBCM2: Cannot create an instance of generated class org.apache.derby.exe.ac601a400fx0107xdfdfx9bb8x000000156cb80.
>         at org.apache.derby.iapi.error.StandardException.newException(StandardException.java:315)
>         at org.apache.derby.impl.services.reflect.LoadedGeneratedClass.newInstance(LoadedGeneratedClass.java:83)
>         at org.apache.derby.impl.services.reflect.ReflectGeneratedClass.newInstance(ReflectGeneratedClass.java:59)
>         at org.apache.derby.impl.sql.GenericActivationHolder.<init>(GenericActivationHolder.java:121)
>         at org.apache.derby.impl.sql.GenericPreparedStatement.getActivation(GenericPreparedStatement.java:233)
>         at org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(EmbedPreparedStatement.java:123)
>         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:678)
>         at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(EmbedConnection.java:522)
>         at TestConnect.main(TestConnect.java:119)
> With IBM 1.4.2 it gives a linkage error
> Exception in thread "main" ERROR XBCM1: Java linkage error thrown during load of generated class org.apache.derby.exe.ac601a400fx0107xdfe4xf35ax000000267c780.
>         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:923)
>         at org.apache.derby.impl.sql.compile.StatementNode.generate(StatementNode.java:267)
>         at org.apache.derby.impl.sql.GenericStatement.prepMinion(GenericStatement.java:472)
>         at org.apache.derby.impl.sql.GenericStatement.prepare(GenericStatement.java:110)
>         at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(GenericLanguageConnectionContext.java:704)
>         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:678)
>         at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(EmbedConnection.java:522)
>         at TestConnect.main(TestConnect.java:119)
> $
> The query itself is really not that large or complex but the entire where clause goes into a single method. Dumping the class with derby.debug.true=DumpClassFile shows that the  very large method e1()  is the source of the trouble.
> $ java org.apache.derby.exe.ac601a400fx0107xdf9bx1ce4x000000156ed80
> Exception in thread "main" java.lang.VerifyError: (class: org/apache/derby/exe/ac601a400fx0107xdf9bx1ce4x000000156ed80, method: e1 signature: ()Ljava/lang/Object;) Illegal target of jump or branch

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


[jira] Commented: (DERBY-732) ERROR XBCM1: Java linkage error thrown during load of generated class for query with large number of logical operators and substitution parameters.

Posted by "Daniel John Debrunner (JIRA)" <de...@db.apache.org>.
    [ http://issues.apache.org/jira/browse/DERBY-732?page=comments#action_12359073 ] 

Daniel John Debrunner commented on DERBY-732:
---------------------------------------------

Looking at the way Derby handles parameters in the generated class I think there is room for improvement, some of which might help this type of query. I think when it was written such large numbers of parameters were not considered, this query has at least 360. Some of the approach has been to generate code for each parameter, thus the amount of generated code and sometimes instance fields in the generated class is linear with the number of parameters.

There are a couple of approaches to fix this, one try to switch from a generate per-parameter into a loop-driven algorithm. This typically means a utility method in the activation or elsewhere to handle the case and the generated or other code calls the utility method. The second is to reduce the amount of code generated per parameter.

I'll enter a couple of sub-tasks for the easy cases I've spotted so f ar


> ERROR XBCM1: Java linkage error thrown during load of generated class  for  query with large number of logical operators and substitution parameters.
> -----------------------------------------------------------------------------------------------------------------------------------------------------
>
>          Key: DERBY-732
>          URL: http://issues.apache.org/jira/browse/DERBY-732
>      Project: Derby
>         Type: Bug
>   Components: Services
>     Reporter: Kathey Marsden
>      Fix For: 10.2.0.0, 10.1.3.0, 10.1.2.2
>  Attachments: TestConnect.java
>
> The attatched test case with a large number of logical operators in the where clause fails. This is the delete statement causing the problem
>  String sql = "DELETE FROM T1 WHERE " +
>           "(ITEMID=? AND VERSIONID=?) OR (ITEMID=? AND VERSIONID=?) OR " +
>           "(ITEMID=? AND VERSIONID=?) OR (ITEMID=? AND VERSIONID=?) OR " +
>           "(ITEMID=? AND VERSIONID=?) OR (ITEMID=? AND VERSIONID=?) OR " +
> 	  [ repeat line above 90 times]
> 	"(ITEMID=? AND VERSIONID=?) OR (ITEMID=? AND VERSIONID=?) OR " +
>           "(ITEMID=? AND VERSIONID=?)";
> To reproduce  create the table with ij and run the TestConnect.java program attached.
> connect 'wombat;create=true';
> create table t1 (ITEMID int, VERSIONID int);
> java TestConnect
> The error is different with Sun and IBM JVMS
> With Sun 1,4,2 JVM the error is
> ERROR XBCM2: Cannot create an instance of generated class org.apache.derby.exe.ac601a400fx0107xdfdfx9bb8x000000156cb80.
>         at org.apache.derby.iapi.error.StandardException.newException(StandardException.java:315)
>         at org.apache.derby.impl.services.reflect.LoadedGeneratedClass.newInstance(LoadedGeneratedClass.java:83)
>         at org.apache.derby.impl.services.reflect.ReflectGeneratedClass.newInstance(ReflectGeneratedClass.java:59)
>         at org.apache.derby.impl.sql.GenericActivationHolder.<init>(GenericActivationHolder.java:121)
>         at org.apache.derby.impl.sql.GenericPreparedStatement.getActivation(GenericPreparedStatement.java:233)
>         at org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(EmbedPreparedStatement.java:123)
>         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:678)
>         at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(EmbedConnection.java:522)
>         at TestConnect.main(TestConnect.java:119)
> With IBM 1.4.2 it gives a linkage error
> Exception in thread "main" ERROR XBCM1: Java linkage error thrown during load of generated class org.apache.derby.exe.ac601a400fx0107xdfe4xf35ax000000267c780.
>         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:923)
>         at org.apache.derby.impl.sql.compile.StatementNode.generate(StatementNode.java:267)
>         at org.apache.derby.impl.sql.GenericStatement.prepMinion(GenericStatement.java:472)
>         at org.apache.derby.impl.sql.GenericStatement.prepare(GenericStatement.java:110)
>         at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(GenericLanguageConnectionContext.java:704)
>         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:678)
>         at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(EmbedConnection.java:522)
>         at TestConnect.main(TestConnect.java:119)
> $
> The query itself is really not that large or complex but the entire where clause goes into a single method. Dumping the class with derby.debug.true=DumpClassFile shows that the  very large method e1()  is the source of the trouble.
> $ java org.apache.derby.exe.ac601a400fx0107xdf9bx1ce4x000000156ed80
> Exception in thread "main" java.lang.VerifyError: (class: org/apache/derby/exe/ac601a400fx0107xdf9bx1ce4x000000156ed80, method: e1 signature: ()Ljava/lang/Object;) Illegal target of jump or branch

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


[jira] Updated: (DERBY-732) ERROR XBCM1: Java linkage error thrown during load of generated class for query with large number of logical operators and substitution parameters.

Posted by "Kathey Marsden (JIRA)" <de...@db.apache.org>.
     [ http://issues.apache.org/jira/browse/DERBY-732?page=all ]

Kathey Marsden updated DERBY-732:
---------------------------------

    Attachment: TestConnect.java

Attached program  reproduces the problem
In ij
connect 'wombat;create=true';
create table t1 (ITEMID int, VERSIONID int);

java TestConnect

> ERROR XBCM1: Java linkage error thrown during load of generated class  for  query with large number of logical operators and substitution parameters.
> -----------------------------------------------------------------------------------------------------------------------------------------------------
>
>          Key: DERBY-732
>          URL: http://issues.apache.org/jira/browse/DERBY-732
>      Project: Derby
>         Type: Bug
>   Components: Services
>     Reporter: Kathey Marsden
>      Fix For: 10.2.0.0, 10.1.3.0, 10.1.2.2
>  Attachments: TestConnect.java
>
> The attatched test case with a large number of logical operators in the where clause fails. This is the delete statement causing the problem
>  String sql = "DELETE FROM T1 WHERE " +
>           "(ITEMID=? AND VERSIONID=?) OR (ITEMID=? AND VERSIONID=?) OR " +
>           "(ITEMID=? AND VERSIONID=?) OR (ITEMID=? AND VERSIONID=?) OR " +
>           "(ITEMID=? AND VERSIONID=?) OR (ITEMID=? AND VERSIONID=?) OR " +
> 	  [ repeat line above 90 times]
> 	"(ITEMID=? AND VERSIONID=?) OR (ITEMID=? AND VERSIONID=?) OR " +
>           "(ITEMID=? AND VERSIONID=?)";
> To reproduce  create the table with ij and run the TestConnect.java program attached.
> connect 'wombat;create=true';
> create table t1 (ITEMID int, VERSIONID int);
> java TestConnect
> The error is different with Sun and IBM JVMS
> With Sun 1,4,2 JVM the error is
> ERROR XBCM2: Cannot create an instance of generated class org.apache.derby.exe.ac601a400fx0107xdfdfx9bb8x000000156cb80.
>         at org.apache.derby.iapi.error.StandardException.newException(StandardException.java:315)
>         at org.apache.derby.impl.services.reflect.LoadedGeneratedClass.newInstance(LoadedGeneratedClass.java:83)
>         at org.apache.derby.impl.services.reflect.ReflectGeneratedClass.newInstance(ReflectGeneratedClass.java:59)
>         at org.apache.derby.impl.sql.GenericActivationHolder.<init>(GenericActivationHolder.java:121)
>         at org.apache.derby.impl.sql.GenericPreparedStatement.getActivation(GenericPreparedStatement.java:233)
>         at org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(EmbedPreparedStatement.java:123)
>         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:678)
>         at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(EmbedConnection.java:522)
>         at TestConnect.main(TestConnect.java:119)
> With IBM 1.4.2 it gives a linkage error
> Exception in thread "main" ERROR XBCM1: Java linkage error thrown during load of generated class org.apache.derby.exe.ac601a400fx0107xdfe4xf35ax000000267c780.
>         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:923)
>         at org.apache.derby.impl.sql.compile.StatementNode.generate(StatementNode.java:267)
>         at org.apache.derby.impl.sql.GenericStatement.prepMinion(GenericStatement.java:472)
>         at org.apache.derby.impl.sql.GenericStatement.prepare(GenericStatement.java:110)
>         at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(GenericLanguageConnectionContext.java:704)
>         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:678)
>         at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(EmbedConnection.java:522)
>         at TestConnect.main(TestConnect.java:119)
> $
> The query itself is really not that large or complex but the entire where clause goes into a single method. Dumping the class with derby.debug.true=DumpClassFile shows that the  very large method e1()  is the source of the trouble.
> $ java org.apache.derby.exe.ac601a400fx0107xdf9bx1ce4x000000156ed80
> Exception in thread "main" java.lang.VerifyError: (class: org/apache/derby/exe/ac601a400fx0107xdf9bx1ce4x000000156ed80, method: e1 signature: ()Ljava/lang/Object;) Illegal target of jump or branch

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


[jira] Closed: (DERBY-732) ERROR XBCM1: Java linkage error thrown during load of generated class for query with large number of logical operators and substitution parameters.

Posted by "Kathey Marsden (JIRA)" <de...@db.apache.org>.
     [ http://issues.apache.org/jira/browse/DERBY-732?page=all ]
     
Kathey Marsden closed DERBY-732:
--------------------------------


> ERROR XBCM1: Java linkage error thrown during load of generated class  for  query with large number of logical operators and substitution parameters.
> -----------------------------------------------------------------------------------------------------------------------------------------------------
>
>          Key: DERBY-732
>          URL: http://issues.apache.org/jira/browse/DERBY-732
>      Project: Derby
>         Type: Bug
>   Components: Services
>     Reporter: Kathey Marsden
>     Assignee: Daniel John Debrunner
>      Fix For: 10.2.0.0
>  Attachments: TestConnect.java, clss.txt
>
> The attatched test case with a large number of logical operators in the where clause fails. This is the delete statement causing the problem
>  String sql = "DELETE FROM T1 WHERE " +
>           "(ITEMID=? AND VERSIONID=?) OR (ITEMID=? AND VERSIONID=?) OR " +
>           "(ITEMID=? AND VERSIONID=?) OR (ITEMID=? AND VERSIONID=?) OR " +
>           "(ITEMID=? AND VERSIONID=?) OR (ITEMID=? AND VERSIONID=?) OR " +
> 	  [ repeat line above 90 times]
> 	"(ITEMID=? AND VERSIONID=?) OR (ITEMID=? AND VERSIONID=?) OR " +
>           "(ITEMID=? AND VERSIONID=?)";
> To reproduce  create the table with ij and run the TestConnect.java program attached.
> connect 'wombat;create=true';
> create table t1 (ITEMID int, VERSIONID int);
> java TestConnect
> The error is different with Sun and IBM JVMS
> With Sun 1,4,2 JVM the error is
> ERROR XBCM2: Cannot create an instance of generated class org.apache.derby.exe.ac601a400fx0107xdfdfx9bb8x000000156cb80.
>         at org.apache.derby.iapi.error.StandardException.newException(StandardException.java:315)
>         at org.apache.derby.impl.services.reflect.LoadedGeneratedClass.newInstance(LoadedGeneratedClass.java:83)
>         at org.apache.derby.impl.services.reflect.ReflectGeneratedClass.newInstance(ReflectGeneratedClass.java:59)
>         at org.apache.derby.impl.sql.GenericActivationHolder.<init>(GenericActivationHolder.java:121)
>         at org.apache.derby.impl.sql.GenericPreparedStatement.getActivation(GenericPreparedStatement.java:233)
>         at org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(EmbedPreparedStatement.java:123)
>         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:678)
>         at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(EmbedConnection.java:522)
>         at TestConnect.main(TestConnect.java:119)
> With IBM 1.4.2 it gives a linkage error
> Exception in thread "main" ERROR XBCM1: Java linkage error thrown during load of generated class org.apache.derby.exe.ac601a400fx0107xdfe4xf35ax000000267c780.
>         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:923)
>         at org.apache.derby.impl.sql.compile.StatementNode.generate(StatementNode.java:267)
>         at org.apache.derby.impl.sql.GenericStatement.prepMinion(GenericStatement.java:472)
>         at org.apache.derby.impl.sql.GenericStatement.prepare(GenericStatement.java:110)
>         at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(GenericLanguageConnectionContext.java:704)
>         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:678)
>         at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(EmbedConnection.java:522)
>         at TestConnect.main(TestConnect.java:119)
> $
> The query itself is really not that large or complex but the entire where clause goes into a single method. Dumping the class with derby.debug.true=DumpClassFile shows that the  very large method e1()  is the source of the trouble.
> $ java org.apache.derby.exe.ac601a400fx0107xdf9bx1ce4x000000156ed80
> Exception in thread "main" java.lang.VerifyError: (class: org/apache/derby/exe/ac601a400fx0107xdf9bx1ce4x000000156ed80, method: e1 signature: ()Ljava/lang/Object;) Illegal target of jump or branch

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


[jira] Updated: (DERBY-732) ERROR XBCM1: Java linkage error thrown during load of generated class for query with large number of logical operators and substitution parameters.

Posted by "Kathey Marsden (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/DERBY-732?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Kathey Marsden updated DERBY-732:
---------------------------------

    Fix Version/s: 10.1.3.2

> ERROR XBCM1: Java linkage error thrown during load of generated class  for  query with large number of logical operators and substitution parameters.
> -----------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-732
>                 URL: https://issues.apache.org/jira/browse/DERBY-732
>             Project: Derby
>          Issue Type: Bug
>          Components: Services
>            Reporter: Kathey Marsden
>            Assignee: Daniel John Debrunner
>             Fix For: 10.1.3.2, 10.2.1.6
>
>         Attachments: clss.txt, TestConnect.java
>
>
> The attatched test case with a large number of logical operators in the where clause fails. This is the delete statement causing the problem
>  String sql = "DELETE FROM T1 WHERE " +
>           "(ITEMID=? AND VERSIONID=?) OR (ITEMID=? AND VERSIONID=?) OR " +
>           "(ITEMID=? AND VERSIONID=?) OR (ITEMID=? AND VERSIONID=?) OR " +
>           "(ITEMID=? AND VERSIONID=?) OR (ITEMID=? AND VERSIONID=?) OR " +
> 	  [ repeat line above 90 times]
> 	"(ITEMID=? AND VERSIONID=?) OR (ITEMID=? AND VERSIONID=?) OR " +
>           "(ITEMID=? AND VERSIONID=?)";
> To reproduce  create the table with ij and run the TestConnect.java program attached.
> connect 'wombat;create=true';
> create table t1 (ITEMID int, VERSIONID int);
> java TestConnect
> The error is different with Sun and IBM JVMS
> With Sun 1,4,2 JVM the error is
> ERROR XBCM2: Cannot create an instance of generated class org.apache.derby.exe.ac601a400fx0107xdfdfx9bb8x000000156cb80.
>         at org.apache.derby.iapi.error.StandardException.newException(StandardException.java:315)
>         at org.apache.derby.impl.services.reflect.LoadedGeneratedClass.newInstance(LoadedGeneratedClass.java:83)
>         at org.apache.derby.impl.services.reflect.ReflectGeneratedClass.newInstance(ReflectGeneratedClass.java:59)
>         at org.apache.derby.impl.sql.GenericActivationHolder.<init>(GenericActivationHolder.java:121)
>         at org.apache.derby.impl.sql.GenericPreparedStatement.getActivation(GenericPreparedStatement.java:233)
>         at org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(EmbedPreparedStatement.java:123)
>         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:678)
>         at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(EmbedConnection.java:522)
>         at TestConnect.main(TestConnect.java:119)
> With IBM 1.4.2 it gives a linkage error
> Exception in thread "main" ERROR XBCM1: Java linkage error thrown during load of generated class org.apache.derby.exe.ac601a400fx0107xdfe4xf35ax000000267c780.
>         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:923)
>         at org.apache.derby.impl.sql.compile.StatementNode.generate(StatementNode.java:267)
>         at org.apache.derby.impl.sql.GenericStatement.prepMinion(GenericStatement.java:472)
>         at org.apache.derby.impl.sql.GenericStatement.prepare(GenericStatement.java:110)
>         at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(GenericLanguageConnectionContext.java:704)
>         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:678)
>         at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(EmbedConnection.java:522)
>         at TestConnect.main(TestConnect.java:119)
> $
> The query itself is really not that large or complex but the entire where clause goes into a single method. Dumping the class with derby.debug.true=DumpClassFile shows that the  very large method e1()  is the source of the trouble.
> $ java org.apache.derby.exe.ac601a400fx0107xdf9bx1ce4x000000156ed80
> Exception in thread "main" java.lang.VerifyError: (class: org/apache/derby/exe/ac601a400fx0107xdf9bx1ce4x000000156ed80, method: e1 signature: ()Ljava/lang/Object;) Illegal target of jump or branch

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.