Skip to content
Alexander Turenko edited this page Jan 23, 2019 · 46 revisions

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 + 0/20 optional 5/35 + 0/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 No No
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 No No
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 #107
supportsAlterTableWithDropColumn Yes ? No #107
supportsANSI92EntryLevelSQL Yes ? No #107
supportsANSI92FullSQL Yes ? No #107
supportsANSI92IntermediateSQL Yes ? No #107
supportsBatchUpdates Yes ? No #107
supportsCatalogsInDataManipulation Yes ? No #107
supportsCatalogsInIndexDefinitions Yes ? No #107
supportsCatalogsInPrivilegeDefinitions Yes ? No #107
supportsCatalogsInProcedureCalls Yes ? No #107
supportsCatalogsInTableDefinitions Yes ? No #107
supportsColumnAliasing Yes ? No #107
supportsConvert Yes ? No #107
supportsConvert Yes ? No #107
supportsCoreSQLGrammar Yes ? No #107
supportsCorrelatedSubqueries Yes ? No #107
supportsDataDefinitionAndDataManipulationTransactions Yes ? No #107
supportsDataManipulationTransactionsOnly Yes ? No #107
supportsDifferentTableCorrelationNames Yes ? No #107
supportsExpressionsInOrderBy Yes ? No #107
supportsExtendedSQLGrammar Yes ? No #107
supportsFullOuterJoins Yes ? No #107
supportsGetGeneratedKeys Yes ? No #107
supportsGroupBy Yes ? No #107
supportsGroupByBeyondSelect Yes ? No #107
supportsGroupByUnrelated Yes ? No #107
supportsIntegrityEnhancementFacility Yes ? No #107
supportsLikeEscapeClause Yes ? No #107
supportsLimitedOuterJoins Yes ? No #107
supportsMinimumSQLGrammar Yes ? No #107
supportsMixedCaseIdentifiers Yes No No #105 + #107
supportsMixedCaseQuotedIdentifiers Yes No No #105 + #107
supportsMultipleOpenResults Yes ? No #107
supportsMultipleResultSets Yes ? No #107
supportsMultipleTransactions Yes ? No #107
supportsNamedParameters Yes ? No #107
supportsNonNullableColumns Yes ? No #107
supportsOpenCursorsAcrossCommit Yes ? No #107
supportsOpenCursorsAcrossRollback Yes ? No #107
supportsOpenStatementsAcrossCommit Yes ? No #107
supportsOpenStatementsAcrossRollback Yes ? No #107
supportsOrderByUnrelated Yes ? No #107
supportsOuterJoins Yes ? No #107
supportsPositionedDelete Yes ? No #107
supportsPositionedUpdate Yes ? No #107
supportsRefCursors Yes ? No #107
supportsResultSetConcurrency Yes ? No #107
supportsResultSetHoldability Yes ? No #107
supportsResultSetType Yes ? No #107
supportsSavepoints Yes ? No #107
supportsSchemasInDataManipulation Yes ? No #107
supportsSchemasInIndexDefinitions Yes ? No #107
supportsSchemasInPrivilegeDefinitions Yes ? No #107
supportsSchemasInProcedureCalls Yes ? No #107
supportsSchemasInTableDefinitions Yes ? No #107
supportsSelectForUpdate Yes ? No #107
supportsStatementPooling Yes ? No #107
supportsStoredFunctionsUsingCallSyntax Yes No No #82 + #107
supportsStoredProcedures Yes No No #82 + #107
supportsSubqueriesInComparisons Yes ? No #107
supportsSubqueriesInExists Yes ? No #107
supportsSubqueriesInIns Yes ? No #107
supportsSubqueriesInQuantifieds Yes ? No #107
supportsTableCorrelationNames Yes ? No #107
supportsTransactionIsolationLevel Yes No No #103 + #107; blocked
supportsTransactions Yes No No #63 + #107; blocked
supportsUnion Yes ? No #107
supportsUnionAll Yes ? No #107
updatesAreDetected
usesLocalFilePerTable
usesLocalFiles

Data model

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

Links

Notes

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()).

Clone this wiki locally