[ http://issues.apache.org/jira/browse/DERBY-1277?page=all ]
     
Knut Anders Hatlen resolved DERBY-1277:
---------------------------------------

    Fix Version: 10.2.0.0
     Resolution: Fixed

The patch looks very good. All tests ran cleanly. Committed revision 400212.

> Call to rs.isLast() may cause rs.getXXX() return values from the last row 
> instead of the current row in scrollable resultsets
> -----------------------------------------------------------------------------------------------------------------------------
>
>          Key: DERBY-1277
>          URL: http://issues.apache.org/jira/browse/DERBY-1277
>      Project: Derby
>         Type: Bug

>   Components: SQL
>     Versions: 10.2.0.0, 10.1.2.1
>     Reporter: Andreas Korneliussen
>     Assignee: Andreas Korneliussen
>      Fix For: 10.2.0.0
>  Attachments: DERBY-1277.diff, DERBY-1277.stat
>
> In scrollable updatable resultset, a call to rs.isLast() may cause 
> rs.getXXX() return values from the last row, instead of for the current row.  
> This may be related to the fact that on calls to isLast() the scroll 
> insensitive resultset moves to the last row, and then moves back to the 
> current row (see DERBY-1276 for related information). The call to isLast() 
> seems to have a sideeffect when the resultset is updatable.
> I have test which does the following:
>         Statement stmt1 = 
> con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
>         ResultSet rs = stmt1.executeQuery("select * from testRelative");
>         
>         rs.next(); // First Record
>         System.out.println("First record is: " + rs.getString("name"));
>         rs.relative(2); // Third Record        
>         System.out.println("Third record is: " + rs.getString("name"));
>         System.out.println(" isLast=" + rs.isLast());
>         System.out.println("Third record is: " + rs.getString("name"));
> The output is:
> First record is: work1
> Third record is: work3
>  isLast=false
> Third record is: work4
> isLast()==false
> The issue may also be reproduced by applying the following patch to 
> testRelative:
> Index: 
> java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/testRelative.java
> ===================================================================
> --- 
> java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/testRelative.java
>   (revision 399224)
> +++ 
> java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/testRelative.java
>   (working copy)
> @@ -60,7 +60,7 @@
>                         pStmt.executeBatch();
>                         con.commit();
> -                       stmt1 = 
> con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
> +                       stmt1 = 
> con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
>                         rs = stmt1.executeQuery("select * from testRelative");
>                         rs.next(); // First Record

-- 
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
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to