You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-user@db.apache.org by Marcin Skladaniec <ma...@ish.com.au> on 2006/12/06 09:20:32 UTC

query length

hello !
Is there a limit to the query length ?
When I execute long query (more than about 1000 characters, but less  
than 64000) i get weird exceptions.

Squirrel-sql reports StackOverflowError, but some exceptions seems to  
be munched internally and never pop up, cause when not using squirrel- 
sql I'm getting class org.apache.derby.client.net.NetSqlca in response.

Marcin
  

Re: query length

Posted by Daniel John Debrunner <dj...@apache.org>.
Marcin Skladaniec wrote:
> 
> On 11/12/2006, at 3:54 AM, Rajesh Kartha wrote:
> 
>> Marcin Skladaniec wrote:
>>
>>>
>>> Hi !
>>> I asked a question about the maximum query length on the user 
>>> mailing  list, but no one answered.
>>> Does someone from the dev list know the answer to my question ?
>>> Regards
>>> Marcin
>>>
>>> Begin forwarded message:
>>>
>>>> From: Marcin Skladaniec <ma...@ish.com.au>
>>>> Date: 6 December 2006 6:20:32 PM
>>>> To: derby-user@db.apache.org
>>>> Subject: query length
>>>> Reply-To: "Derby Discussion" <de...@db.apache.org>
>>>>
>>>> hello !
>>>> Is there a limit to the query length ?
>>>> When I execute long query (more than about 1000 characters, but  
>>>> less than 64000) i get weird exceptions.
>>>>
>>>> Squirrel-sql reports StackOverflowError, but some exceptions seems  
>>>> to be munched internally and never pop up, cause when not using  
>>>> squirrel-sql I'm getting class org.apache.derby.client.net.NetSqlca  
>>>> in response.
>>>>
>>>> Marcin
>>>
>>>
>>>
>>>
>> Hi Marcin,
>>
>> Some questions:
>>
>> What version of Derby are you using and what is the nature of the 
>> query you are executing ?  ~1000 characters does not
>> seem that long for a query, I have seen queries > 2000 characters 
>> working in Derby
>> (for example http://issues.apache.org/jira/browse/DERBY-1315)
>>
>> Not sure if it is Squirrel that is causing the error,  did  you try 
>> running your query  using the Derby command line tool - ij ?
>> Is it possible to post the stack trace and a reproduction of the issue.
>>
>> -Rajesh
>>
> 
> Thank you for answering !
> I'm using derby 10.2.1.6.
> I tried putting my query (about 42000 characters) to ij, as the result I 
> got an answer :
> ERROR 42ZA0: 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_length (135615 > 65535) in generated class 
> org.apache.derby.exe.ac888c4022x010fx70a9x5790xffff8e6417d30.
> 
> I did simplified the query using 'SELECT * from table where field in 
> (option1, option2 ...)' so now the query is much shorter, but I still do 
> expect to have my query be over 10000 characters long. would that be 
> supported ?

Quick summary is the number of characters is not the real factor for if 
a query will work in Derby or not.

Derby's SQL statements are compiled to Java byte code. The limits in 
Java byte code lead to limits on the complexity of statements that Derby 
can handle. For example the above the query required a Java method that 
was larger than the 64k limit imposed by the JVM. A lot of work was done 
in 10.2 to avoid these limits, e.g. splitting compiled methods into 
multiple methods to avoid the 64k limit. The split code though only 
works in certain situations, I sure it could be improved to cover more, 
if you enter a Jira bug and provide a reproducible case then it provides 
the basics for someone to look at the issue and see if there is some way 
to improve the code generation to avoid limits of the class file format.


Thanks,
Dan.


Re: query length

Posted by Marcin Skladaniec <ma...@ish.com.au>.
On 11/12/2006, at 3:54 AM, Rajesh Kartha wrote:

> Marcin Skladaniec wrote:
>
>>
>> Hi !
>> I asked a question about the maximum query length on the user  
>> mailing  list, but no one answered.
>> Does someone from the dev list know the answer to my question ?
>> Regards
>> Marcin
>>
>> Begin forwarded message:
>>
>>> From: Marcin Skladaniec <ma...@ish.com.au>
>>> Date: 6 December 2006 6:20:32 PM
>>> To: derby-user@db.apache.org
>>> Subject: query length
>>> Reply-To: "Derby Discussion" <de...@db.apache.org>
>>>
>>> hello !
>>> Is there a limit to the query length ?
>>> When I execute long query (more than about 1000 characters, but   
>>> less than 64000) i get weird exceptions.
>>>
>>> Squirrel-sql reports StackOverflowError, but some exceptions  
>>> seems  to be munched internally and never pop up, cause when not  
>>> using  squirrel-sql I'm getting class  
>>> org.apache.derby.client.net.NetSqlca  in response.
>>>
>>> Marcin
>>
>>
>>
>>
> Hi Marcin,
>
> Some questions:
>
> What version of Derby are you using and what is the nature of the  
> query you are executing ?  ~1000 characters does not
> seem that long for a query, I have seen queries > 2000 characters  
> working in Derby
> (for example http://issues.apache.org/jira/browse/DERBY-1315)
>
> Not sure if it is Squirrel that is causing the error,  did  you try  
> running your query  using the Derby command line tool - ij ?
> Is it possible to post the stack trace and a reproduction of the  
> issue.
>
> -Rajesh
>

Thank you for answering !
I'm using derby 10.2.1.6.
I tried putting my query (about 42000 characters) to ij, as the  
result I got an answer :
ERROR 42ZA0: 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_length (135615 > 65535) in generated class  
org.apache.derby.exe.ac888c4022x010fx70a9x5790xffff8e6417d30.

I did simplified the query using 'SELECT * from table where field in  
(option1, option2 ...)' so now the query is much shorter, but I still  
do expect to have my query be over 10000 characters long. would that  
be supported ?

Marcin

Re: Fwd: query length

Posted by Rajesh Kartha <ka...@gmail.com>.
Marcin Skladaniec wrote:

>
> Hi !
> I asked a question about the maximum query length on the user mailing  
> list, but no one answered.
> Does someone from the dev list know the answer to my question ?
> Regards
> Marcin
>
> Begin forwarded message:
>
>> From: Marcin Skladaniec <ma...@ish.com.au>
>> Date: 6 December 2006 6:20:32 PM
>> To: derby-user@db.apache.org
>> Subject: query length
>> Reply-To: "Derby Discussion" <de...@db.apache.org>
>>
>> hello !
>> Is there a limit to the query length ?
>> When I execute long query (more than about 1000 characters, but  less 
>> than 64000) i get weird exceptions.
>>
>> Squirrel-sql reports StackOverflowError, but some exceptions seems  
>> to be munched internally and never pop up, cause when not using  
>> squirrel-sql I'm getting class org.apache.derby.client.net.NetSqlca  
>> in response.
>>
>> Marcin
>
>
>
>
Hi Marcin,

Some questions:

What version of Derby are you using and what is the nature of the query 
you are executing ?  ~1000 characters does not
seem that long for a query, I have seen queries > 2000 characters 
working in Derby
(for example http://issues.apache.org/jira/browse/DERBY-1315)

Not sure if it is Squirrel that is causing the error,  did  you try 
running your query  using the Derby command line tool - ij ? 

Is it possible to post the stack trace and a reproduction of the issue.

-Rajesh


Fwd: query length

Posted by Marcin Skladaniec <ma...@ish.com.au>.
Hi !
I asked a question about the maximum query length on the user mailing  
list, but no one answered.
Does someone from the dev list know the answer to my question ?
Regards
Marcin

Begin forwarded message:

> From: Marcin Skladaniec <ma...@ish.com.au>
> Date: 6 December 2006 6:20:32 PM
> To: derby-user@db.apache.org
> Subject: query length
> Reply-To: "Derby Discussion" <de...@db.apache.org>
>
> hello !
> Is there a limit to the query length ?
> When I execute long query (more than about 1000 characters, but  
> less than 64000) i get weird exceptions.
>
> Squirrel-sql reports StackOverflowError, but some exceptions seems  
> to be munched internally and never pop up, cause when not using  
> squirrel-sql I'm getting class org.apache.derby.client.net.NetSqlca  
> in response.
>
> Marcin