db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Satheesh Bandaram (JIRA)" <derby-...@db.apache.org>
Subject [jira] Closed: (DERBY-186) isFirst() returns true when relative(x) goes beyond result set
Date Wed, 06 Apr 2005 01:16:19 GMT
     [ http://issues.apache.org/jira/browse/DERBY-186?page=history ]
     
Satheesh Bandaram closed DERBY-186:
-----------------------------------


Fix checked in.

> isFirst() returns true when relative(x) goes beyond result set
> --------------------------------------------------------------
>
>          Key: DERBY-186
>          URL: http://issues.apache.org/jira/browse/DERBY-186
>      Project: Derby
>         Type: Bug
>   Components: JDBC
>     Versions: 10.0.2.0
>  Environment: Windows XP SP1 Professional
>     Reporter: George Baklarz
>      Fix For: 10.1.0.0

>
> Bizarre error. Not sure if this is a JDBC, Derby, or Java issue.
> An opened result set has 4 records. A call to relative(3) while on row 3 should result
in isAfterLast=true, and isFirst, isBeforeFirst, and IsLast set to false. However, the result
is isAfterLast=True and isFirst=True.
> ij 
> connect 'IsAfter;create=true';
> create table x (a char(1)); 
> insert into x values '1','2','3','4';
> quit;
> import java.sql.*; 
> public class ErrIsFirst {
>   public static void main(String argv[]) throws SQLException {
>     Connection conn = null;
>     Statement s = null;
>     ResultSet rs = null;
>     String DerbyDriver = "org.apache.derby.jdbc.EmbeddedDriver";
>     String returnValue;
>       
>     try {
>        Class.forName(DerbyDriver).newInstance();
>     }
>     catch (Exception NoDriver) {
>        System.out.println("Derby driver not found: " + DerbyDriver);
>        NoDriver.printStackTrace();
>        System.exit(1);
>     }
>     try {
>       conn = DriverManager.getConnection("jdbc:derby:IsAfter"); 
>       s = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

>       rs = s.executeQuery( "SELECT A FROM X");
>       rs.next(); // First Record
>       returnValue = rs.getString("A");     
>       System.out.println("Value="+returnValue); 
>       
>       rs.relative(2);
>       System.out.println("isFirst=" + rs.isFirst() + " isLast=" + rs.isLast() + " isAfterLast="
+ rs.isAfterLast());
>       returnValue = rs.getString("A");     
>       System.out.println("Value="+returnValue); 
>       rs.relative(-2);
>       returnValue = rs.getString("A");     
>       System.out.println("Value="+returnValue);
>       rs.relative(10);
>       System.out.println("isFirst=" + rs.isFirst() + " isLast=" + rs.isLast() + " isAfterLast="
+ rs.isAfterLast());
>       returnValue = rs.getString("A");     
>       System.out.println("Value="+returnValue); 
>       rs.close(); 
>       s.close();
>     }
>     catch (SQLException se) {
>       String SQLState = se.getSQLState(); 
>       String SQLMessage = se.getMessage();
>       System.out.println("Error = "+SQLState);
>       System.out.println(SQLMessage);
>     }
>   }
> }
> The results on my system are:
> Value=1
> isFirst=false isLast=false isAfterLast=false
> Value=3
> Value=1
> isFirst=true isLast=false isAfterLast=true
> Error = 24000
> Invalid cursor state - no current row.
> If you eliminate the first println call to isFirst() you get the following (correct)
results.
> Value=1
> Value=3
> Value=1
> isFirst=false isLast=false isAfterLast=true
> Error = 24000
> Invalid cursor state - no current row.
> Okay, so where did we go wrong?

-- 
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


Mime
View raw message