I think I just noticed an bug with the new query timeout function, I should have seen it during the review.
The timeout is being set on the class GenericPreparedStatement, but this represents a statement plan and can be shared across multiple connections (through the statement cache). Thus if two connections execute the same statement with different timeouts, they will interfere with each other with the timeout values. I think the solution is to pass the timeout into the execute method of org.apache.derby.iapi.sql.PreparedStatement, not store it as a field in GenericPreparedStatement. [ aside: Re-naming these classes to *Plan instead of *Statement might might the code easier to understand as they are not directly related to java.sql.PreparedStatement and do not behave like JDBC's PreparedStatement. org.apache.derby.impl.sql.GenericPreparedStatement org.apache.derby.iapi.sql.execute.ExecPreparedStatement org.apache.derby.iapi.sql.PreparedStatement end of aside ] Dan.
