Class DerbyAdapter
- java.lang.Object
- 
- org.datanucleus.store.rdbms.adapter.BaseDatastoreAdapter
- 
- org.datanucleus.store.rdbms.adapter.DerbyAdapter
 
 
- 
- All Implemented Interfaces:
- DatastoreAdapter
 
 public class DerbyAdapter extends BaseDatastoreAdapter Provides methods for adapting SQL language elements to the Apache Derby database.
- 
- 
Nested Class Summary- 
Nested classes/interfaces inherited from class org.datanucleus.store.rdbms.adapter.BaseDatastoreAdapterBaseDatastoreAdapter.ColumnTypeMappings
 
- 
 - 
Field Summary- 
Fields inherited from class org.datanucleus.store.rdbms.adapter.BaseDatastoreAdaptercatalogSeparator, datastoreMajorVersion, datastoreMinorVersion, datastoreProductName, datastoreProductVersion, datastoreRevisionVersion, driverMajorVersion, driverMinorVersion, driverName, driverVersion, identifierQuoteString, MAX_IDENTIFIER_LENGTH, maxColumnNameLength, maxConstraintNameLength, maxIndexNameLength, maxTableNameLength, NONRESERVED_WORDS, reservedKeywords, SQL2003_RESERVED_WORDS, SQL92_RESERVED_WORDS, SQL99_RESERVED_WORDS, supportedJdbcTypesById, supportedOptions, unsupportedJdbcTypesById
 - 
Fields inherited from interface org.datanucleus.store.rdbms.adapter.DatastoreAdapterACCESS_PARENTQUERY_IN_SUBQUERY_JOINED, ALTER_TABLE_DROP_CONSTRAINT_SYNTAX, ALTER_TABLE_DROP_FOREIGN_KEY_CONSTRAINT, ANSI_CROSSJOIN_SYNTAX, ANSI_JOIN_SYNTAX, BIT_IS_REALLY_BOOLEAN, BLOB_SET_USING_SETSTRING, BOOLEAN_COMPARISON, CATALOGS_IN_TABLE_DEFINITIONS, CHAR_COLUMNS_PADDED_WITH_SPACES, CHECK_IN_CREATE_STATEMENTS, CHECK_IN_END_CREATE_STATEMENTS, CLOB_SET_USING_SETSTRING, COLUMN_LENGTH_SEMANTICS, CREATE_INDEX_COLUMN_ORDERING, CREATE_INDEXES_BEFORE_FOREIGN_KEYS, CROSSJOIN_ASINNER11_SYNTAX, DATETIME_STORES_MILLISECS, DEFAULT_BEFORE_NULL_IN_COLUMN_OPTIONS, DEFAULT_KEYWORD_IN_COLUMN_OPTIONS, DEFAULT_KEYWORD_WITH_NOT_NULL_IN_COLUMN_OPTIONS, DEFERRED_CONSTRAINTS, DISTINCT_WITH_SELECT_FOR_UPDATE, ESCAPE_EXPRESSION_IN_LIKE_PREDICATE, EXISTS_SYNTAX, FK_DELETE_ACTION_CASCADE, FK_DELETE_ACTION_DEFAULT, FK_DELETE_ACTION_NULL, FK_DELETE_ACTION_RESTRICT, FK_IN_END_CREATE_STATEMENTS, FK_UPDATE_ACTION_CASCADE, FK_UPDATE_ACTION_DEFAULT, FK_UPDATE_ACTION_NULL, FK_UPDATE_ACTION_RESTRICT, GET_GENERATED_KEYS_STATEMENT, GROUP_BY_REQUIRES_ALL_SELECT_PRIMARIES, GROUPING_WITH_SELECT_FOR_UPDATE, HAVING_WITH_SELECT_FOR_UPDATE, HOLD_CURSORS_OVER_COMMIT, IDENTIFIERS_LOWERCASE, IDENTIFIERS_LOWERCASE_QUOTED, IDENTIFIERS_MIXEDCASE, IDENTIFIERS_MIXEDCASE_QUOTED, IDENTIFIERS_MIXEDCASE_QUOTED_SENSITIVE, IDENTIFIERS_MIXEDCASE_SENSITIVE, IDENTIFIERS_UPPERCASE, IDENTIFIERS_UPPERCASE_QUOTED, IDENTITY_COLUMN_TYPE_SPECIFICATION, IDENTITY_COLUMNS, IDENTITY_KEYS_NULL_SPECIFICATION, IDENTITY_PK_IN_CREATE_TABLE_COLUMN_DEF, INCLUDE_ORDERBY_COLS_IN_SELECT, LOCK_ROW_USING_OPTION_AFTER_FROM, LOCK_ROW_USING_OPTION_WITHIN_JOIN, LOCK_ROW_USING_SELECT_FOR_UPDATE, LOCK_ROW_USING_SELECT_FOR_UPDATE_NOWAIT, MULTITABLES_WITH_SELECT_FOR_UPDATE, NATIVE_ENUM_TYPE, NULL_EQUALS_EMPTY_STRING, NULLS_IN_CANDIDATE_KEYS, NULLS_KEYWORD_IN_COLUMN_OPTIONS, OPERATOR_BITWISE_AND, OPERATOR_BITWISE_OR, OPERATOR_BITWISE_XOR, ORDERBY_NULLS_DIRECTIVES, ORDERBY_NULLS_USING_CASE_NULL, ORDERBY_NULLS_USING_COLUMN_IS_NULL, ORDERBY_NULLS_USING_ISNULL, ORDERBY_USING_SELECT_COLUMN_INDEX, ORDERING_WITH_SELECT_FOR_UPDATE, PARAMETER_IN_CASE_IN_UPDATE_CLAUSE, PERSIST_OF_UNASSIGNED_CHAR, PRIMARYKEY_IN_CREATE_STATEMENTS, PROJECTION_IN_TABLE_REFERENCE_JOINS, RAW_PREFIX_LIKE_STATEMENTS, RESULTSET_TYPE_FORWARD_ONLY, RESULTSET_TYPE_SCROLL_INSENSITIVE, RESULTSET_TYPE_SCROLL_SENSITIVE, RIGHT_OUTER_JOIN, SCHEMAS_IN_TABLE_DEFINITIONS, SEQUENCES, SOME_ANY_ALL_SUBQUERY_EXPRESSIONS, STATEMENT_BATCHING, STORED_PROCEDURES, SUBQUERY_IN_HAVING, TX_ISOLATION_NONE, TX_ISOLATION_READ_COMMITTED, TX_ISOLATION_READ_UNCOMMITTED, TX_ISOLATION_REPEATABLE_READ, TX_ISOLATION_SERIALIZABLE, UNION_SYNTAX, UNIQUE_IN_END_CREATE_STATEMENTS, UPDATE_DELETE_STATEMENT_ALLOW_TABLE_ALIAS_IN_WHERE_CLAUSE, UPDATE_STATEMENT_ALLOW_TABLE_ALIAS_IN_SET_CLAUSE, USE_UNION_ALL, VALUE_GENERATION_UUID_STRING, VIEWS
 
- 
 - 
Constructor SummaryConstructors Constructor Description DerbyAdapter(DatabaseMetaData metadata)Constructs an Apache Derby adapter based on the given JDBC metadata.
 - 
Method SummaryAll Methods Instance Methods Concrete Methods Modifier and Type Method Description StringgetAddCandidateKeyStatement(CandidateKey ck, IdentifierFactory factory)Returns the appropriate SQL to add a candidate key to its table.StringgetCatalogName(Connection conn)Accessor for the catalog name.StringgetDatastoreDateStatement()Accessor for a statement that will return the statement to use to get the datastore date.StringgetDropDatabaseStatement(String catalogName, String schemaName)Method to return the statement necessary to drop a database with this RDBMS.StringgetDropTableStatement(Table table)Returns the appropriate SQL to drop the given table.StringgetIdentityKeyword(org.datanucleus.store.StoreManager storeMgr)Accessor for the auto-increment keyword for generating DDLs (CREATE TABLEs...).StringgetIdentityLastValueStmt(Table table, String columnName)Accessor for the auto-increment SQL statement for this datastore.StringgetInsertStatementForNoColumns(Table table)Method to return the INSERT statement to use when inserting into a table that has no columns specified.StringgetNumericConversionFunction()Accessor for the function to use for converting to numeric.StringgetRangeByLimitEndOfStatementClause(long offset, long count, boolean hasOrdering)Method to return the SQL to append to the WHERE clause of a SELECT statement to handle restriction of ranges using the OFFSET/FETCH keywords.StringgetSchemaName(Connection conn)Accessor for the schema name.StringgetSelectForUpdateText()Method returning the text to append to the end of the SELECT to perform the equivalent of "SELECT ...StringgetSequenceCreateStmt(String sequenceName, Integer min, Integer max, Integer start, Integer increment, Integer cacheSize)Accessor for the sequence statement to create the sequence.StringgetSequenceNextStmt(String sequenceName)Accessor for the statement for getting the next id from the sequence for this datastore.ClassgetSQLMethodClass(String className, String methodName, org.datanucleus.ClassLoaderResolver clr)Accessor for the SQLMethod class for the query invocation of specified class + method name (if available for this datastore).ClassgetSQLOperationClass(String operationName)Accessor for the SQLOperation class for the specified operation (if available for this datastore).StringgetVendorID()Accessor for the vendor id.voidinitialiseDatastore(Connection conn)Creates the auxiliary functions/procedures in the schemabooleanisIdentityFieldDataType(String columnDef)Verifies if the givencolumnDefis auto incremented by the datastore.booleanisStatementCancel(SQLException sqle)Return whether this exception represents a cancelled statement.protected voidloadColumnMappings(org.datanucleus.plugin.PluginManager mgr, org.datanucleus.ClassLoaderResolver clr)Load all datastore mappings for this RDBMS database.SQLTypeInfonewSQLTypeInfo(ResultSet rs)Create a new SQL type info from the current row of the passed ResultSet.booleanvalidToSelectMappingInStatement(SelectStatement stmt, JavaTypeMapping m)Method to return if it is valid to select the specified mapping for the specified statement for this datastore adapter.- 
Methods inherited from class org.datanucleus.store.rdbms.adapter.BaseDatastoreAdapteraddSQLTypeForJDBCType, deregisterColumnMappingsForJDBCType, getAdapterTime, getAddColumnStatement, getAddForeignKeyStatement, getAddPrimaryKeyStatement, getCatalogSeparator, getCheckConstraintForValues, getColumnMappingClass, getColumns, getContinuationString, getCreateDatabaseStatement, getCreateIndexStatement, getCreateTableStatement, getDatastoreDriverName, getDatastoreDriverVersion, getDatastoreIdentifierMaxLength, getDatastoreProductName, getDatastoreProductVersion, getDefaultSqlTypeForJavaType, getDeleteTableStatement, getDriverMajorVersion, getDriverMinorVersion, getDropViewStatement, getEscapeCharacter, getEscapePatternExpression, getExistingIndexes, getIdentifierQuoteString, getIdentityJavaTypeForType, getJDBCTypeForName, getMappingManager, getMaxForeignKeys, getMaxIndexes, getMiliseconds, getNameForJDBCType, getNewUUIDFunction, getOrderString, getPatternExpressionAnyCharacter, getPatternExpressionZeroMoreCharacters, getPreferredDefaultSQLTypeForJDBCType, getRangeByRowNumberColumn, getRangeByRowNumberColumn2, getRequiredTransactionIsolationLevel, getReservedWords, getSelectNewUUIDStmt, getSelectWithLockOption, getSQLTypeInfoForJdbcType, getSupportedOptions, getSurrogateForEmptyStrings, getTime, getTransactionIsolationForSchemaCreation, getUnlimitedLengthPrecisionValue, getUpdateTableStatement, initialise, initialiseTypes, isReservedKeyword, isStatementTimeout, isValidPrimaryKeyType, newFKInfo, newRDBMSColumnInfo, registerColumnMapping, registerColumnMapping, sequenceExists, supportsOption, supportsQueryFetchSize, supportsTransactionIsolation, toString, validToIndexMapping
 
- 
 
- 
- 
- 
Constructor Detail- 
DerbyAdapterpublic DerbyAdapter(DatabaseMetaData metadata) Constructs an Apache Derby adapter based on the given JDBC metadata.- Parameters:
- metadata- the database metadata.
 
 
- 
 - 
Method Detail- 
initialiseDatastorepublic void initialiseDatastore(Connection conn) Creates the auxiliary functions/procedures in the schema- Specified by:
- initialiseDatastorein interface- DatastoreAdapter
- Overrides:
- initialiseDatastorein class- BaseDatastoreAdapter
- Parameters:
- conn- the connection to the datastore
 
 - 
getSchemaNamepublic String getSchemaName(Connection conn) throws SQLException Accessor for the schema name.- Specified by:
- getSchemaNamein interface- DatastoreAdapter
- Overrides:
- getSchemaNamein class- BaseDatastoreAdapter
- Parameters:
- conn- The Connection to use
- Returns:
- The schema name used by this connection
- Throws:
- SQLException- if an error occurs
 
 - 
getCatalogNamepublic String getCatalogName(Connection conn) throws SQLException Accessor for the catalog name.- Specified by:
- getCatalogNamein interface- DatastoreAdapter
- Overrides:
- getCatalogNamein class- BaseDatastoreAdapter
- Parameters:
- conn- The Connection to use
- Returns:
- The catalog name used by this connection
- Throws:
- SQLException- if an error occurs
 
 - 
getVendorIDpublic String getVendorID() Accessor for the vendor id.- Specified by:
- getVendorIDin interface- DatastoreAdapter
- Overrides:
- getVendorIDin class- BaseDatastoreAdapter
- Returns:
- The vendor id.
 
 - 
newSQLTypeInfopublic SQLTypeInfo newSQLTypeInfo(ResultSet rs) Description copied from interface:DatastoreAdapterCreate a new SQL type info from the current row of the passed ResultSet. Allows an adapter to override particular types where the JDBC driver is known to be buggy.- Specified by:
- newSQLTypeInfoin interface- DatastoreAdapter
- Overrides:
- newSQLTypeInfoin class- BaseDatastoreAdapter
- Parameters:
- rs- ResultSet
- Returns:
- The SQL type info
 
 - 
getDropDatabaseStatementpublic String getDropDatabaseStatement(String catalogName, String schemaName) Description copied from interface:DatastoreAdapterMethod to return the statement necessary to drop a database with this RDBMS. Note that some RDBMS don't support this.- Specified by:
- getDropDatabaseStatementin interface- DatastoreAdapter
- Overrides:
- getDropDatabaseStatementin class- BaseDatastoreAdapter
- Parameters:
- catalogName- Name of the catalog
- schemaName- Name of the schema
- Returns:
- The DDL statement
 
 - 
getDropTableStatementpublic String getDropTableStatement(Table table) Description copied from class:BaseDatastoreAdapterReturns the appropriate SQL to drop the given table. It should return something like:DROP TABLE FOO CASCADE - Specified by:
- getDropTableStatementin interface- DatastoreAdapter
- Overrides:
- getDropTableStatementin class- BaseDatastoreAdapter
- Parameters:
- table- The table to drop.
- Returns:
- The text of the SQL statement.
 
 - 
getAddCandidateKeyStatementpublic String getAddCandidateKeyStatement(CandidateKey ck, IdentifierFactory factory) Returns the appropriate SQL to add a candidate key to its table. It should return something like:CREATE [UNIQUE] INDEX FOO_CK ON TBL (COL1 [, COL2]) - Specified by:
- getAddCandidateKeyStatementin interface- DatastoreAdapter
- Overrides:
- getAddCandidateKeyStatementin class- BaseDatastoreAdapter
- Parameters:
- ck- An object describing the candidate key.
- factory- Identifier factory
- Returns:
- The text of the SQL statement.
 
 - 
getIdentityLastValueStmtpublic String getIdentityLastValueStmt(Table table, String columnName) Accessor for the auto-increment SQL statement for this datastore.- Specified by:
- getIdentityLastValueStmtin interface- DatastoreAdapter
- Overrides:
- getIdentityLastValueStmtin class- BaseDatastoreAdapter
- Parameters:
- table- Name of the table that the autoincrement is for
- columnName- Name of the column that the autoincrement is for
- Returns:
- The statement for getting the latest auto-increment key
 
 - 
getIdentityKeywordpublic String getIdentityKeyword(org.datanucleus.store.StoreManager storeMgr) Accessor for the auto-increment keyword for generating DDLs (CREATE TABLEs...).- Specified by:
- getIdentityKeywordin interface- DatastoreAdapter
- Overrides:
- getIdentityKeywordin class- BaseDatastoreAdapter
- Parameters:
- storeMgr- The Store Manager
- Returns:
- The keyword for a column using auto-increment
 
 - 
isIdentityFieldDataTypepublic boolean isIdentityFieldDataType(String columnDef) Verifies if the givencolumnDefis auto incremented by the datastore.- Specified by:
- isIdentityFieldDataTypein interface- DatastoreAdapter
- Overrides:
- isIdentityFieldDataTypein class- BaseDatastoreAdapter
- Parameters:
- columnDef- the datastore type name
- Returns:
- true when the columnDefhas values auto incremented by the datastore
 
 - 
getInsertStatementForNoColumnspublic String getInsertStatementForNoColumns(Table table) Method to return the INSERT statement to use when inserting into a table that has no columns specified. This is the case when we have a single column in the table and that column is autoincrement/identity (and so is assigned automatically in the datastore).- Specified by:
- getInsertStatementForNoColumnsin interface- DatastoreAdapter
- Overrides:
- getInsertStatementForNoColumnsin class- BaseDatastoreAdapter
- Parameters:
- table- The table
- Returns:
- The INSERT statement
 
 - 
getDatastoreDateStatementpublic String getDatastoreDateStatement() Accessor for a statement that will return the statement to use to get the datastore date.- Specified by:
- getDatastoreDateStatementin interface- DatastoreAdapter
- Overrides:
- getDatastoreDateStatementin class- BaseDatastoreAdapter
- Returns:
- SQL statement to get the datastore date
 
 - 
getSelectForUpdateTextpublic String getSelectForUpdateText() Method returning the text to append to the end of the SELECT to perform the equivalent of "SELECT ... FOR UPDATE" (on some RDBMS). Derby doesn't support "FOR UPDATE" in all situations and has a similar one "WITH RR", see https://issues.apache.org/jira/browse/DERBY-3900- Specified by:
- getSelectForUpdateTextin interface- DatastoreAdapter
- Overrides:
- getSelectForUpdateTextin class- BaseDatastoreAdapter
- Returns:
- The "FOR UPDATE" style text
 
 - 
validToSelectMappingInStatementpublic boolean validToSelectMappingInStatement(SelectStatement stmt, JavaTypeMapping m) Method to return if it is valid to select the specified mapping for the specified statement for this datastore adapter. Sometimes, dependent on the type of the column(s), and what other components are present in the statement, it may be invalid to select the mapping. This implementation returns true, so override in database-specific subclass as required.- Specified by:
- validToSelectMappingInStatementin interface- DatastoreAdapter
- Overrides:
- validToSelectMappingInStatementin class- BaseDatastoreAdapter
- Parameters:
- stmt- The statement
- m- The mapping that we want to select
- Returns:
- Whether it is valid
 
 - 
getNumericConversionFunctionpublic String getNumericConversionFunction() Accessor for the function to use for converting to numeric.- Specified by:
- getNumericConversionFunctionin interface- DatastoreAdapter
- Overrides:
- getNumericConversionFunctionin class- BaseDatastoreAdapter
- Returns:
- The numeric conversion function for this datastore.
 
 - 
isStatementCancelpublic boolean isStatementCancel(SQLException sqle) Return whether this exception represents a cancelled statement.- Specified by:
- isStatementCancelin interface- DatastoreAdapter
- Overrides:
- isStatementCancelin class- BaseDatastoreAdapter
- Parameters:
- sqle- the exception
- Returns:
- whether it is a cancel
 
 - 
getRangeByLimitEndOfStatementClausepublic String getRangeByLimitEndOfStatementClause(long offset, long count, boolean hasOrdering) Method to return the SQL to append to the WHERE clause of a SELECT statement to handle restriction of ranges using the OFFSET/FETCH keywords.- Specified by:
- getRangeByLimitEndOfStatementClausein interface- DatastoreAdapter
- Overrides:
- getRangeByLimitEndOfStatementClausein class- BaseDatastoreAdapter
- Parameters:
- offset- The offset to return from
- count- The number of items to return
- hasOrdering- Whether there is ordering present
- Returns:
- The SQL to append to allow for ranges using OFFSET/FETCH.
 
 - 
getSequenceCreateStmtpublic String getSequenceCreateStmt(String sequenceName, Integer min, Integer max, Integer start, Integer increment, Integer cacheSize) Accessor for the sequence statement to create the sequence.- Specified by:
- getSequenceCreateStmtin interface- DatastoreAdapter
- Overrides:
- getSequenceCreateStmtin class- BaseDatastoreAdapter
- Parameters:
- sequenceName- Name of the sequence
- min- Minimum value for the sequence
- max- Maximum value for the sequence
- start- Start value for the sequence
- increment- Increment value for the sequence
- cacheSize- Cache size for the sequence
- Returns:
- The statement for getting the next id from the sequence
 
 - 
getSequenceNextStmtpublic String getSequenceNextStmt(String sequenceName) Accessor for the statement for getting the next id from the sequence for this datastore.- Specified by:
- getSequenceNextStmtin interface- DatastoreAdapter
- Overrides:
- getSequenceNextStmtin class- BaseDatastoreAdapter
- Parameters:
- sequenceName- Name of the sequence
- Returns:
- The statement for getting the next id for the sequence
 
 - 
getSQLOperationClasspublic Class getSQLOperationClass(String operationName) Description copied from interface:DatastoreAdapterAccessor for the SQLOperation class for the specified operation (if available for this datastore).- Specified by:
- getSQLOperationClassin interface- DatastoreAdapter
- Overrides:
- getSQLOperationClassin class- BaseDatastoreAdapter
- Parameters:
- operationName- operation name
- Returns:
- SQLOperation class (or null if none available)
 
 - 
getSQLMethodClasspublic Class getSQLMethodClass(String className, String methodName, org.datanucleus.ClassLoaderResolver clr) Description copied from interface:DatastoreAdapterAccessor for the SQLMethod class for the query invocation of specified class + method name (if available for this datastore).- Specified by:
- getSQLMethodClassin interface- DatastoreAdapter
- Overrides:
- getSQLMethodClassin class- BaseDatastoreAdapter
- Parameters:
- className- Name of the class (or null if this is a STATIC method)
- methodName- Method name
- clr- ClassLoader resolver, in case className is a subclass of a supported type
- Returns:
- The SQLMethod class (or null if not defined for this datastore).
 
 - 
loadColumnMappingsprotected void loadColumnMappings(org.datanucleus.plugin.PluginManager mgr, org.datanucleus.ClassLoaderResolver clr)Load all datastore mappings for this RDBMS database.- Overrides:
- loadColumnMappingsin class- BaseDatastoreAdapter
- Parameters:
- mgr- the PluginManager
- clr- the ClassLoaderResolver
 
 
- 
 
-