-
Notifications
You must be signed in to change notification settings - Fork 18
JDBC API
- Contents
-
JDBC API
- Summary
- Driver type
-
API support
-
java.sql
packagejava.sql.Array
interface (optional)java.sql.Blob
interface (optional)java.sql.CallableStatement
interface (optional)java.sql.Clob
interface (optional)java.sql.Connection
interfacejava.sql.DatabaseMetaData
interfacejava.sql.Driver
interfacejava.sql.DriverAction
interface (optional)java.sql.NClob
interface (optional)java.sql.ParameterMetaData
interfacejava.sql.PreparedStatement
interfacejava.sql.Ref
interface (optional)java.sql.ResultSet
interfacejava.sql.ResultSetMetaData
interfacejava.sql.RowId
interface (optional)java.sql.Savepoint
interface (optional)java.sql.SQLInput
interface (optional)java.sql.SQLOutput
interface (optional)java.sql.SQLXML
interface (optional)java.sql.Statement
interfacejava.sql.Struct
interface (optional)java.sql.Wrapper
interface
-
javax.sql
package (optional)
-
- Links
- Notes
The following things are known to have issues or are not supported yet:
- Date/time values are broken in tarantool.
- BLOBs are broken in tarantool.
- Large INTEGER values cannot be inserted (broken in tarantool too).
- No callable / prepared callable statements (optional).
- No escape syntax support.
- No batch execution.
- 75% of provided database metainfo is incorrect or not verified.
- Read-only connections (transactions?).
- No transaction and savepoint support.
- No In/Out parameters metadata provided for prepared and callable statements.
- No cursors (incremental fetch) support.
- ResultSet met info is not fully implemented.
- No UDT support.
- No multi results set is supported for statements.
This is not an exhaustive list.
The connector is Type-4
driver written in pure Java,
and uses a native network protocol to communicate with
Tarantool server.
See also:
- Chapter 9.1 in JDBC spec.
- Tarantool SQL Protocol.
NOTE: * optional interface, but if it's implemented then the implementation must support all methods required.
Interface | Required | Supported | Covered | Details |
---|---|---|---|---|
Array* | 11/11 | 0/11 | 0/11 | #65; blocked |
Blob* | 11/11 | 0/11 | 0/11 | #67 |
CallableStatement* | 25/121 | 0/25 + 0/96 | 0/25 + 0/96 | #64 |
Clob* | 13/13 | 0/13 | 0/13 | #66; blocked |
Connection | 32/52 | 19/32 + 2/20 | 12/32 + 2/20 | |
DatabaseMetaData | 176/176 | 52/176 | 20/176 | |
Driver | 7/8 | 7/7 + 0/1 | 4/7 + 0/1 | |
DriverAction* | 1/1 | 0/1 | 0/1 | #174 |
NClob* | 13/13 | 0/13 | 0/13 | #68; blocked |
ParameterMetaData | 9/9 | 0/9 | 0/9 | #173 |
PreparedStatement | 34/58 | 27/34 + 4/24 | 12/34 + 0/24 | |
Ref* | 4/4 | 0/4 | 0/4 | |
ResultSet | 56/193 | 47/56 + 17/137 | 16/56 + 13/137 | |
ResultSetMetaData | 21/21 | 3/21 | 3/21 | |
RowId* | 4/4 | 0/4 | 0/4 | |
Savepoint* | 2/2 | 0/2 | 0/2 | #177; blocked |
SQLInput* | 19/28 | 0/19 + 0/9 | 0/19 + 0/9 | |
SQLOutput* | 18/28 | 0/18 + 0/10 | 0/18 + 0/10 | |
SQLXML* | 9/9 | 0/9 | 0/9 | #69; blocked |
Statement | 37/50 | 17/37 + 0/13 | 12/38 + 0/13 | |
Struct* | 3/3 | 0/3 | 0/3 | #70; blocked |
Wrapper | 16/18 | 12/16 + 0/2 | 12/16 + 0/2 | #175 |
NOTE: All methods on the
Array
interface must be fully implemented if the JDBC driver supports the data type.
Method | Required? | Supported? | Covered? | Details |
---|---|---|---|---|
free() | Yes | No | No | |
getArray() | Yes | No | No | |
getArray(Map<String,Class<?>>) | Yes | No | No | |
getArray(long, int) | Yes | No | No | |
getArray(long, int, Map<String,Class<?>>) | Yes | No | No | |
getBaseType() | Yes | No | No | |
getBaseTypeName() | Yes | No | No | |
getResultSet() | Yes | No | No | |
getResultSet(Map<String,Class<?>>) | Yes | No | No | |
getResultSet(long, int) | Yes | No | No | |
getResultSet(long, int, Map<String,Class<?>>) | Yes | No | No |
NOTE: All methods on the
Blob
interface must be fully implemented if the JDBC driver supports the data type.
Method | Required? | Supported? | Covered? | Details |
---|---|---|---|---|
free() | Yes | No | No | No |
getBinaryStream() | Yes | No | No | No |
getBinaryStream(long, long) | Yes | No | No | No |
getBytes(long, int) | Yes | No | No | No |
length() | Yes | No | No | No |
position(Blob, long) | Yes | No | No | No |
position(byte[], long) | Yes | No | No | No |
setBinaryStream(long) | Yes | No | No | No |
setBytes(long, byte[]) | Yes | No | No | No |
setBytes(long, byte[], int, int) | Yes | No | No | No |
truncate(long) | Yes | No | No | No |
NOTE: It must implement the
CallableStatement
interface if the methodDatabaseMetaData.supportsStoredProcedures()
returnstrue
NOTE: * is not required to implement the methods unless the driver supports the associated data type.
Method | Required? | Supported? | Covered? | Details |
---|---|---|---|---|
getArray(String) | No* | No | No | |
getArray(int) | No* | No | No | |
getBigDecimal(String) | No | No | No | |
getBigDecimal(int) | Yes | No | No | |
getBigDecimal(int, int) | No | No | No | |
getBlob(String) | No* | No | No | |
getBlob(int) | No* | No | No | |
getBoolean(String) | No | No | No | |
getBoolean(int) | Yes | No | No | |
getByte(String) | No | No | No | |
getByte(int) | Yes | No | No | |
getBytes(String) | No | No | No | |
getBytes(int) | Yes | No | No | |
getCharacterStream(String) | No | No | No | |
getCharacterStream(int) | Yes | No | No | |
getClob(String) | No* | No | No | |
getClob(int) | No* | No | No | |
getDate(String) | No | No | No | |
getDate(String, Calendar) | No | No | No | |
getDate(int) | Yes | No | No | |
getDate(int, Calendar) | Yes | No | No | |
getDouble(String) | No | No | No | |
getDouble(int) | Yes | No | No | |
getFloat(String) | No | No | No | |
getFloat(int) | Yes | No | No | |
getInt(String) | No | No | No | |
getInt(int) | Yes | No | No | |
getLong(String) | No | No | No | |
getLong(int) | Yes | No | No | |
getNCharacterStream(String) | No* | No | No | |
getNCharacterStream(int) | No* | No | No | |
getNClob(String) | No* | No | No | |
getNClob(int) | No* | No | No | |
getNString(String) | No* | No | No | |
getNString(int) | No* | No | No | |
getObject(String) | No | No | No | |
getObject(String, Class) | No | No | No | |
getObject(String, Map<String,Class<?>>) | No | No | No | |
getObject(int) | Yes | No | No | |
getObject(int, Class) | No | No | No | |
getObject(int, Map<String,Class<?>>) | No* | No | No | |
getRef(String) | No* | No | No | |
getRef(int) | No* | No | No | |
getRowId(String) | No* | No | No | |
getRowId(int) | No* | No | No | |
getSQLXML(String) | No* | No | No | |
getSQLXML(int) | No* | No | No | |
getShort(String) | No | No | No | |
getShort(int) | Yes | No | No | |
getString(String) | No | No | No | |
getString(int) | Yes | No | No | |
getTime(String) | No | No | No | |
getTime(String, Calendar) | No | No | No | |
getTime(int) | Yes | No | No | |
getTime(int, Calendar) | Yes | No | No | |
getTimestamp(String) | No | No | No | |
getTimestamp(String, Calendar) | No | No | No | |
getTimestamp(int) | Yes | No | No | |
getTimestamp(int, Calendar) | Yes | No | No | |
getURL(String) | No* | No | No | |
getURL(int) | No* | No | No | |
registerOutParameter(String, int) | No | No | No | |
registerOutParameter(String, int, String) | No* | No | No | |
registerOutParameter(String, int, int) | No | No | No | |
registerOutParameter(String, SQLType) | No | No | No | |
registerOutParameter(String, SQLType, int) | No | No | No | |
registerOutParameter(String, SQLType, String) | No | No | No | |
registerOutParameter(int, int) | Yes | No | No | |
registerOutParameter(int, int, String) | Yes | No | No | |
registerOutParameter(int, int, int) | Yes | No | No | |
registerOutParameter(int, SQLType) | Yes | No | No | |
registerOutParameter(int, SQLType, int) | Yes | No | No | |
registerOutParameter(int, SQLType, String) | Yes | No | No | |
setAsciiStream(String, InputStream) | No | No | No | |
setAsciiStream(String, InputStream, int) | No | No | No | |
setAsciiStream(String, InputStream, long) | No | No | No | |
setBigDecimal(String, BigDecimal) | No | No | No | |
setBinaryStream(String, InputStream) | No | No | No | |
setBinaryStream(String, InputStream, int) | No | No | No | |
setBinaryStream(String, InputStream, long) | No | No | No | |
setBlob(String, Blob) | No | No | No | |
setBlob(String, InputStream) | No | No | No | |
setBlob(String, InputStream, long) | No | No | No | |
setBoolean(String, boolean) | No | No | No | |
setByte(String, byte) | No | No | No | |
setBytes(String, byte[]) | No | No | No | |
setCharacterStream(String, Reader) | No | No | No | |
setCharacterStream(String, Reader, int) | No | No | No | |
setCharacterStream(String, Reader, long) | No | No | No | |
setClob(String, Clob) | No | No | No | |
setClob(String, Reader) | No | No | No | |
setClob(String, Reader, long) | No | No | No | |
setDate(String, Date) | No | No | No | |
setDate(String, Date, Calendar) | No | No | No | |
setDouble(String, double) | No | No | No | |
setFloat(String, float) | No | No | No | |
setInt(String, int) | No | No | No | |
setLong(String, long) | No | No | No | |
setNCharacterStream(String, Reader) | No | No | No | |
setNCharacterStream(String, Reader, long) | No | No | No | |
setNClob(String, NClob) | No | No | No | |
setNClob(String, Reader) | No | No | No | |
setNClob(String, Reader, long) | No | No | No | |
setNString(String, String) | No | No | No | |
setNull(String, int) | No | No | No | |
setNull(String, int, String) | No* | No | No | |
setObject(String, Object) | No | No | No | |
setObject(String, Object, int) | No | No | No | |
setObject(String, Object, int, int) | No | No | No | |
setObject(String, Object, SQLType) | No | No | No | |
setObject(String, Object, SQLType, int) | No | No | No | |
setRowId(String, RowId) | No | No | No | |
setSQLXML(String, SQLXML) | No | No | No | |
setShort(String, short) | No | No | No | |
setString(String, String) | No | No | No | |
setTime(String, Time) | No | No | No | |
setTime(String, Time, Calendar) | No | No | No | |
setTimestamp(String, Timestamp) | No | No | No | |
setTimestamp(String, Timestamp, Calendar) | No | No | No | |
setURL(String, URL) | No | No | No | |
wasNull() | Yes | No | No |
NOTE: All methods on the
Clob
interface must be fully implemented if the JDBC driver supports the data type.
Method | Required? | Supported? | Covered? | Details |
---|---|---|---|---|
free() | Yes | No | No | |
getAsciiStream() | Yes | No | No | |
getCharacterStream() | Yes | No | No | |
getCharacterStream(long, length) | Yes | No | No | |
getSubString(long, int) | Yes | No | No | |
length() | Yes | No | No | |
position(Clob, long) | Yes | No | No | |
position(String, long) | Yes | No | No | |
setAsciiStream(long) | Yes | No | No | |
setCharacterStream(long) | Yes | No | No | |
setString(long, String) | Yes | No | No | |
setString(long, String, int, int) | Yes | No | No | |
truncate(long) | Yes | No | No |
NOTE: * is not required to implement the methods unless the driver supports the associated data type.
NOTE: ** is not required to implement
prepareStatement(String sql, Statement.RETURN_GENERATED_KEYS)
unless the driver supports generated keys.
Method | Required? | Supported? | Covered? | Details |
---|---|---|---|---|
abort(Executor) | Yes | No | No | #71 |
clearWarnings() | Yes | Yes | No | dumb, but enough |
close() | Yes | Yes | Yes | |
commit() | Yes | No | No | #63; blocked |
createArrayOf(String, Object[]) | No* | No | No | #65; blocked |
createBlob() | No* | No | No | #67 |
createClob() | No* | No | No | #66; blocked |
createNClob() | No* | No | No | #66; blocked |
createSQLXML() | No* | No | No | #69; blocked |
createStatement() | Yes | Yes | Yes | |
createStatement(int, int) | Yes | Yes | Yes | |
createStatement(int, int, int) | Yes | Yes | Yes | |
createStruct(String, Object[]) | No* | No | No | #70; blocked |
getAutoCommit() | Yes | No | No | #63; blocked |
getCatalog() | Yes | Yes | No | dumb, but enough |
getClientInfo() | Yes | No | No | #74 |
getClientInfo(String) | Yes | No | No | #74 |
getHoldability() | Yes | Yes | Yes | |
getMetaData() | Yes | Yes | Yes | |
getNetworkTimeout() | No | Yes | Yes | |
getSchema() | Yes | Yes | No | dumb, but enough |
getTransactionIsolation() | Yes | No | No | #103; blocked |
getTypeMap() | No* | No | No | |
getWarnings() | Yes | Yes | No | dumb, but enough |
isClosed() | Yes | Yes | Yes | |
isReadOnly() | Yes | Yes | No | dumb, #176 |
isValid(int) | Yes | Yes | Yes | w/o timeout |
nativeSQL(String) | Yes | No | No | #76 |
prepareCall(String) | No | No | No | |
prepareCall(String, int, int) | No | No | No | |
prepareCall(String, int, int, int) | No | No | No | |
prepareStatement(String) | Yes | Yes | Yes | |
prepareStatement(String, String[]) | No | No | No | #77; blocked |
prepareStatement(String, int[]) | No | No | No | #77; blocked |
prepareStatement(String, int) | No** | No | No | #77; blocked |
prepareStatement(String, int, int) | Yes | Yes | Yes | |
prepareStatement(String, int, int, int) | Yes | Yes | Yes | |
releaseSavepoint(Savepoint) | No | No | No | #177 |
rollback() | Yes | No | No | #63; blocked |
rollback(Savepoint) | No | No | No | #177 |
setAutoCommit(boolean) | Yes | No | No | #63; blocked |
setCatalog(String) | Yes | Yes | No | dumb, but enough |
setClientInfo(Properties) | Yes | No | No | #74 |
setClientInfo(String, String) | Yes | No | No | #74 |
setHoldability(int) | Yes | Yes | Yes | HOLD_CURSORS_OVER_COMMIT only |
setNetworkTimeout(Executor, int) | No | Yes | Yes | |
setReadOnly(boolean) | Yes | No | No | #176 |
setSavepoint() | No | No | No | #177 |
setSavepoint(String) | No | No | No | #177 |
setSchema(String) | Yes | Yes | No | dumb, but enough |
setTransactionIsolation(int) | Yes | No | No | #103; blocked |
setTypeMap(Map<String,Class<?>>) | No | No | No |
Method | Required? | Supported? | Covered? | Details |
---|---|---|---|---|
allProceduresAreCallable() | Yes | No | No | #110 |
allTablesAreSelectable() | Yes | No | No | #110 |
autoCommitFailureClosesAllResultSets() | Yes | No | No | #112 |
dataDefinitionCausesTransactionCommit() | Yes | No | No | #112 |
dataDefinitionIgnoredInTransactions() | Yes | No | No | #112 |
deletesAreDetected(int) | Yes | Yes | Yes | |
doesMaxRowSizeIncludeBlobs() | Yes | No | No | #109 |
generatedKeyAlwaysReturned() | Yes | No | No | #112 |
getAttributes(String, String, String, String) | Yes | Yes | No | dumb, but enough (until we'll add UDTs) |
getBestRowIdentifier(String, String, String, int, boolean) | Yes | No | No | #114 |
getCatalogSeparator() | Yes | Yes | No | |
getCatalogTerm() | Yes | Yes | No | |
getCatalogs() | Yes | No | No | #105 |
getClientInfoProperties() | Yes | No | No | #74 |
getColumnPrivileges(String, String, String, String) | Yes | No | No | #115 |
getColumns(String, String, String, String) | Yes | Yes | Yes | |
getConnection() | Yes | Yes | No | |
getCrossReference(String x 6) | Yes | No | No | #116 |
getDatabaseMajorVersion() | Yes | No | No | #106 |
getDatabaseMinorVersion() | Yes | No | No | #106 |
getDatabaseProductName() | Yes | Yes | No | #106 |
getDatabaseProductVersion() | Yes | Yes | No | #106 |
getDefaultTransactionIsolation() | Yes | No | No | #103; blocked |
getDriverMajorVersion() | Yes | Yes | No | |
getDriverMinorVersion() | Yes | Yes | No | |
getDriverName() | Yes | Yes | No | |
getDriverVersion() | Yes | Yes | No | |
getExportedKeys(String, String, String) | Yes | No | No | #116 |
getExtraNameCharacters() | Yes | No | No | #105 |
getFunctionColumns(String, String, String, String) | Yes | No | No | #118 |
getFunctions(String, String, String) | Yes | No | No | #104 |
getIdentifierQuoteString() | Yes | No | No | #105 |
getImportedKeys(String, String, String) | Yes | No | No | #116 |
getIndexInfo(String, String, String, boolean, boolean) | Yes | No | No | #117 |
getJDBCMajorVersion() | Yes | Yes | No | #106 |
getJDBCMinorVersion() | Yes | Yes | No | #106 |
getMaxBinaryLiteralLength() | Yes | No | No | #105 |
getMaxCatalogNameLength() | Yes | No | No | #105 |
getMaxCharLiteralLength() | Yes | No | No | #105 |
getMaxColumnNameLength() | Yes | No | No | #105 |
getMaxColumnsInGroupBy() | Yes | No | No | #109 |
getMaxColumnsInIndex() | Yes | No | No | #109 |
getMaxColumnsInOrderBy() | Yes | No | No | #109 |
getMaxColumnsInSelect() | Yes | No | No | #109 |
getMaxColumnsInTable() | Yes | No | No | #109 |
getMaxConnections() | Yes | No | No | #109 |
getMaxCursorNameLength() | Yes | No | No | #105 |
getMaxIndexLength() | Yes | No | No | #105 |
getMaxLogicalLobSize() | Yes | No | No | #109 |
getMaxProcedureNameLength() | Yes | No | No | #105 |
getMaxRowSize() | Yes | No | No | #109 |
getMaxSchemaNameLength() | Yes | No | No | #105 |
getMaxStatementLength() | Yes | No | No | #105 |
getMaxStatements() | Yes | No | No | #109 |
getMaxTableNameLength() | Yes | No | No | #105 |
getMaxTablesInSelect() | Yes | No | No | #109 |
getMaxUserNameLength() | Yes | No | No | #105 |
getNumericFunctions() | Yes | No | No | #82 |
getPrimaryKeys(String, String, String) | Yes | Yes | Yes | |
getProcedureColumns(String, String, String, String) | Yes | No | No | #118 |
getProcedureTerm() | Yes | No | No | #104 |
getProcedures(String, String, String) | Yes | No | No | #105 |
getPseudoColumns(String, String, String, String) | Yes | Yes | No | dumb, but enough |
getResultSetHoldability() | Yes | Yes | Yes | |
getRowIdLifetime() | Yes | Yes | No | |
getSQLKeywords()() | Yes | Yes | No | |
getSQLStateType() | Yes | Yes | No | |
getSchemaTerm() | Yes | No | No | #105 |
getSchemas() | Yes | No | No | #105 |
getSchemas(String, String) | Yes | No | No | #105 |
getSearchStringEscape() | Yes | No | No | #119 |
getStringFunctions() | Yes | No | No | #82 |
getSuperTables(String, String, String) | Yes | Yes | No | dumb, but enough (until we'll add structured types) |
getSuperTypes(String, String, String) | Yes | Yes | No | dumb, but enough (until we'll add structured types) |
getSystemFunctions() | Yes | No | No | #82 |
getTablePrivileges(String, String, String) | Yes | No | No | #115 |
getTableTypes() | Yes | Yes | Yes | |
getTables(String, String, String, String[]) | Yes | No | No | #107 |
getTimeDateFunctions() | Yes | No | No | #82 |
getTypeInfo() | Yes | No | No | #113 |
getUDTs(String, String, String, int[]) | Yes | Yes | No | dumb, but enough |
getURL() | Yes | Yes | No | |
getUserName() | Yes | Yes | No | |
getVersionColumns(String, String, String) | Yes | Yes | No | |
insertsAreDetected(int) | Yes | Yes | Yes | |
isCatalogAtStart() | Yes | Yes | No | |
isReadOnly() | Yes | Yes | No | dumb, but enough |
locatorsUpdateCopy() | Yes | Yes | No | |
nullPlusNonNullIsNull() | Yes | Yes | No | |
nullsAreSortedAtEnd() | Yes | Yes | Yes | |
nullsAreSortedAtStart() | Yes | Yes | Yes | |
nullsAreSortedHigh() | Yes | Yes | Yes | |
nullsAreSortedLow() | Yes | Yes | Yes | |
othersDeletesAreVisible(int) | Yes | Yes | Yes | |
othersInsertsAreVisible(int) | Yes | Yes | Yes | |
othersUpdatesAreVisible(int) | Yes | Yes | Yes | |
ownDeletesAreVisible(int) | Yes | Yes | Yes | |
ownInsertsAreVisible(int) | Yes | Yes | Yes | |
ownUpdatesAreVisible(int) | Yes | Yes | Yes | |
storesLowerCaseIdentifiers() | Yes | Yes | No | #105 |
storesLowerCaseQuotedIdentifiers() | Yes | Yes | No | #105 |
storesMixedCaseIdentifiers() | Yes | No | No | #105 |
storesMixedCaseQuotedIdentifiers() | Yes | Yes | No | #105 |
storesUpperCaseIdentifiers() | Yes | No | No | #105 |
storesUpperCaseQuotedIdentifiers() | Yes | Yes | No | #105 |
supportsANSI92EntryLevelSQL() | Yes | No | No | #108 |
supportsANSI92FullSQL() | Yes | No | No | #108 |
supportsANSI92IntermediateSQL() | Yes | No | No | #108 |
supportsAlterTableWithAddColumn() | Yes | No | No | #108 |
supportsAlterTableWithDropColumn() | Yes | No | No | #108 |
supportsBatchUpdates() | Yes | No | No | #108 |
supportsCatalogsInDataManipulation() | Yes | No | No | #108 |
supportsCatalogsInIndexDefinitions() | Yes | No | No | #108 |
supportsCatalogsInPrivilegeDefinitions() | Yes | No | No | #108 |
supportsCatalogsInProcedureCalls() | Yes | No | No | #108 |
supportsCatalogsInTableDefinitions() | Yes | No | No | #108 |
supportsColumnAliasing() | Yes | No | No | #108 |
supportsConvert() | Yes | No | No | #108 |
supportsConvert(int fromType, int toType) | Yes | No | No | #108 |
supportsCoreSQLGrammar() | Yes | No | No | #108 |
supportsCorrelatedSubqueries() | Yes | No | No | #108 |
supportsDataDefinitionAndDataManipulationTransactions() | Yes | No | No | #108 |
supportsDataManipulationTransactionsOnly() | Yes | No | No | #108 |
supportsDifferentTableCorrelationNames() | Yes | No | No | #108 |
supportsExpressionsInOrderBy() | Yes | No | No | #108 |
supportsExtendedSQLGrammar() | Yes | No | No | #108 |
supportsFullOuterJoins() | Yes | No | No | #108 |
supportsGetGeneratedKeys() | Yes | No | No | #108 |
supportsGroupBy() | Yes | No | No | #108 |
supportsGroupByBeyondSelect() | Yes | No | No | #108 |
supportsGroupByUnrelated() | Yes | No | No | #108 |
supportsIntegrityEnhancementFacility() | Yes | No | No | #108 |
supportsLikeEscapeClause() | Yes | No | No | #108 |
supportsLimitedOuterJoins() | Yes | No | No | #108 |
supportsMinimumSQLGrammar() | Yes | No | No | #108 |
supportsMixedCaseIdentifiers() | Yes | No | No | #105 + #108 |
supportsMixedCaseQuotedIdentifiers() | Yes | No | No | #105 + #108 |
supportsMultipleOpenResults() | Yes | No | No | #108 |
supportsMultipleResultSets() | Yes | No | No | #108 |
supportsMultipleTransactions() | Yes | No | No | #108 |
supportsNamedParameters() | Yes | No | No | #108 |
supportsNonNullableColumns() | Yes | No | No | #108 |
supportsOpenCursorsAcrossCommit() | Yes | No | No | #108 |
supportsOpenCursorsAcrossRollback() | Yes | No | No | #108 |
supportsOpenStatementsAcrossCommit() | Yes | No | No | #108 |
supportsOpenStatementsAcrossRollback() | Yes | No | No | #108 |
supportsOrderByUnrelated() | Yes | No | No | #108 |
supportsOuterJoins() | Yes | No | No | #108 |
supportsPositionedDelete() | Yes | No | No | #108 |
supportsPositionedUpdate() | Yes | No | No | #108 |
supportsRefCursors() | Yes | No | No | #108 |
supportsResultSetConcurrency(int, int) | Yes | Yes | Yes | |
supportsResultSetHoldability(int) | Yes | Yes | Yes | |
supportsResultSetType(int) | Yes | Yes | Yes | |
supportsSavepoints() | Yes | No | No | #108 |
supportsSchemasInDataManipulation() | Yes | No | No | #108 |
supportsSchemasInIndexDefinitions() | Yes | No | No | #108 |
supportsSchemasInPrivilegeDefinitions() | Yes | No | No | #108 |
supportsSchemasInProcedureCalls() | Yes | No | No | #108 |
supportsSchemasInTableDefinitions() | Yes | No | No | #108 |
supportsSelectForUpdate() | Yes | No | No | #108 |
supportsStatementPooling() | Yes | No | No | #108 |
supportsStoredFunctionsUsingCallSyntax() | Yes | No | No | #82 + #108 |
supportsStoredProcedures() | Yes | No | No | #82 + #108 |
supportsSubqueriesInComparisons() | Yes | No | No | #108 |
supportsSubqueriesInExists() | Yes | No | No | #108 |
supportsSubqueriesInIns() | Yes | No | No | #108 |
supportsSubqueriesInQuantifieds() | Yes | No | No | #108 |
supportsTableCorrelationNames() | Yes | No | No | #108 |
supportsTransactionIsolationLevel(int) | Yes | No | No | #108 |
supportsTransactions() | Yes | No | No | #108 |
supportsUnion() | Yes | No | No | #108 |
supportsUnionAll() | Yes | No | No | #108 |
updatesAreDetected(int) | Yes | Yes | Yes | |
usesLocalFilePerTable() | Yes | Yes | No | |
usesLocalFiles() | Yes | Yes | No |
NOTE: * implementation must contain a static initializer that will be called when the driver is loaded and automatically register an instance of the driver.
Method | Required? | Supported? | Covered? | Details |
---|---|---|---|---|
static { } | Yes* | Yes | Yes | |
acceptsURL(String) | Yes | Yes | No | |
connect(String, Properties) | Yes | Yes | Yes | |
getMajorVersion() | Yes | Yes | No | dumb |
getMinorVersion() | Yes | Yes | No | dumb |
getParentLogger() | No | No | No | |
getPropertyInfo(String, Properties) | Yes | Yes | Yes | |
jdbcCompliant() | Yes | Yes | Yes | false |
NOTE: All methods on the
DriverAction
interface must be fully implemented if the JDBC driver supports driver notifications.
Method | Required? | Supported? | Covered? | Details |
---|---|---|---|---|
deregister() | Yes | No | No |
NOTE: All methods on the
NClob
interface must be fully implemented if the JDBC driver supports the data type.
Method | Required? | Supported? | Covered? | Details |
---|---|---|---|---|
free() | Yes | No | No | |
getAsciiStream() | Yes | No | No | |
getCharacterStream() | Yes | No | No | |
getCharacterStream(long, length) | Yes | No | No | |
getSubString(long, int) | Yes | No | No | |
length() | Yes | No | No | |
position(Clob, long) | Yes | No | No | |
position(String, long) | Yes | No | No | |
setAsciiStream(long) | Yes | No | No | |
setCharacterStream(long) | Yes | No | No | |
setString(long, String) | Yes | No | No | |
setString(long, String, int, int) | Yes | No | No | |
truncate(long) | Yes | No | No |
Method | Required? | Supported? | Covered? | Details |
---|---|---|---|---|
getParameterClassName(int) | Yes | No | No | |
getParameterCount() | Yes | No | No | |
getParameterMode(int) | Yes | No | No | |
getParameterType(int) | Yes | No | No | |
getParameterTypeName(int) | Yes | No | No | |
getPrecision(int) | Yes | No | No | |
getScale(int) | Yes | No | No | |
isNullable(int) | Yes | No | No | |
isSigned(int) | Yes | No | No |
NOTE: * is not required to implement the methods unless the driver supports the associated data type.
Method | Required? | Supported? | Covered? | Details |
---|---|---|---|---|
addBatch() | Yes | No | No | #62 |
clearParameters() | Yes | Yes | No | |
execute() | Yes | Yes | Yes | |
executeQuery() | Yes | Yes | Yes | |
executeLargeUpdate() | No | No | No | |
executeUpdate() | Yes | Yes | Yes | |
getMetaData() | No | Yes | No | |
getParameterMetaData() | Yes | No | No | #173 |
setArray(int, Array) | No* | No | No | |
setAsciiStream(int, InputStream) | No | No | No | |
setAsciiStream(int, InputStream, int) | Yes | Yes | No | length is ignored |
setAsciiStream(int, InputStream, long) | Yes | No | No | |
setBigDecimal(int, BigDecimal) | Yes | Yes | Yes | |
setBinaryStream(int, InputStream) | No | No | No | |
setBinaryStream(int, InputStream, int) | Yes | Yes | No | length is ignored |
setBinaryStream(int, InputStream, long) | Yes | No | No | |
setBlob(int, Blob) | No* | No | No | |
setBlob(int, InputStream) | No* | No | No | |
setBlob(int, InputStream, long) | No* | No | No | |
setBoolean(int, boolean) | Yes | Yes | No | |
setByte(int, byte) | Yes | Yes | Yes | |
setBytes(int, byte[]) | Yes | Yes | Yes | |
setCharacterStream(int, Reader) | No | No | No | |
setCharacterStream(int, Reader, int) | Yes | No | No | |
setCharacterStream(int, Reader, long) | Yes | No | No | |
setClob(int, Clob) | No* | No | No | |
setClob(int, Reader) | No* | No | No | |
setClob(int, Reader, long) | No* | No | No | |
setDate(int, Date) | Yes | Yes | Yes | |
setDate(int, Date, Calendar) | Yes | Yes | No | calendar is ignored |
setDouble(int, double) | Yes | Yes | Yes | |
setFloat(int, float) | Yes | Yes | Yes | |
setInt(int, int) | Yes | Yes | Yes | |
setLong(int, long) | Yes | Yes | Yes | |
setNCharacterStream(int, Reader) | No* | No | No | |
setNCharacterStream(int, Reader, long) | No* | No | No | |
setNClob(int, NClob) | No* | No | No | |
setNClob(int, Reader) | No* | No | No | |
setNClob(int, Reader, long) | No* | No | No | |
setNString(int, String) | No* | Yes | No | encoding is ignored |
setNull(int, int) | Yes | Yes | No | |
setNull(int, int, String) | No* | Yes | No | |
setObject(int, Object) | Yes | Yes | No | |
setObject(int, Object, SQLType) | Yes | No | No | |
setObject(int, Object, SQLType, int) | Yes | No | No | |
setObject(int, Object, int) | Yes | Yes | No | type is ignored |
setObject(int, Object, int, int) | Yes | Yes | No | length is ignored |
setRef(int, Ref) | No* | No | No | |
setRowId(int, RowId) | No* | No | No | |
setSQLXML(int, SQLXMLmlObject) | No* | No | No | |
setShort(int, short) | Yes | Yes | No | |
setString(int, String) | Yes | Yes | Yes | |
setTime(int, Time) | Yes | Yes | No | |
setTime(int, Time, Calendar) | Yes | Yes | No | calendar is ignored |
setTimestamp(int, Timestamp) | Yes | Yes | No | |
setTimestamp(int, Timestamp, Calendar) | Yes | Yes | No | calendar is ignored |
setURL(int, URL) | No* | Yes | No | |
setUnicodeStream(int, InputStream, int) | No | Yes | No | length is ignored |
NOTE: All methods on the
Ref
interface must be fully implemented if the JDBC driver supports the data type.
Method | Required? | Supported? | Covered? | Details |
---|---|---|---|---|
getBaseTypeName() | Yes | No | No | |
getObject() | Yes | No | No | |
getObject(Map<String,Class<?>>) | Yes | No | No | |
setObject(Object) | Yes | No | No |
NOTE: * is not required to implement the methods unless the driver supports the associated data type.
NOTE: ** is not required to implement the methods unless driver supports a
ResultSet
concurrency ofCONCUR_UPDATABLE
NOTE: *** is not required to implement the methods unless driver supports a
ResultSet
type ofTYPE_SCROLL_SENSITIVE
orTYPE_SCROLL_INSENSITIVE
Method | Required? | Supported? | Covered? | Details |
---|---|---|---|---|
absolute(int) | No*** | Yes | Yes | |
afterLast() | No*** | Yes | Yes | |
beforeFirst() | No*** | Yes | Yes | |
cancelRowUpdates() | No** | No | No | |
clearWarnings() | Yes | Yes | No | dumb |
close() | Yes | Yes | Yes | |
deleteRow() | No** | No | No | |
findColumn(String) | Yes | Yes | Yes | |
first() | No*** | Yes | Yes | |
getArray(String) | No* | No | No | |
getArray(int) | No* | No | No | |
getAsciiStream(String) | Yes | Yes | No | |
getAsciiStream(int) | Yes | Yes | No | |
getBigDecimal(String) | Yes | Yes | Yes | |
getBigDecimal(String, int) | No | Yes | Yes | |
getBigDecimal(int) | Yes | Yes | Yes | |
getBigDecimal(int, int) | No | Yes | Yes | |
getBinaryStream(String) | Yes | Yes | No | |
getBinaryStream(int) | Yes | Yes | No | |
getBlob(String) | No* | No | No | |
getBlob(int) | No* | No | No | |
getBoolean(String) | Yes | Yes | No | |
getBoolean(int) | Yes | Yes | No | |
getByte(String) | Yes | Yes | Yes | |
getByte(int) | Yes | Yes | Yes | |
getBytes(String) | Yes | Yes | Yes | |
getBytes(int) | Yes | Yes | Yes | |
getCharacterStream(String) | Yes | Yes | No | |
getCharacterStream(int) | Yes | Yes | No | |
getClob(String) | No* | No | No | |
getClob(int) | No* | No | No | |
getConcurrency() | Yes | Yes | Yes | |
getCursorName() | No | No | No | |
getDate(String) | Yes | Yes | Yes | |
getDate(String, Calendar) | Yes | No | No | #91; blocked |
getDate(int) | Yes | Yes | Yes | |
getDate(int, Calendar) | Yes | No | No | #91; blocked |
getDouble(String) | Yes | Yes | Yes | |
getDouble(int) | Yes | Yes | Yes | |
getFetchDirection() | Yes | Yes | No | FETCH_FORWARD only |
getFetchSize() | Yes | No | No | #178 |
getFloat(String) | Yes | Yes | Yes | |
getFloat(int) | Yes | Yes | Yes | |
getHoldability() | Yes | Yes | Yes | |
getInt(String) | Yes | Yes | Yes | |
getInt(int) | Yes | Yes | Yes | |
getLong(String) | Yes | Yes | Yes | |
getLong(int) | Yes | Yes | Yes | |
getMetaData() | Yes | Yes | Yes | |
getNCharacterStream(String) | No* | No | No | |
getNCharacterStream(int) | No* | No | No | |
getNClob(String) | No* | No | No | |
getNClob(int) | No* | No | No | |
getNString(String) | No* | No | No | |
getNString(int) | No* | No | No | |
getObject(String) | Yes | Yes | No | |
getObject(String, Class) | No | No | No | wrong cast |
getObject(String, Map<String,Class<?>>) | No* | No | No | |
getObject(int) | Yes | Yes | No | |
getObject(int, Class type) | No | No | No | wrong cast |
getObject(int, Map<String,Class<?>>) | No* | No | No | |
getRef(String) | No* | No | No | |
getRef(int) | No* | No | No | |
getRow() | No | Yes | Yes | |
getRowId(String) | No* | No | No | |
getRowId(int) | No* | No | No | |
getSQLXML(String) | No* | No | No | |
getSQLXML(int) | No* | No | No | |
getShort(String) | Yes | Yes | Yes | |
getShort(int) | Yes | Yes | Yes | |
getStatement() | Yes | Yes | Yes | |
getString(String) | Yes | Yes | Yes | |
getString(int) | Yes | Yes | Yes | |
getTime(String) | Yes | Yes | No | |
getTime(String, Calendar) | Yes | No | No | #91; blocked |
getTime(int) | Yes | Yes | No | |
getTime(int, Calendar) | Yes | No | No | #91; blocked |
getTimestamp(String) | Yes | Yes | No | |
getTimestamp(String, Calendar) | Yes | No | No | #91; blocked |
getTimestamp(int) | Yes | Yes | No | |
getTimestamp(int, Calendar) | Yes | No | No | #91; blocked |
getType() | Yes | Yes | Yes | |
getURL(String) | No* | Yes | No | |
getURL(int) | No* | Yes | No | |
getUnicodeStream(String) | No | Yes | No | |
getUnicodeStream(int) | No | Yes | No | |
getWarnings() | Yes | Yes | No | dumb |
insertRow() | No | No | No | |
isAfterLast() | No*** | Yes | Yes | |
isBeforeFirst() | No*** | Yes | Yes | |
isClosed() | Yes | Yes | Yes | |
isFirst() | No*** | Yes | Yes | |
isLast() | No*** | Yes | Yes | |
last() | No*** | Yes | Yes | |
moveToCurrentRow() | No | No | No | |
moveToInsertRow() | No | No | No | |
next() | Yes | Yes | Yes | |
previous() | No*** | Yes | Yes | |
refreshRow() | No | No | No | |
relative(int) | No*** | No | No | |
rowDeleted() | No** | No | No | |
rowInserted() | No | No | No | |
rowUpdated() | No** | No | No | |
setFetchDirection(int) | Yes | Yes | No | FETCH_FORWARD only |
setFetchSize(int) | Yes | No | No | #178 |
updateArray(String, Array) | No** | No | No | |
updateArray(int, Array) | No** | No | No | |
updateAsciiStream(String, InputStream) | No** | No | No | |
updateAsciiStream(String, InputStream, int) | No** | No | No | |
updateAsciiStream(String, InputStream, long) | No** | No | No | |
updateAsciiStream(int, InputStream) | No** | No | No | |
updateAsciiStream(int, InputStream, int) | No** | No | No | |
updateAsciiStream(int, InputStream, long) | No** | No | No | |
updateBigDecimal(String, BigDecimal) | No** | No | No | |
updateBigDecimal(int, BigDecimal) | No** | No | No | |
updateBinaryStream(String, InputStream) | No** | No | No | |
updateBinaryStream(String, InputStream, int) | No** | No | No | |
updateBinaryStream(String, InputStream, long) | No** | No | No | |
updateBinaryStream(int, InputStream) | No** | No | No | |
updateBinaryStream(int, InputStream, int) | No** | No | No | |
updateBinaryStream(int, InputStream, long) | No** | No | No | |
updateBlob(String, Blob) | No** | No | No | |
updateBlob(String, InputStream) | No** | No | No | |
updateBlob(String, InputStream, long) | No** | No | No | |
updateBlob(int, Blob) | No** | No | No | |
updateBlob(int, InputStream) | No** | No | No | |
updateBlob(int, InputStream, long) | No** | No | No | |
updateBoolean(String, boolean) | No** | No | No | |
updateBoolean(int, boolean) | No** | No | No | |
updateByte(String, byte) | No** | No | No | |
updateByte(int, byte) | No** | No | No | |
updateBytes(String, byte[]) | No** | No | No | |
updateBytes(int, byte[]) | No** | No | No | |
updateCharacterStream(String, Reader) | No** | No | No | |
updateCharacterStream(String, Reader, int) | No** | No | No | |
updateCharacterStream(String, Reader, long) | No** | No | No | |
updateCharacterStream(int, Reader) | No** | No | No | |
updateCharacterStream(int, Reader, int) | No** | No | No | |
updateCharacterStream(int, Reader, long) | No** | No | No | |
updateClob(String, Clob) | No** | No | No | |
updateClob(String, Reader) | No** | No | No | |
updateClob(String, Reader, long) | No** | No | No | |
updateClob(int, Clob) | No** | No | No | |
updateClob(int, Reader) | No** | No | No | |
updateClob(int, Reader, long) | No** | No | No | |
updateDate(String, Date) | No** | No | No | |
updateDate(int, Date) | No** | No | No | |
updateDouble(String, double) | No** | No | No | |
updateDouble(int, double) | No** | No | No | |
updateFloat(String, float) | No** | No | No | |
updateFloat(int, float) | No** | No | No | |
updateInt(String, int) | No** | No | No | |
updateInt(int, int) | No** | No | No | |
updateLong(String, long) | No** | No | No | |
updateLong(int, long) | No** | No | No | |
updateNCharacterStream(String, Reader) | No** | No | No | |
updateNCharacterStream(String, Reader, long) | No** | No | No | |
updateNCharacterStream(int, Reader) | No** | No | No | |
updateNCharacterStream(int, Reader, long) | No** | No | No | |
updateNClob(String, NClob) | No** | No | No | |
updateNClob(String, Reader) | No** | No | No | |
updateNClob(String, Reader, long) | No** | No | No | |
updateNClob(int, NClob) | No** | No | No | |
updateNClob(int, Reader) | No** | No | No | |
updateNClob(int, Reader, long) | No** | No | No | |
updateNString(String, String) | No** | No | No | |
updateNString(int, String) | No** | No | No | |
updateNull(String) | No** | No | No | |
updateNull(int) | No** | No | No | |
updateObject(String, Object) | No** | No | No | |
updateObject(String, Object, SQLType) | No** | No | No | |
updateObject(String, Object, SQLType, int) | No** | No | No | |
updateObject(String, Object, int) | No** | No | No | |
updateObject(int, Object) | No** | No | No | |
updateObject(int, Object, SQLType) | No** | No | No | |
updateObject(int, Object, SQLType, int) | No** | No | No | |
updateObject(int, Object, int) | No** | No | No | |
updateRef(String, Ref) | No** | No | No | |
updateRef(int, Ref) | No** | No | No | |
updateRow() | No** | No | No | |
updateRowId(String, RowId) | No** | No | No | |
updateRowId(int, RowId) | No** | No | No | |
updateSQLXML(String, SQLXMLmlObject) | No** | No | No | |
updateSQLXML(int, SQLXMLmlObject) | No** | No | No | |
updateShort(String, short) | No** | No | No | |
updateShort(int, short) | No** | No | No | |
updateString(String, String) | No** | No | No | |
updateString(int, String) | No** | No | No | |
updateTime(String, Time) | No** | No | No | |
updateTime(int, Time) | No** | No | No | |
updateTimestamp(String, Timestamp) | No** | No | No | |
updateTimestamp(int, Timestamp) | No** | No | No | |
wasNull() | Yes | No | No | #179 |
Method | Required? | Supported? | Covered? | Details |
---|---|---|---|---|
getCatalogName(int) | Yes | No | No | |
getColumnClassName(int) | Yes | No | No | |
getColumnCount() | Yes | Yes | Yes | |
getColumnDisplaySize(int) | Yes | No | No | |
getColumnLabel(int) | Yes | Yes | Yes | |
getColumnName(int) | Yes | Yes | Yes | |
getColumnType(int) | Yes | No | No | |
getColumnTypeName(int) | Yes | No | No | |
getPrecision(int) | Yes | No | No | |
getScale(int) | Yes | No | No | |
getSchemaName(int) | Yes | No | No | |
getTableName(int) | Yes | No | No | |
isAutoIncrement(int) | Yes | No | No | |
isCaseSensitive(int) | Yes | No | No | |
isCurrency(int) | Yes | No | No | |
isDefinitelyWritable(int) | Yes | No | No | |
isNullable(int) | Yes | No | No | |
isReadOnly(int) | Yes | No | No | |
isSearchable(int) | Yes | No | No | |
isSigned(int) | Yes | No | No | |
isWritable(int) | Yes | No | No |
NOTE: All methods on the
RowId
interface must be fully implemented if the JDBC driver supports the data type.
Method | Required? | Supported? | Covered? | Details |
---|---|---|---|---|
equals(Object) | Yes | No | No | |
getBytes() | Yes | No | No | |
hashCode() | Yes | No | No | |
toString() | Yes | No | No |
NOTE: It must implement the
Savepoint
interface if the methodDatabaseMetaData.supportsSavepoints()
returnstrue
Method | Required? | Supported? | Covered? | Details |
---|---|---|---|---|
getSavepointId() | Yes | No | No | |
getSavepointName() | Yes | No | No |
SQLInput
is optional interface, but if it's implemented then the implementation must support all methods with the exception of optional methods marked*
.
NOTE: * is not required to implement the methods unless the driver supports the associated data type.
Method | Required? | Supported? | Covered? | Details |
---|---|---|---|---|
readArray() | No* | No | No | |
readAsciiStream() | Yes | No | No | |
readBigDecimal() | Yes | No | No | |
readBinaryStream() | Yes | No | No | |
readBlob() | No* | No | No | |
readBoolean() | Yes | No | No | |
readByte() | Yes | No | No | |
readBytes() | Yes | No | No | |
readCharacterStream() | Yes | No | No | |
readClob() | No* | No | No | |
readDate() | Yes | No | No | |
readDouble() | Yes | No | No | |
readFloat() | Yes | No | No | |
readInt() | Yes | No | No | |
readLong() | Yes | No | No | |
readNClob() | No* | No | No | |
readNString() | No* | No | No | |
readObject() | Yes | No | No | |
readObject(Class) | Yes | No | No | |
readRef() | No* | No | No | |
readRowId() | No* | No | No | |
readSQLXML() | No* | No | No | |
readShort() | Yes | No | No | |
readString() | Yes | No | No | |
readTime() | Yes | No | No | |
readTimestamp() | Yes | No | No | |
readURL() | No* | No | No | |
wasNull() | Yes | No | No |
SQLOutput
is optional interface, but if it's implemented then the implementation must support all methods with the exception of optional methods marked*
.
NOTE: * is not required to implement the methods unless the driver supports the associated data type.
Method | Required? | Supported? | Covered? | Details |
---|---|---|---|---|
writeArray(Array) | No* | No | No | |
writeAsciiStream(InputStream) | Yes | No | No | |
writeBigDecimal(BigDecimal) | Yes | No | No | |
writeBinaryStream(InputStream) | Yes | No | No | |
writeBlob(Blob) | No* | No | No | |
writeBoolean(boolean) | Yes | No | No | |
writeByte(byte) | Yes | No | No | |
writeBytes(byte[]) | Yes | No | No | |
writeCharacterStream(Reader) | Yes | No | No | |
writeClob(Clob) | No* | No | No | |
writeDate(Date) | Yes | No | No | |
writeDouble(double) | Yes | No | No | |
writeFloat(float) | Yes | No | No | |
writeInt(int) | Yes | No | No | |
writeLong(long) | Yes | No | No | |
writeNClob(NClob) | No* | No | No | |
writeNString(String) | No* | No | No | |
writeObject(Object, SQLType) | Yes | No | No | |
writeObject(SQLData) | Yes | No | No | |
writeRef(Ref) | No* | No | No | |
writeRowId(RowId) | No* | No | No | |
writeSQLXML(SQLXML) | No* | No | No | |
writeShort(short) | Yes | No | No | |
writeString(String) | Yes | No | No | |
writeStruct(Struct) | No* | No | No | |
writeTime(Time) | Yes | No | No | |
writeTimestamp(Timestamp) | Yes | No | No | |
writeURL(URL) | No* | No | No |
NOTE: All methods on the
SQLXML
interface must be fully implemented if the JDBC driver supports the data type.
Method | Required? | Supported? | Covered? | Details |
---|---|---|---|---|
free() | Yes | No | No | |
getBinaryStream() | Yes | No | No | |
getCharacterStream() | Yes | No | No | |
getSource(Class) | Yes | No | No | |
getString() | Yes | No | No | |
setBinaryStream() | Yes | No | No | |
setCharacterStream() | Yes | No | No | |
setResult(Class) | Yes | No | No | |
setString(String) | Yes | No | No |
NOTE: * is not required to implement
execute(String sql, Statement.RETURN_GENERATED_KEYS)
andexecuteUpdate(String sql, Statement.RETURN_GENERATED_KEYS)
unless the driver supports generated keys.
NOTE: ** is not required to implement
getMoreResults(String sql, Statement.KEEP_CURRENT_RESULT | Statement.CLOSE_ALL_RESULTS)
unlessDatabasemetaData.supportsMultipleOpenResults()
returnstrue
.
Method | Required? | Supported? | Covered? | Details |
---|---|---|---|---|
addBatch(String) | Yes | No | No | #62 |
cancel() | No | No | No | [#155][#155] |
clearBatch() | Yes | No | No | #62 |
clearWarnings() | Yes | Yes | No | dumb |
close() | Yes | Yes | Yes | |
closeOnCompletion() | Yes | No | No | #180 |
execute(String) | Yes | Yes | Yes | |
execute(String, String[]) | No | No | No | |
execute(String, int[]) | No | No | No | |
execute(String, int) | No* | No | No | |
executeBatch() | Yes | No | No | #62 |
executeLargeBatch() | Yes | No | No | |
executeLargeUpdate(String) | Yes | No | No | |
executeLargeUpdate(String, String[]) | No | No | No | |
executeLargeUpdate(String, int[]) | No | No | No | |
executeLargeUpdate(String, int) | No* | No | No | |
executeQuery(String) | Yes | Yes | Yes | |
executeUpdate(String) | Yes | Yes | Yes | |
executeUpdate(String, String[]) | No | No | No | |
executeUpdate(String, int[]) | No | No | No | |
executeUpdate(String, int) | No* | No | No | |
getConnection() | Yes | Yes | Yes | |
getFetchDirection() | Yes | Yes | No | FETCH_FORWARD only |
getFetchSize() | Yes | No | No | #178 |
getGeneratedKeys() | No | No | No | |
getLargeMaxRows() | Yes | No | No | |
getLargeUpdateCount() | Yes | No | No | |
getMaxFieldSize() | Yes | No | No | |
getMaxRows() | Yes | Yes | Yes | |
getMoreResults() | Yes | No | No | #182 |
getMoreResults(int) | No** | No | No | #182 |
getQueryTimeout() | Yes | No | No | |
getResultSet() | Yes | Yes | Yes | |
getResultSetConcurrency() | Yes | Yes | Yes | |
getResultSetHoldability() | Yes | Yes | Yes | |
getResultSetType() | Yes | Yes | Yes | |
getUpdateCount() | Yes | Yes | Yes | |
getWarnings() | Yes | Yes | No | dumb |
isCloseOnCompletion() | Yes | No | No | #180 |
isClosed() | Yes | Yes | Yes | |
isPoolable() | Yes | No | No | #181 |
setCursorName(String) | No | No | No | |
setEscapeProcessing(boolean) | Yes | No | No | |
setFetchDirection(int) | Yes | Yes | No | FETCH_FORWARD only |
setFetchSize(int) | Yes | No | No | #178 |
setLargeMaxRows(long) | Yes | No | No | |
setMaxFieldSize(int) | Yes | No | No | |
setMaxRows(int) | Yes | Yes | No | |
setPoolable(boolean) | Yes | No | No | #181 |
setQueryTimeout(int) | Yes | No | No |
NOTE: All methods on the
Struct
interface must be fully implemented if the JDBC driver supports the data type.
Method | Required? | Supported? | Covered? | Details |
---|---|---|---|---|
getAttributes() | Yes | No | No | |
getAttributes(Map<String,Class<?>>) | Yes | No | No | |
getSQLTypeName() | Yes | No | No |
NOTE: Wrapper is extended by
CallableStatement
,Connection
,DatabaseMetaData
,ParameterMetaData
,PreparedStatement
,ResultSet
,ResultSetMetaData
, andStatement
interfaces and should be considered in scope of theirs implementations
NOTE: * must be implemented by
CallableStatement
interface if it's supported
Method | Required? | Supported? | Covered? | Details |
---|---|---|---|---|
CallableStatement.isWrapperFor(Class<?>) | No* | No | No | |
CallableStatement.unwrap(Class) | No* | No | No | |
Connection.isWrapperFor(Class<?>) | Yes | Yes | Yes | |
Connection.unwrap(Class) | Yes | Yes | Yes | |
DatabaseMetaData.isWrapperFor(Class<?>) | Yes | Yes | Yes | |
DatabaseMetaData.unwrap(Class) | Yes | Yes | Yes | |
ParameterMetaData.isWrapperFor(Class<?>) | Yes | No | No | |
ParameterMetaData.unwrap(Class) | Yes | No | No | |
PreparedStatement.isWrapperFor(Class<?>) | Yes | Yes | Yes | |
PreparedStatement.unwrap(Class) | Yes | Yes | Yes | |
ResultSet.isWrapperFor(Class<?>) | Yes | Yes | Yes | |
ResultSet.unwrap(Class) | Yes | Yes | Yes | |
ResultSetMetaData.isWrapperFor(Class<?>) | Yes | Yes | Yes | |
ResultSetMetaData.unwrap(Class) | Yes | Yes | Yes | |
Statement.isWrapperFor(Class<?>) | Yes | Yes | Yes | |
Statement.unwrap(Class) | Yes | Yes | Yes | |
DataSource.isWrapperFor(Class<?>) | Yes | No | No | |
SataSource.unwrap(Class) | Yes | No | No |
NOTE: All interfaces in
javax.sql
are optional with an exception forDataSource
which is required to be implemented. All optional interfaces are skipped for now.
Interface | Required | Supported | Covered | Details |
---|---|---|---|---|
DataSource | 6/7 | 0/6 + 0/1 | 0/6 + 0/1 | #175 |
Method | Required? | Supported? | Covered? | Details |
---|---|---|---|---|
getConnection() | Yes | No | No | |
getConnection(String, String) | Yes | No | No | |
getLogWriter() | Yes | No | No | |
getLoginTimeout() | Yes | No | No | |
getParentLogger() | No | No | No | |
setLogWriter(PrintWriter out) | Yes | No | No | |
setLoginTimeout(int seconds) | Yes | No | No |
Transaction and isolation level metainformation methods correctly reports now that transactions do not supported, but they are marked as 'No' in 'Supported?' column. This is because JDBC compliant driver must support transactions and at least highest (serializable) isolation level, so just report that we don't support these features does not make our driver JDBC compliant. Also we cannot report serializable isolation level before transactions will be supported, because the API states we must report TRANSACTION_NONE isolation level when transactions does not supported (see DatabaseMetaData.supportsTransactions()).