(Remote)IncrementalFaultList resolveAll() fails
------------------------------------------------
Key: CAY-1059
URL: https://issues.apache.org/cayenne/browse/CAY-1059
Project: Cayenne
Issue Type: Bug
Components: Cayenne Core Library
Environment: OS X 10.5 , derby, remote cayenne
Reporter: Marcin Skladaniec
Assignee: Andrus Adamchik
Iterating trough all select query results is best done using non-paged query, but sometimes though it happens that the paged list has to be iterated also.
There is a method in the API resolveAll() which seems to be suited for this case, but unfortunately it does not work on big lists (in our case 50000+ records). I'm not sure if this is a derby thing only, but it seems like the generated expression (set of ObjectIdQueries) is too long.
Exception :
[java] java.sql.SQLException: Java exception: ': java.lang.StackOverflowError'.
[java] at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
[java] at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
[java] at org.apache.derby.impl.jdbc.Util.javaException(Unknown Source)
[java] at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)
[java] at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
[java] at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
[java] at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source)
[java] at org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(Unknown Source)
[java] at org.apache.derby.impl.jdbc.EmbedPreparedStatement20.<init>(Unknown Source)
[java] at org.apache.derby.impl.jdbc.EmbedPreparedStatement30.<init>(Unknown Source)
[java] at org.apache.derby.jdbc.Driver30.newEmbedPreparedStatement(Unknown Source)
[java] at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown Source)
[java] at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown Source)
[java] at org.apache.cayenne.conn.ConnectionWrapper.prepareStatement(ConnectionWrapper.java:274)
[java] at org.apache.cayenne.conn.ConnectionWrapper.prepareStatement(ConnectionWrapper.java:280)
[java] at org.apache.cayenne.access.TransactionConnectionDecorator.prepareStatement(TransactionConnectionDecorator.java:179)
[java] at org.apache.cayenne.access.trans.QueryAssembler.createStatement(QueryAssembler.java:118)
[java] at org.apache.cayenne.access.jdbc.SelectAction.performAction(SelectAction.java:72)
[java] at org.apache.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryAction.java:58)
[java] at org.apache.cayenne.access.DataNode.performQueries(DataNode.java:230)
[java] at org.apache.cayenne.access.DataDomainQueryAction.runQuery(DataDomainQueryAction.java:424)
[java] at org.apache.cayenne.access.DataDomainQueryAction.access$000(DataDomainQueryAction.java:68)
[java] at org.apache.cayenne.access.DataDomainQueryAction$2.transform(DataDomainQueryAction.java:397)
[java] at org.apache.cayenne.access.DataDomain.runInTransaction(DataDomain.java:847)
[java] at org.apache.cayenne.access.DataDomainQueryAction.runQueryInTransaction(DataDomainQueryAction.java:394)
[java] at org.apache.cayenne.access.DataDomainQueryAction.execute(DataDomainQueryAction.java:120)
[java] at org.apache.cayenne.access.DataDomain.onQuery(DataDomain.java:740)
[java] at org.apache.cayenne.util.ObjectContextQueryAction.runQuery(ObjectContextQueryAction.java:317)
[java] at org.apache.cayenne.util.ObjectContextQueryAction.execute(ObjectContextQueryAction.java:96)
[java] at org.apache.cayenne.access.DataContext.onQuery(DataContext.java:1336)
[java] at org.apache.cayenne.access.DataContext.performQuery(DataContext.java:1325)
[java] at org.apache.cayenne.access.IncrementalFaultList.resolveInterval(IncrementalFaultList.java:353)
[java] at org.apache.cayenne.access.IncrementalFaultList.subList(IncrementalFaultList.java:687)
[java] at org.apache.cayenne.access.ClientServerChannelQueryAction.interceptSinglePageQuery(ClientServerChannelQueryAction.java:109)
[java] at org.apache.cayenne.access.ClientServerChannelQueryAction.execute(ClientServerChannelQueryAction.java:65)
[java] at org.apache.cayenne.access.ClientServerChannel.onQuery(ClientServerChannel.java:82)
[java] at org.apache.cayenne.remote.service.DispatchHelper.dispatch(DispatchHelper.java:40)
[java] at org.apache.cayenne.remote.service.BaseRemoteService.processMessage(BaseRemoteService.java:153)
[java] at sun.reflect.GeneratedMethodAccessor11.invoke(Unknown Source)
[java] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[java] at java.lang.reflect.Method.invoke(Method.java:585)
[java] at com.caucho.hessian.server.HessianSkeleton.invoke(HessianSkeleton.java:180)
[java] at com.caucho.hessian.server.HessianSkeleton.invoke(HessianSkeleton.java:109)
[java] at com.caucho.hessian.server.HessianServlet.service(HessianServlet.java:393)
[java] at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
[java] at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
[java] at ish.oncourse.server.SecurityFilter.doFilter(SecurityFilter.java:112)
[java] at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
[java] at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
[java] at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
[java] at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
[java] at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)
[java] at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
[java] at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
[java] at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
[java] at org.mortbay.jetty.Server.handle(Server.java:324)
[java] at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
[java] at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:842)
[java] at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:730)
[java] at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:205)
[java] at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
[java] at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
[java] at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)
[java] Caused by: java.lang.StackOverflowError
[java] at org.apache.derby.impl.sql.compile.BinaryOperatorNode.bindExpression(Unknown Source)
[java] at org.apache.derby.impl.sql.compile.BinaryLogicalOperatorNode.bindExpression(Unknown Source)
[java] at org.apache.derby.impl.sql.compile.OrNode.bindExpression(Unknown Source)
[java] at org.apache.derby.impl.sql.compile.BinaryOperatorNode.bindExpression(Unknown Source)
[java] at org.apache.derby.impl.sql.compile.BinaryLogicalOperatorNode.bindExpression(Unknown Source)
[java] at org.apache.derby.impl.sql.compile.OrNode.bindExpression(Unknown Source)
[java] at org.apache.derby.impl.sql.compile.BinaryOperatorNode.bindExpression(Unknown Source)
[java] at org.apache.derby.impl.sql.compile.BinaryLogicalOperatorNode.bindExpression(Unknown Source)
[java] at org.apache.derby.impl.sql.compile.OrNode.bindExpression(Unknown Source)
[java] at org.apache.derby.impl.sql.compile.BinaryOperatorNode.bindExpression(Unknown Source)
[java] at org.apache.derby.impl.sql.compile.BinaryLogicalOperatorNode.bindExpression(Unknown Source)
[java] at org.apache.derby.impl.sql.compile.OrNode.bindExpression(Unknown Source)
[java] at org.apache.derby.impl.sql.compile.BinaryOperatorNode.bindExpression(Unknown Source)
[java] at org.apache.derby.impl.sql.compile.BinaryLogicalOperatorNode.bindExpression(Unknown Source)
-- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
This archive was generated by hypermail 2.0.0 : Wed May 28 2008 - 05:56:22 EDT