Return-Path: Delivered-To: apmail-db-derby-dev-archive@www.apache.org Received: (qmail 77598 invoked from network); 13 Feb 2008 12:20:35 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 13 Feb 2008 12:20:35 -0000 Received: (qmail 26797 invoked by uid 500); 13 Feb 2008 12:20:28 -0000 Delivered-To: apmail-db-derby-dev-archive@db.apache.org Received: (qmail 26762 invoked by uid 500); 13 Feb 2008 12:20:28 -0000 Mailing-List: contact derby-dev-help@db.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: Delivered-To: mailing list derby-dev@db.apache.org Received: (qmail 26753 invoked by uid 99); 13 Feb 2008 12:20:28 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 13 Feb 2008 04:20:28 -0800 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO brutus.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 13 Feb 2008 12:19:50 +0000 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id 681D9714044 for ; Wed, 13 Feb 2008 04:20:10 -0800 (PST) Message-ID: <26148802.1202905210423.JavaMail.jira@brutus> Date: Wed, 13 Feb 2008 04:20:10 -0800 (PST) From: "Dag H. Wanvik (JIRA)" To: derby-dev@db.apache.org Subject: [jira] Commented: (DERBY-3397) Derby 10.3.1.4 and 10.3.2.1 break scrollable result sets? Hibernate Query.setFirstResult and/or setMaxResults In-Reply-To: <17694451.1202452148128.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/DERBY-3397?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12568529#action_12568529 ] Dag H. Wanvik commented on DERBY-3397: -------------------------------------- If you can produce a plain SQL repro (or even a simple repro using Hibernate) it would help a lot! I am not familiar with the Hibernate mapping, so it would be nice if you could trace the relevant SQL being executed here (server traceing): by setting derby.language.logStatementText=true and derby.stream.error.logSeverityLevel=0 The trace output can be found in derby.log; it would be helpful if you could attach that trace to this issue. a) Is the scrollable result set also updatable? b) Do you use the Derby network client driver or do you run embedded Derby? If you use the client driver, you could trace there also, see http://db.apache.org/derby/docs/10.3/adminguide/cadminappsclienttracing.html c) Do the rows in OURTABLE contain any LOB objects (LOBS, CLOBS)? > Derby 10.3.1.4 and 10.3.2.1 break scrollable result sets? Hibernate Query.setFirstResult and/or setMaxResults > ------------------------------------------------------------------------------------------------------------- > > Key: DERBY-3397 > URL: https://issues.apache.org/jira/browse/DERBY-3397 > Project: Derby > Issue Type: Bug > Components: JDBC > Affects Versions: 10.3.1.4, 10.3.2.1 > Environment: Derby 10.3.1.4 and 10.3.2.1, Hibernate 3.2.5 > Reporter: Michael Lossos > Priority: Critical > > I am attempting to upgrade our product from Derby 10.2.2.0 to 10.3.2.1. With all other things held constant, if I change the derby.jar from 10.2.2 to 10.3.2.1, our calls to set the (JDBC) first result and max results (max rows) no longer function properly, such that no results are returned beyond first result 200, max results 100 (max rows 300), even when the table has over 1000 rows. 2 of the 11 columns of this table are indexed > We use Hibernate's result pagination via Query.setFirstResult and setMaxResults which, in org.hibernate.loader.Loader.advance(), uses java.sql.ResultSet.advance when scrollable result sets are available, and as expected org.apache.derby.impl.jdbc.EmbedDatabaseMetaData reports that scrollable result sets are available for both Derby 10.2.2 and 10.3.2.1. > The following is pseudo code for what we're doing with Hibernate: > int pageSize = 100; > int count = ... // select count(*) from OURTABLE; > for( int firstResult = 0; firstResult < count; firstResult += pageSize) { > Query query = session.createQuery( "from OurHibernateObject"); // select * from OURTABLE > query.setFirstResult( firstResult ); > query.setMaxResults( pageSize ); > List objList = query.list(); > // results are fine for firstResult 100 and 200, > // but beyond that no results are returned with a >1000 row table! > } > When settings max results, Hibernate correctly sets max rows as follows from org.hibernate.loader.Loader.setMaxRows: > st.setMaxRows( selection.getMaxRows().intValue() + getFirstRow( selection ) ); > Which is calling into org.apache.derby.impl.jdbc.EmbedPreparedStatement40. This code path doesn't change between Derby 10.2.2 and 10.3.2.1. > I've tried completely recreating the database to remove any possible problems with soft / full upgrades, but this didn't fix the problem. I tried 10.3.1.4 but this also exhibits the bug. > This seems like a fairly basic regression (surely a Derby test would fail if scrollable results were broken). I'm wondering if there's another factor at work here? Please help me to describe whatever else is necessary for you to reproduce this. (I can't post our table schema or our code.) I apologize in advance if this our own mistake but as I said, I'm only updating the derby.jar. > Thanks for all the hard work on Derby! -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.