[
http://issues.apache.org/jira/browse/DERBY-1295?page=comments#action_12415143 ]
Andreas Korneliussen commented on DERBY-1295:
---------------------------------------------
Thanks for contributing this patch.
I have added a subtask to fix the documentation issue.
Here are some minor review comments:
1. I think the patch could improve on the existing nesting of if-else
statements , instead it introduces one more level:
if (!onRow && (position == NEXT)) {
if (forMetaData && (lcc.getActivationCount() > 1)) {
} else if (owningStmt != null)
if (owningStmt.getResultSetType() == TYPE_FORWARD_ONLY) {
owningStmt.resultSetClosing(this);
}
}
One could use one if statment:
if (position == NEXT && !onRow &&
!(forMetaData && (lcc.getActivationCount() > 1)) &&
owningStmt!=null &&
owningStmt.getResultSetType() == TYPE_FORWARD_ONLY) {
owningStmt.resultSetClosing(this);
}
or, if you do not want to touch too much of the exisiting structure:
if (!onRow && (position == NEXT)) {
if (forMetaData && (lcc.getActivationCount() > 1)) {
} else if (owningStmt != null && owningStmt.getResultSetType() ==
TYPE_FORWARD_ONLY) {
owningStmt.resultSetClosing(this);
}
}
2.
The constructor of ScrollResultSetTest has a javadoc comment which should be
fixed:
+ /** Creates a new instance of SURBaseTest */
+ public ScrollResultSetTest(String name) {
+ super(name);
+ }
> Result sets of type TYPE_SCROLL_INSENSITIVE should not implicitly close due
> to positioning in autocommit mode
> -------------------------------------------------------------------------------------------------------------
>
> Key: DERBY-1295
> URL: http://issues.apache.org/jira/browse/DERBY-1295
> Project: Derby
> Type: Bug
> Components: JDBC
> Versions: 10.2.0.0
> Reporter: Dag H. Wanvik
> Assignee: Fernanda Pizzorno
> Priority: Minor
> Fix For: 10.2.0.0
> Attachments: Main.java, derby-1295.diff, derby-1295.stat
>
> The new JDBC 4 specification allows implementations to automatically
> close result sets of type FORWARD_ONLY when ResultSet#next returns
> false:
> (quote from JDBC preliminary spec):
> > 16.2.5 Closing a ResultSet Object
> > :
> > NOTE: Some JDBC driver implementations may also implicitly close the
> > ResultSet when the ResultSet type is TYPE_FORWARD_ONLY and the next
> > method of ResultSet returns false.
> This implies that other result set type are not free to do this.
> Currently, Derby will also implicitly close result sets of type
> TYPE_SCROLL_INSENSITIVE, if autocommit is enabled.
> Quote from Derby Developer's Guide, subsection "Using autocommit":
>
> > Using auto-commit
> >
> > A new connection to a Derby database is in auto-commit mode by
> > default, as specified by the JDBC standard. Auto-commit mode means
> > that when a statement is completed, the method commit is called on
> > that statement automatically. Auto-commit in effect makes every SQL
> > statement a transaction. The commit occurs when the statement
> > completes or the next statement is executed, whichever comes
> > first. In the case of a statement returning a ResultSet , the
> > statement completes when the last row of the ResultSet has been
> ****************************************
> > retrieved or the ResultSet has been closed explicitly.
> This seems to indicate that result set always closes when the last row
> has been seen, however, it seems the implementation only does this
> when autocommit is enabled. I will attach a repro.
> Anyway, this should be corrected for JDBC4 compliancy. Scrollable
> result sets should never close implicitly due to positioning,
> autocommit or not.
--
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