ibatis-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sven Boden (JIRA)" <ibatis-...@incubator.apache.org>
Subject [jira] Closed: (IBATIS-109) Make PaginatedList work with IBM's broken JDBC driver
Date Thu, 23 Feb 2006 19:14:39 GMT
     [ http://issues.apache.org/jira/browse/IBATIS-109?page=all ]
Sven Boden closed IBATIS-109:

    Fix Version: 2.2.0
     Resolution: Fixed

Fixed as in JIRA comments.

- No additional testcases
- I've been running the fix for a long time.

It's a not so nice behaviour of IBM DB2, but calling next() after you know the cursor has
reached the end may also not be that optimal. The fix works on all databases. I've tested
with DB2, Oracle, HSQL. Thanks to Patrick Idem for the patch.

> Make PaginatedList work with IBM's broken JDBC driver
> -----------------------------------------------------
>          Key: IBATIS-109
>          URL: http://issues.apache.org/jira/browse/IBATIS-109
>      Project: iBatis for Java
>         Type: Improvement
>   Components: SQL Maps
>     Versions: 2.0.8, 2.0.9, 2.1.0, 2.0.9b
>  Environment: Any Java environment
>     Reporter: Patrick Idem
>     Priority: Minor
>      Fix For: 2.2.0
>  Attachments: SqlExecutor.java
> 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
> 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:
For more information on JIRA, see:

View raw message