Dear Wiki user,
You have subscribed to a wiki page or wiki category on "Db-derby Wiki" for change notification.
The "JdbcFourOneTesting" page has been changed by lilywei.
The comment on this change is: create JdbcFourOneTesting page.
http://wiki.apache.org/db-derby/JdbcFourOneTesting
--------------------------------------------------
New page:
'''Table of Contents''' <<TableOfContents(3)>>
This webpage tracks the tests needed to support JDBC 4.1. See https://issues.apache.org/jira/browse/DERBY-4869
== JDBC 4.1 Testing ==
Legend:
* <<Icon(checkmark.png)>> - Done.
* <<Icon(angry.png)>> - Needs work
|| '''Status''' || '''Method''' || '''Description''' || '''Derby Change''' || '''Size''' ||
'''Owner''' ||
|| <<Icon(angry.png)>> ||'''!CallableStatement.getObject(int,Class)'''||Optional
new method. Retrieves an OUT or INOUT parameter as the desired class type.||Add to JDBC 4
implementation (requires generics).||Medium||Lily||
|| <<Icon(angry.png)>> ||'''!CallableStatement.getObject(String,Class)'''||Optional
new method. See getObject(int,Class).||Add to JDBC 4 implementation (requires generics).||Small||Lily||
|| <<Icon(angry.png)>> ||'''Connection.abort(Executor)'''||Mandatory new method.
Closes the Connection and lets the Executor release resources lazily.||Add to JDBC 4 implementation
(requires java.util.concurrent.Executor interface which was introduced in Java 5).||Medium||-||
|| <<Icon(angry.png)>> ||'''Connection.getNetworkTimeout()'''||Optional new method.||Throw
SQLFeatureNotSupportedException.||Small||-||
|| <<Icon(angry.png)>> ||'''Connection.getTypeMap()'''||Spec clarification.||No
action needed.||None||-||
|| <<Icon(angry.png)>> ||'''Connection.getSchema()'''||Mandatory new method. Gets
the name of the session's schema.||Add to JSR 169 implementation.||Small||-||
|| <<Icon(angry.png)>> ||'''Connection.setNetworkTimeout(Executor)'''||Optional
new method. Sets the client timeout.||Throw SQLFeatureNotSupportedException.||Small||-||
|| <<Icon(angry.png)>> ||'''Connection.setSchema(String)'''||Mandatory new method.
Sets the name of the session's schema.||Add to JSR 169 implementation.||Small||-||
|| <<Icon(angry.png)>> ||'''Connection.setTypeMap(Map)'''||Spec clarification.||No
action needed.||None||-||
|| <<Icon(angry.png)>> ||'''DBMD.generatedKeyAlwaysReturned()'''||Mandatory new
method. Reports whether Statement.getGeneratedKeys() always returns a ResultSet even after
Statement.execute(String query, String[] columnNames) is called with columnNames that are
not identity columns.||Embedded Derby throws an exception if you call execute(String,String[])
with columnNames that are not identity columns, so the return value of getGeneracase, getGeneratedKeys()
returns a ResultSet with generated values. Note that Derby only allows you to define one identity
column per table. Because of the network behavior, I think that DBMD.generatedKeyAlwaysReturned()
should return true.||Small||-||
|| <<Icon(angry.png)>> ||'''DBMD.getPseudoColumns(String,String,String,String)'''||Mandatory
new method. Shows the hidden columns in a table.||Derby doesn't have hidden columns. Return
an empty ResultSet with the correct column structure. ||Small||-||
|| <<Icon(angry.png)>> ||'''DBMD.getColumns(String,String,String,String)'''||Changed
method. New field reports whether a column is generated as defined by the SQL Standard, part
2, section 4.14.8. These are columns defined by generation clauses built out of deterministic
expressions involving other columns in the row. These are what Derby call generaated colmns||Add
this field to the metadata query.||Small||-||
|| <<Icon(angry.png)>> ||'''DBMD.getProcedureColumns(String,String,String,String)'''||Spec
clarification.||Nothing to do.||None||-||
|| <<Icon(angry.png)>> ||'''DBMD.supportsStatementPooling()'''||Spec clarification.||Nothing
to do.||None||-||
|| <<Icon(angry.png)>> ||'''Driver.getParentLogger()'''||Optional new method.
Returns the root logger for this Driver.||Derby doesn't use java.util.logging so this method
can throw SQLFeatureNotSupportedException.||Small||-||
|| <<Icon(angry.png)>> ||'''!PreparedStatement.execute()'''||Should throw a SQLTimeoutException
if the query runs beyond the limit set by setQueryTimeout().||The timeout work done for Statement.execute()
should apply here.||Small||-||
|| <<Icon(angry.png)>> ||'''!PreparedStatement.executeQuery()'''||Should throw
a SQLTimeoutException if the query runs beyond the limit set by setQueryTimeout().||The timeout
work done for Statement.execute() should apply here.||Small||-||
|| <<Icon(angry.png)>> ||'''!PreparedStatement.executeUpdate()'''||Should throw
a SQLTimeoutException if the query runs beyond the limit set by setQueryTimeout().||The timeout
work done for Statement.execute() should apply here.||Small||-||
|| <<Icon(angry.png)>> ||'''ResultSet.absolute(int)'''||If the argument is 0,
then the ResultSet is positioned before the first row.||Verify that Derby behaves this way.
If it doesn't, make this change. Note that Derby does behave this way. This is verified by
!ScrollCursors2Test.testScrollInsensitivePositive()||Small||-||
|| <<Icon(angry.png)>> ||'''ResultSet.getObject(int,Class)'''||Optional new method.
Returns the column as an object of the requested type, provided that the coercion is supported
in Appendix B, table B-1.||Add this overload to the JDBC 4 implementation (uses generics).
Some testing may be required to verify that Derby really supports the required coercions.||Medium||-||
|| <<Icon(angry.png)>> ||'''ResultSet.getObject(String,Class)'''||Mandatory new
method. Behaves like getObject(int,Class).||The work done for getObject(int,Class) should
apply here.||Small||-||
|| <<Icon(angry.png)>> ||'''Statement.addBatch(String)'''||Clarifies that this
method can't be called on a !PreparedStatement or !CallableStatement.||Verify that Derby behaves
this way. If it doesn't, make this change.||Small||-||
|| <<Icon(angry.png)>> ||'''Statement.closeOnCompletion()'''||Mandatory new method.
Automatically close the Statement when its dependent objects (like ResultSets) are closed.||Implement
this behavior.||Medium||-||
|| <<Icon(angry.png)>> ||'''Statement.execute(String)'''||Throw SQLTimeoutException
when the statement times out. Also don't allow this method to be called on !PreparedStatements
or !CallableStatements.||Implement this behavior.||Medium||-||
|| <<Icon(angry.png)>> ||'''Statement.execute(String,int)'''||See Statement.execute(String).||Changes
for execute(String) should apply here.||Small||-||
|| <<Icon(angry.png)>> ||'''Statement.execute(String,int[])'''||See Statement.execute(String).||Changes
for execute(String) should apply here.||Small||-||
|| <<Icon(angry.png)>> ||'''Statement.execute(String,String[])'''||See Statement.execute(String).||Changes
for execute(String) should apply here.||Small||-||
|| <<Icon(angry.png)>> ||'''Statement.executeBatch()'''||Throw SQLTimeoutException
as for Statement.execute(String).||Changes for execute(String) should apply here.||Small||-||
|| <<Icon(angry.png)>> ||'''Statement.executeQuery(String)'''||See Statement.execute(String).||Changes
for execute(String) should apply here.||Small||-||
|| <<Icon(angry.png)>> ||'''Statement.executeUpdate(String)'''||See Statement.execute(String).||Changes
for execute(String) should apply here.||Small||-||
|| <<Icon(angry.png)>> ||'''Statement.executeUpdate(String,int)'''||See Statement.execute(String).||Changes
for execute(String) should apply here.||Small||-||
|| <<Icon(angry.png)>> ||'''Statement.executeUpdate(String,int[])'''||See Statement.execute(String).||Changes
for execute(String) should apply here.||Small||-||
|| <<Icon(angry.png)>> ||'''Statement.executeUpdate(String,String[])'''||See Statement.execute(String).||Changes
for execute(String) should apply here.||Small||-||
|| <<Icon(angry.png)>> ||'''Statement.isCloseOnCompletion()'''||Mandatory new
method. Reports whether the Statement automatically closes when its dependent objects (like
!ResultSets) are closed.||Implement this behavior.||Small||-||
|| <<Icon(angry.png)>> ||'''Statement.setQueryTimeout(int)'''||Spec clarification.||Nothing
to do.||None||-||
|| <<Icon(angry.png)>> ||'''!CommonDataSource.getParentLogger()'''||Optional new
method. Returns the root logger for this data source.||Derby doesn't use java.util.logging
so this method can throw SQLFeatureNotSupportedException.||Small||-||