db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kathey Marsden (JIRA)" <j...@apache.org>
Subject [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.
Date Tue, 30 Oct 2007 03:46:51 GMT

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


Mime
View raw message