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

Rajesh Kartha updated DERBY-1315:
---------------------------------

    Attachment: 1315-comparison.html
                largeCodeGen.java

I ran the largeCodeGen test as a stand alone application in Embedded mode 
against:
10.0.2.2.349072         
10.1.2.4.384995         
10.1.3.2.424154         
10.2.0.5 alpha.424456

While 10.2 now works in more number of complex cases (Logical operators with 
800 parameters, IN clause with 98000 parameters) in comparision to 10.0 and 
10.1, there has been a regression.
 - The scenario with SELECT with 800 and 900 unions used to PASS in 10.0 and 
10.1 now FAILs in 10.2
-  The scenario  with SELECT with 10000 unions used to fail after compilation 
in 10.0 and 10.1.2. But with 10.1.3 and 10.2
  the statement fails during compile with OutOfMemory error.

In addition, under default settings, I noticed that in Derby 10.0, 10.1 if the 
exception (SQLSTATE= XBCM1, SQL Exception: Java linkage error thrown during 
load of generated class ) occurs during execution of the generated class, the 
generated  file is left behind on the file system. 

For example:
-rwxrwxrwa   1 Administrators  None             172052 Aug  8 10:53 
ace5214067x010cxeeebx20c8x00001f6fcec04.class
-rwxrwxrwa   1 Administrators  None            5082617 Aug  8 10:53 
ace5214067x010cxeeebx20c8x00001f6fcec05.class

Whereas with 10.2, no files are left behind, which I think should be the right 
behaviour.

Attaching the html file of my findings and the largeCodeGen.java






> largeCodeGen fails with embedded and framework DerbyNetClient
> -------------------------------------------------------------
>
>                 Key: DERBY-1315
>                 URL: http://issues.apache.org/jira/browse/DERBY-1315
>             Project: Derby
>          Issue Type: Bug
>          Components: Test
>    Affects Versions: 10.2.0.0
>         Environment: Linux - Suse 2.6.5-7.252
>            Reporter: Ramandeep Kaur
>            Priority: Minor
>         Attachments: 1315-comparison.html, largeCodeGen.java, 
> largeCodeGen.out, largeCodeGen.sql, largeCodeGen.tmp, largeCodeGen.tmpmstr
>
>
> The test case lang/largeCodeGen.java was run as is without giving any 
> -Djvmflags="-mx512M -ms512M" and gave the following error:
> *** Start: largeCodeGen jdk1.4.2 largeDataTests:largeDataTests 2006-04-29 
> 08:30:04 ***
> 27a28
> > JVMST109: Insufficient space in Javaheap to satisfy allocation request
> Test Failed.
> *** End:   largeCodeGen jdk1.4.2 largeDataTests:largeDataTests 2006-04-29 
> 08:32:01 ***
>  
> Then the test case lang/largeCodeGen.java was run with -Djvmflags="-mx512M 
> -ms512M", and it gave the following error:
> < PASS: IN clause with 97000 parameters
> 20 del
> < PASS: PREPARE: IN clause with 98000 parameters
> 21 del
> < PASS: IN clause with 98000 parameters
> 22 del
> < FAILED QUERY: IN clause with 99000 parameters. 
> 22a19
> > FAILED QUERY: IN clause with 97000 parameters.
> Test Failed.
> Then I modified test case lang/largeCodeGen.java to set 
> PRINT_FAILURE_EXCEPTION  to true and ran the test again. This time I got the 
> following error and stack trace:
> MasterFileName = master/largeCodeGen.out
> 15a16,18
> > java.sql.SQLException: Statement too complex. Try rewriting the query to 
> > remove 
> complexity. Eliminating many duplicate expressions or breaking up the query 
> and 
> storing interim results in a temporary table can often help resolve this error
> . SQLSTATE: XBCM4: Java class file format limit(s) exceeded: method:e1 
> code_leng
> th (65577 > 65535) in generated class 
> org.apache.derby.exe.ac46a08075x010bx203ax 
> d010x000050a9065e9.
> > Caused by: org.apache.derby.client.am.SqlException: Statement too complex. 
> > Try
>  rewriting the query to remove complexity. Eliminating many duplicate 
> expression
> s or breaking up the query and storing interim results in a temporary table 
> can 
> often help resolve this error. SQLSTATE: XBCM4: Java class file format 
> limit(s)
> exceeded: method:e1 code_length (65577 > 65535) in generated class 
> org.apache.derby.exe.ac46a08075x010bx203axd010x000050a9065e9 .
> >       ... 4 more
> 19 del
> < PASS: IN clause with 97000 parameters
> 20 del
> < PASS: PREPARE: IN clause with 98000 parameters
> 21 del
> < PASS: IN clause with 98000 parameters
> 22 del
> < FAILED QUERY: IN clause with 99000 parameters. 
> 22a22,29
> > FAILED QUERY: IN clause with 97000 parameters.
> > java.sql.SQLException: The parameter position '31,465' is out of range.  
> > The 
> number of parameters for this prepared  statement is '31,464'.
> >       at 
> > org.apache.derby.client.am.PreparedStatement.setInt(PreparedStatement
> .java(Compiled Code))
> > Caused by: org.apache.derby.client.am.SqlException: The parameter position 
> > '31
> ,465' is out of range.  The number of parameters for this prepared  statement 
> is 
>  '31,464'.
> >       at 
> > org.apache.derby.client.am.PreparedStatement.checkForValidParameterIn
> dex(PreparedStatement.java(Compiled Code))
> >       at 
> > org.apache.derby.client.am.PreparedStatement.checkSetterPreconditions 
> (PreparedStatement.java(Inlined Compiled Code))
> >       at 
> > org.apache.derby.client.am.PreparedStatement.setIntX(PreparedStatemen
> t.java(Inlined Compiled Code))
> >       ... 5 more
> 27a35,37
> > java.sql.SQLException : Statement too complex. Try rewriting the query to 
> > remove 
> complexity. Eliminating many duplicate expressions or breaking up the query 
> and 
> storing interim results in a temporary table can often help resolve this 
> error 
> . SQLSTATE: XBCM4: Java class file format limit(s) exceeded: 
> method:fillResultSe
> t code_length (69127 > 65535) in generated class 
> org.apache.derby.exe.ac46a08075x010bx203axd010x000050a9065e11.
> > Caused by: org.apache.derby.client.am.SqlException: Statement too complex. 
> > Try
>  rewriting the query to remove complexity. Eliminating many duplicate 
> expression
> s or breaking up the query and storing interim results in a temporary table 
> can 
> often help resolve this error. SQLSTATE: XBCM4: Java class file format 
> limit(s)
> exceeded: method:fillResultSet code_length (69127 > 65535) in generated class 
> org.apache.derby.exe.ac46a08075x010bx203axd010x000050a9065e11 .
> >       ... 3 more
> 28 add
> > java.sql.SQLException: Java exception: ': java.lang.OutOfMemoryError'.
> > Caused by: org.apache.derby.client.am.SqlException: Java exception: ': 
> java.lang.OutOfMemoryError '.
> >       ... 3 more
> Test Failed.

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