Hello Jim,
Is it possible to try this query out with the latest GA release 10.2.1.6 ?
http://db.apache.org/derby/derby_downloads.html#Latest+Official+Release
There have been some fixes in the related code generation areas for 10.2:
DERBY-766, DERBY-1714 etc.
Also, can post the schema that can reproduce this issue ?
Regards,
Rajesh
Jim Newsham wrote:
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:[EMAIL PROTECTED]
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