-
Notifications
You must be signed in to change notification settings - Fork 19
JDBC status
package java.sql;
Interface | Required? | Supported? | Covered? | Details |
---|---|---|---|---|
Array | No | No | No | #65; blocked |
Blob | No | No | No | #67 |
CallableStatement | No | No | No | #64 |
Clob | No | No | No | #66; blocked |
Connection | 35/55 | 13/35 + 2/20 optional | 5/35 + 2/20 optional | |
DatabaseMetaData | ||||
Driver | ||||
DriverAction | ||||
NClob | No | No | No | #68; blocked |
ParameterMetaData | ||||
PreparedStatement | ||||
Ref | ||||
ResultSet | ||||
ResultSetMetaData | ||||
RowId | ||||
Savepoint | ||||
SQLData | ||||
SQLInput | ||||
SQLOutput | ||||
SQLType | N/A | N/A | N/A | |
SQLXML | No | No | No | #69; blocked |
Statement | ||||
Struct | No | No | No | #70; blocked |
Wrapper | Yes | No | No | #73 |
interface java.sql.Connection;
Method | Required? | Supported? | Covered? | Details |
---|---|---|---|---|
abort | Yes | No | No | #71 |
clearWarnings | Yes | Yes | No | dumb, but enough |
close | Yes | Yes | Yes | |
commit | Yes | No | No | #63; blocked |
createArrayOf | No | No | No | #65; blocked |
createBlob | No | No | No | #67 |
createClob | No | No | No | #66; blocked |
createNClob | No | No | No | #68; blocked |
createSQLXML | No | No | No | #69; blocked |
createStatement | Yes | Yes | Yes | |
createStatement(type, concurrency) | Yes | No | No | #85, #86 |
createStatement(type, concurrency, holdability) | Yes | No | No | #85, #86, #87 |
createStruct | No | No | No | #70; blocked |
getAutoCommit | Yes | No | No | #63; blocked |
getCatalog | Yes | Yes | No | dumb, but enough |
getClientInfo | Yes | No | No | #74 |
getClientInfo(name) | Yes | No | No | #74 |
getHoldability | Yes | No | No | #87 |
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, but enough |
isValid | Yes | No | No | #75 |
nativeSQL | Yes | No | No | #76 |
prepareCall(sql) | No | No | No | |
prepareCall(sql, type, concurrency) | No | No | No | #85, #86 |
prepareCall(sql, type, concurrency, holdability) | No | No | No | #85, #86, #87 |
prepareStatement(sql) | Yes | Yes | Yes | |
prepareStatement(sql, NO_GENERATED_KEYS) | Yes | No | No | #78 |
prepareStatement(sql, RETURN_GENERATED_KEYS) | No | No | No | #77; blocked |
prepareStatement(sql, columnIndexes) | No | No | No | #77; blocked |
prepareStatement(sql, type, concurrency) | Yes | No | No | #85, #86 |
prepareStatement(sql, type, concurrency, holdability) | Yes | No | No | #85, #86, #87 |
prepareStatement(sql, columnNames) | No | No | No | #77; blocked |
releaseSavepoint | No | No | No | |
rollback | Yes | No | No | #63; blocked |
rollback(savepoint) | No | No | No | |
setAutoCommit | Yes | No | No | #63; blocked |
setCatalog | Yes | Yes | No | dumb, but enough |
setClientInfo(properties) | Yes | No | No | #74 |
setClientInfo(name, value) | Yes | No | No | #74 |
setHoldability | Yes | No | No | #87 |
setNetworkTimeout | No | Yes | Yes | |
setReadOnly | Yes | Yes | No | dumb, but enough |
setSavepoint | No | No | No | |
setSavepoint(name) | No | No | No | |
setSchema | Yes | Yes | No | dumb, but enough |
setTransactionIsolation | Yes | No | No | #103; blocked |
setTypeMap | No | No | No | |
isWrapperFor | Yes | No | No | #73 |
unwrap | Yes | No | No | #73 |
interface java.sql.DatabaseMetaData;
Method | Required? | Supported? | Covered? | Details |
---|---|---|---|---|
allProceduresAreCallable | Yes | ? | No | #110 |
allTablesAreSelectable | Yes | ? | No | #110 |
autoCommitFailureClosesAllResultSets | ||||
dataDefinitionCausesTransactionCommit | ||||
dataDefinitionIgnoredInTransactions | ||||
deletesAreDetected | ||||
doesMaxRowSizeIncludeBlobs | ||||
generatedKeyAlwaysReturned | ||||
getAttributes | ||||
getBestRowIdentifier | ||||
getCatalogs | ||||
getCatalogSeparator | ||||
getCatalogTerm | Yes | No | No | #105 |
getClientInfoProperties | ||||
getColumnPrivileges | ||||
getColumns | ||||
getConnection | ||||
getCrossReference | ||||
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 | ||||
getExtraNameCharacters | Yes | No | No | #105 |
getFunctionColumns | ||||
getFunctions | ||||
getIdentifierQuoteString | Yes | No | No | #105 |
getImportedKeys | ||||
getIndexInfo | ||||
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 | ||||
getProcedureColumns | Yes | Yes | No | dumb, but enough |
getProcedures | Yes | No | No | #104 |
getProcedureTerm | Yes | No | No | #105 |
getPseudoColumns | ||||
getResultSetHoldability | ||||
getRowIdLifetime | ||||
getSchemas | ||||
getSchemas | ||||
getSchemaTerm | Yes | No | No | #105 |
getSearchStringEscape | Yes | No | No | #105 |
getSQLKeywords | Yes | No | No | #105 |
getSQLStateType | ||||
getStringFunctions | Yes | No | No | #82 |
getSuperTables | ||||
getSuperTypes | ||||
getSystemFunctions | Yes | No | No | #82 |
getTablePrivileges | ||||
getTables | Yes | Yes | Yes | |
getTableTypes | No | No | No | #107 |
getTimeDateFunctions | Yes | No | No | #82 |
getTypeInfo | ||||
getUDTs | ||||
getURL | ||||
getUserName | ||||
getVersionColumns | ||||
insertsAreDetected | ||||
isCatalogAtStart | ||||
isReadOnly | ||||
locatorsUpdateCopy | ||||
nullPlusNonNullIsNull | ||||
nullsAreSortedAtEnd | ||||
nullsAreSortedAtStart | ||||
nullsAreSortedHigh | ||||
nullsAreSortedLow | ||||
othersDeletesAreVisible | ||||
othersInsertsAreVisible | ||||
othersUpdatesAreVisible | ||||
ownDeletesAreVisible | ||||
ownInsertsAreVisible | ||||
ownUpdatesAreVisible | ||||
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 |
supportsAlterTableWithAddColumn | Yes | ? | No | #108 |
supportsAlterTableWithDropColumn | Yes | ? | No | #108 |
supportsANSI92EntryLevelSQL | Yes | ? | No | #108 |
supportsANSI92FullSQL | Yes | ? | No | #108 |
supportsANSI92IntermediateSQL | Yes | ? | No | #108 |
supportsBatchUpdates | Yes | ? | No | #108 |
supportsCatalogsInDataManipulation | Yes | ? | No | #108 |
supportsCatalogsInIndexDefinitions | Yes | ? | No | #108 |
supportsCatalogsInPrivilegeDefinitions | Yes | ? | No | #108 |
supportsCatalogsInProcedureCalls | Yes | ? | No | #108 |
supportsCatalogsInTableDefinitions | Yes | ? | No | #108 |
supportsColumnAliasing | Yes | ? | No | #108 |
supportsConvert | Yes | ? | No | #108 |
supportsConvert | Yes | ? | No | #108 |
supportsCoreSQLGrammar | Yes | ? | No | #108 |
supportsCorrelatedSubqueries | Yes | ? | No | #108 |
supportsDataDefinitionAndDataManipulationTransactions | Yes | ? | No | #108 |
supportsDataManipulationTransactionsOnly | Yes | ? | No | #108 |
supportsDifferentTableCorrelationNames | Yes | ? | No | #108 |
supportsExpressionsInOrderBy | Yes | ? | No | #108 |
supportsExtendedSQLGrammar | Yes | ? | No | #108 |
supportsFullOuterJoins | Yes | ? | No | #108 |
supportsGetGeneratedKeys | Yes | ? | No | #108 |
supportsGroupBy | Yes | ? | No | #108 |
supportsGroupByBeyondSelect | Yes | ? | No | #108 |
supportsGroupByUnrelated | Yes | ? | No | #108 |
supportsIntegrityEnhancementFacility | Yes | ? | No | #108 |
supportsLikeEscapeClause | Yes | ? | No | #108 |
supportsLimitedOuterJoins | Yes | ? | No | #108 |
supportsMinimumSQLGrammar | Yes | ? | No | #108 |
supportsMixedCaseIdentifiers | Yes | No | No | #105 + #108 |
supportsMixedCaseQuotedIdentifiers | Yes | No | No | #105 + #108 |
supportsMultipleOpenResults | Yes | ? | No | #108 |
supportsMultipleResultSets | Yes | ? | No | #108 |
supportsMultipleTransactions | Yes | ? | No | #108 |
supportsNamedParameters | Yes | ? | No | #108 |
supportsNonNullableColumns | Yes | ? | No | #108 |
supportsOpenCursorsAcrossCommit | Yes | ? | No | #108 |
supportsOpenCursorsAcrossRollback | Yes | ? | No | #108 |
supportsOpenStatementsAcrossCommit | Yes | ? | No | #108 |
supportsOpenStatementsAcrossRollback | Yes | ? | No | #108 |
supportsOrderByUnrelated | Yes | ? | No | #108 |
supportsOuterJoins | Yes | ? | No | #108 |
supportsPositionedDelete | Yes | ? | No | #108 |
supportsPositionedUpdate | Yes | ? | No | #108 |
supportsRefCursors | Yes | ? | No | #108 |
supportsResultSetConcurrency | Yes | ? | No | #108 |
supportsResultSetHoldability | Yes | ? | No | #108 |
supportsResultSetType | Yes | ? | No | #108 |
supportsSavepoints | Yes | ? | No | #108 |
supportsSchemasInDataManipulation | Yes | ? | No | #108 |
supportsSchemasInIndexDefinitions | Yes | ? | No | #108 |
supportsSchemasInPrivilegeDefinitions | Yes | ? | No | #108 |
supportsSchemasInProcedureCalls | Yes | ? | No | #108 |
supportsSchemasInTableDefinitions | Yes | ? | No | #108 |
supportsSelectForUpdate | Yes | ? | No | #108 |
supportsStatementPooling | Yes | ? | No | #108 |
supportsStoredFunctionsUsingCallSyntax | Yes | No | No | #82 + #108 |
supportsStoredProcedures | Yes | No | No | #82 + #108 |
supportsSubqueriesInComparisons | Yes | ? | No | #108 |
supportsSubqueriesInExists | Yes | ? | No | #108 |
supportsSubqueriesInIns | Yes | ? | No | #108 |
supportsSubqueriesInQuantifieds | Yes | ? | No | #108 |
supportsTableCorrelationNames | Yes | ? | No | #108 |
supportsTransactionIsolationLevel | Yes | No | No | #103 + #108; blocked |
supportsTransactions | Yes | No | No | #63 + #108; blocked |
supportsUnion | Yes | ? | No | #108 |
supportsUnionAll | Yes | ? | No | #108 |
updatesAreDetected | ||||
usesLocalFilePerTable | ||||
usesLocalFiles |
Tarantool/SQL types are going to be more strict, so tables below will be updated to reflect current Tarantool and Tarantool/SQL types.
Mapping from Tarantool/SQL types into JDBC and Java types:
Tarantool/SQL | JDBC | Java | Supported? | Details |
---|---|---|---|---|
FLOAT | Types.FLOAT | double | No | |
DOUBLE | Types.DOUBLE | double | No | |
REAL | Types.REAL | float | No | |
INT | Types.INTEGER | BigInteger | No | |
INTEGER | Types.INTEGER | BigInteger | No | |
DECIMAL | Types.DECIMAL | BigDecimal | No | |
DECIMAL(N) | Types.DECIMAL | BigDecimal | No | |
DECIMAL(N, M) | Types.DECIMAL | BigDecimal | No | |
NUMERIC | Types.NUMERIC | BigDecimal | No | |
NUMERIC(N) | Types.NUMERIC | BigDecimal | No | |
NUMERIC(N, M) | Types.NUMERIC | BigDecimal | No | |
NUM | Types.NUMERIC | BigDecimal | No | |
NUM(N) | Types.NUMERIC | BigDecimal | No | |
NUM(N, M) | Types.NUMERIC | BigDecimal | No | |
DATE | Types.DATE | java.sql.Date | No | blocked by #3694 |
TIME | Types.TIME | java.sql.Time | No | blocked by #3694 |
DATETIME | N/A | N/A | N/A | to be removed |
TIMESTAMP | Types.TIMESTAMP | java.sql.Timestamp | No | blocked by #3694 |
CHAR(N) | Types.CHAR | String | No | |
VARCHAR(N) | Types.VARCHAR | String | No | |
TEXT | Types.VARCHAR | String | No | |
BLOB | Types.VARBINARY | byte[] | No | blocked by #3650, tracked by #45 |
Mapping from Tarantool/SQL types into Tarantool native types (space format / index format) and additional Tarantool/SQL constraints (for reference):
Tarantool/SQL | Tarantool native | Tarantool/SQL constraints |
---|---|---|
FLOAT | number | float64 for insert, native number (int+fp) for select |
DOUBLE | number | float64 for insert, native number (int+fp) for select |
REAL | number | float64 for insert, native number (int+fp) for select |
INT | integer | -2^63 .. 2^63-1 for insert, native integer (-2^63 .. 2^64-1) for select |
INTEGER | integer | -2^63 .. 2^63-1 for insert, native integer (-2^63 .. 2^64-1) for select |
DECIMAL | number | same as REAL |
DECIMAL(N) | number | same as REAL |
DECIMAL(N, M) | number | same as REAL |
NUMERIC | number | same as REAL |
NUMERIC(N) | number | same as REAL |
NUMERIC(N, M) | number | same as REAL |
NUM | number | same as REAL |
NUM(N) | number | same as REAL |
NUM(N, M) | number | same as REAL |
DATE | number | broken at all (blocked by #3694) |
TIME | number | broken at all (blocked by #3694) |
DATETIME | number | broken at all (blocked by #3694) |
CHAR(N) | string | native string (of any length) |
VARCHAR(N) | string | native string (of any length) |
TEXT | string | native string (of any length) |
BLOB | scalar | native scalar (blocked by #3650, tracked by #45) |
Tarantool native types, msgpack and Lua types (for reference):
Tarantool native | Msgpack | Lua |
---|---|---|
integer | nil, pos/neg fixint, int/uint 8/16/32/64 | nil/box.NULL, number, cdata(int64_t), cdata(uint64_t) |
number | nil, pos/neg fixint, int/uint 8/16/32/64, float 32/64 | nil/box.NULL, number, cdata(int64_t), cdata(uint64_t) |
string | nil, fixstr, str 8/16/32 | nil/box.NULL, string |
scalar | all above, bin 8/16/32, bool | all above, bool |
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()).