PaginatedList bug
-----------------

         Key: IBATIS-109
         URL: http://issues.apache.org/jira/browse/IBATIS-109
     Project: iBatis for Java
        Type: Bug
  Components: SQL Maps  
    Versions: 2.0.8, 2.0.9, 2.0.9b, 2.1.0, 2.1.1, 2.1.2    
 Environment: Any Java environment
    Reporter: Patrick Idem
    Priority: Critical


Using DB2 database drivers cases an exception to be thrown when calling 
paginatedList.next() and the current page is the page before the last page. 
From what I can determine the PaginatedList class retrieves future records in 
order to determine if there are any more pages. An Exception will be caused in 
the following situation:

A database table has 11 records.
First issue a command to get a paginated list of all the records with a page 
size of 10:
PaginatedList list = queryForPaginatedList("getAllRecords", null, 10)

Since the paginated list reads ahead it will retrieve all 11 records and reach 
the end of the ResultSet.

Now if we want to view the second page (which only consists of 1 record) we 
would then do the following:
list.next()

Now, calling list.next() should not have to go to the database since we had 
already reached the end of the ResultSet but it does! This is where the problem 
happens. DB2 drivers automatically close the ResultSet when you read in the 
last row so the ResultSet has been closed.

I am suspecting that this problem is only serious when using DB2 drivers but it 
is still a problem. The paginated list object should be smart enough to know 
that there are no more results and not try to hit the database that last time.

The actually DB2 exception that is thrown is the following:
com.ibm.db2.jcc.a.SqlException: Invalid operation: result set closed

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira

Reply via email to