db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Philip Wilder (JIRA)" <derby-...@db.apache.org>
Subject [jira] Updated: (DERBY-213) ResultSet.next() after last row of FORWARD_ONLY cursor throws an SQL Exception with Network Server
Date Tue, 14 Jun 2005 19:39:49 GMT
     [ http://issues.apache.org/jira/browse/DERBY-213?page=all ]

Philip Wilder updated DERBY-213:

    Attachment: DERBY-213_6_13_2005.txt

DERBY-213 chat transcript for June 13, 2005 

Background information:
It was the intention of both Kathey and I to release a patch to the development community
June 10, 2005. However, prior to its release a problematic issue was identified.

* Discussed the problem with the latest patch. While the patch solves the problem of closing
the ResultSet implicitly the fix in question caused the ResultSet not to commit properly,
as per java.sql.Connection.setAutoCommit() java documentation.
* Discussed changes to the tester to help identify this new problem and ways in which the
tester could be further improved. The tester now checks to see if any locks are held by the
ResultSet post commit (using the org.apache.derby.diag.LockTable class) and the details of
this lock.
* Discussed alternatives to the current autocommit model and established the Client also needed
to execute the autocommit logic inside the nextX() method.
* Determined that the Client was not communicating with the Server as expected (commit was
not successful) but not the cause.
* Assigned tasks for the next meeting to be held on June 15, 2005. Kathey was to investigate
the DRDA communications to establish why the auto commit was not functioning as expected.
Philip was to organize all ResultSet behavior according to the JDBC specification in a coherent
manner and research Derby locking policy for both client and embedded to establish where they

> ResultSet.next() after last row of FORWARD_ONLY cursor throws an SQL Exception with Network
> --------------------------------------------------------------------------------------------------
>          Key: DERBY-213
>          URL: http://issues.apache.org/jira/browse/DERBY-213
>      Project: Derby
>         Type: Bug
>   Components: Network Server
>     Versions:
>     Reporter: Kathey Marsden
>     Assignee: Philip Wilder
>  Attachments: Client.java, Create.java, DERBY-213_6_13_2005.txt, DERBY-213_6_9_2005.txt,
DERBY-213_irc_6_3_2005, DERBY-213_irc_6_7_2005.txt, DERBY-213_irc_6_8_2005, IRCTranscript_June2_2005.txt,
ResultSet Outline.pdf, Server.java, resultset.java
> Network Server closes the result set if ResultSet.next() is 
> called after the last row of the result set.  The test code 
> below throws the following exception.
> SQLState:   null
> Severity: -99999
> Message:  Invalid operation: result set closed
> com.ibm.db2.jcc.am.SqlException: Invalid operation: result set 
> closed
>         at 
> com.ibm.db2.jcc.am.ResultSet.checkForClosedResultSet(ResultSet.j
> ava:3419)
>         at 
> com.ibm.db2.jcc.am.ResultSet.nextX(ResultSet.java:290)
>         at 
> com.ibm.db2.jcc.am.ResultSet.next(ResultSet.java:277)
>         at AfterLast.test(AfterLast.java:75)
>         at AfterLast.main(AfterLast.java:32)
> stmt.executeUpdate("CREATE  TABLE TAB ( I INT)");
> stmt.executeUpdate("INSERT INTO TAB VALUES(1)");
> stmt.executeUpdate("INSERT INTO TAB VALUES(2)");
> String sql ="SELECT * from tab";		
> ps = conn.prepareStatement(sql);
> ResultSet rs = ps.executeQuery();
> System.out.println(sql);
> while (rs.next())
> System.out.println(rs.getInt(1));
> try {
> 	System.out.println("one more next");
> 	rs.next();
> 		}
>     catch (Exception e)
> 		{
> 		System.out.println("FAIL: next should return false not throw 
> exception");
> 		e.printStackTrace();
> 		}

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