db-derby-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jim Newsham" <jnews...@referentia.com>
Subject RE: StackOverflowError
Date Tue, 07 Nov 2006 00:49:34 GMT


Hi everyone,

I thought the problem would go away if I gave Derby a better written query,
so I fixed my query generator to be a bit smarter.  Unfortunately, I still
get a stack overflow error.  Here's the new query:

ij(SAMPLEBASE)> select count(*) from time where time.id in (select time.id
from time, double_sample, band where band.id = double_sample.fk_band_id and
double_sample.fk_time_id = time.id and (band.id = 39 or band.id = 55));
1
-----------
ERROR 38000: The exception 'java.lang.StackOverflowError' was thrown while
evaluating an expression. SQLSTATE: XJ001: Java exception: ':
java.lang.StackOverflowError'.


This looks like an ugly bug for such a simple query.  I didn't find any bug
in jira which seemed to relate to this.  Is this a known bug?  

Any advice on how to work around the problem is appreciated.

I'm using Derby 10.1.3.1.

Thanks,
Jim

P.S.  I just included the outer query ("select count(*) from..") to
reproduce the problem in ij.  My program actually uses jdbc, executes the
inner query, and calls ResultSet.last().  The result is the same, a
StackOverflowError.  Here's the stack trace I get in my app:

Caused by: org.apache.derby.client.am.SqlException: The exception
'java.lang.StackOverflowError' was thrown while evaluating an expression.
SQLSTATE: XJ001: Java exception: ': java.lang.StackOverflowError'.
        at org.apache.derby.client.am.ResultSet.completeSqlca(Unknown
Source)
        at
org.apache.derby.client.net.NetResultSetReply.parseFetchError(Unknown
 Source)
        at
org.apache.derby.client.net.NetResultSetReply.parseCNTQRYreply(Unknown
Source)
        at
org.apache.derby.client.net.NetResultSetReply.readPositioningFetch(Unknown
Source)
        at
org.apache.derby.client.net.ResultSetReply.readPositioningFetch(Unknown
Source)
        at
org.apache.derby.client.net.NetResultSet.readPositioningFetch_(Unknown
Source)
        at org.apache.derby.client.am.ResultSet.getRowCount(Unknown Source)
        at org.apache.derby.client.am.ResultSet.lastX(Unknown Source)
        at org.apache.derby.client.am.ResultSet.last(Unknown Source)
        at
com.referentia.sdf.monitor.samplebase.derby.QueryDataSet.getSize(QueryDataSe
t.java:139)


> -----Original Message-----
> From: Jim Newsham [mailto:jnewsham@referentia.com]
> Sent: Monday, November 06, 2006 11:21 AM
> To: 'Derby Discussion'
> Subject: StackOverflowError
> 
> 
> Any reason why I should get a stack overflow error with the following
> query?
> 
> Yes, I know the query is a bit odd... it's not hand-written.  The query
> generator could be optimized.  Nevertheless... is the stack overflow here
> considered a bug or a limitation?  If limitation, what specifically is the
> limitation?
> 
> 
> ij(SAMPLEBASE)> select count(*) from time where time.id in (select time.id
> from time, double_sample, band where band.id = double_sample.fk_band_id
> and
> double_sample.fk_time_id = time.id and band.id = 57 union select id from
> time where 1 = 0);
> 1
> -----------
> ERROR 38000: The exception 'java.lang.StackOverflowError' was thrown while
> evaluating an expression. SQLSTATE: XJ001: Java exception: ':
> java.lang.StackOverflowError'.
> 
> Thanks,
> Jim
> 
> 




Mime
View raw message