Return-Path: Delivered-To: apmail-db-derby-dev-archive@www.apache.org Received: (qmail 26253 invoked from network); 6 Jan 2006 02:37:10 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 6 Jan 2006 02:37:10 -0000 Received: (qmail 10114 invoked by uid 500); 6 Jan 2006 02:37:09 -0000 Delivered-To: apmail-db-derby-dev-archive@db.apache.org Received: (qmail 10066 invoked by uid 500); 6 Jan 2006 02:37:09 -0000 Mailing-List: contact derby-dev-help@db.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: Delivered-To: mailing list derby-dev@db.apache.org Received: (qmail 10057 invoked by uid 99); 6 Jan 2006 02:37:09 -0000 X-ASF-Spam-Status: No, hits=1.3 required=10.0 tests=SPF_FAIL X-Spam-Check-By: apache.org Received: from [192.87.106.226] (HELO ajax.apache.org) (192.87.106.226) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 05 Jan 2006 18:37:08 -0800 Received: from ajax.apache.org (ajax.apache.org [127.0.0.1]) by ajax.apache.org (Postfix) with ESMTP id 8A500E1 for ; Fri, 6 Jan 2006 03:36:47 +0100 (CET) Message-ID: <1705133488.1136515007564.JavaMail.jira@ajax.apache.org> Date: Fri, 6 Jan 2006 03:36:47 +0100 (CET) From: "Kathey Marsden (JIRA)" To: derby-dev@db.apache.org Subject: [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. In-Reply-To: <507080678.1133357251238.JavaMail.jira@ajax.apache.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N [ 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.(GenericActivationHolder.java:121) > at org.apache.derby.impl.sql.GenericPreparedStatement.getActivation(GenericPreparedStatement.java:233) > at org.apache.derby.impl.jdbc.EmbedPreparedStatement.(EmbedPreparedStatement.java:123) > at org.apache.derby.impl.jdbc.EmbedPreparedStatement20.(EmbedPreparedStatement20.java:82) > at org.apache.derby.impl.jdbc.EmbedPreparedStatement30.(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.(EmbedPreparedStatement.java:118) > at org.apache.derby.impl.jdbc.EmbedPreparedStatement20.(EmbedPreparedStatement20.java:82) > at org.apache.derby.impl.jdbc.EmbedPreparedStatement30.(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