Class DB2Adapter
java.lang.Object
org.datanucleus.store.rdbms.adapter.BaseDatastoreAdapter
org.datanucleus.store.rdbms.adapter.DB2Adapter
- All Implemented Interfaces:
DatastoreAdapter
- Direct Known Subclasses:
DB2AS400Adapter
Provides methods for adapting SQL language elements to the DB2 database.
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class BaseDatastoreAdapter
BaseDatastoreAdapter.ColumnTypeMappings -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringA string containing the list of DB2 keywords This list is normally obtained dynamically from the driver using "DatabaseMetaData.getSQLKeywords()".Fields inherited from class BaseDatastoreAdapter
catalogSeparator, datastoreMajorVersion, datastoreMinorVersion, datastoreProductName, datastoreProductVersion, datastoreRevisionVersion, datastoreTypeMappingsByJavaType, 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, unsupportedJdbcTypesByIdFields inherited from interface DatastoreAdapter
ACCESS_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, INCLUDE_TABLE_INDEX_STATISTICS, 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 Summary
ConstructorsConstructorDescriptionDB2Adapter(DatabaseMetaData metadata) Constructs a DB2 adapter based on the given JDBC metadata. -
Method Summary
Modifier and TypeMethodDescriptionContinuation string to use where the SQL statement goes over more than 1 line.intgetDatastoreIdentifierMaxLength(IdentifierType identifierType) Method to return the maximum length of a datastore identifier of the specified type.getDropDatabaseStatement(String schemaName, String catalogName) Method to return the statement necessary to drop a database with this RDBMS.getDropTableStatement(Table table) Returns the appropriate SQL to drop the given table.getIdentityKeyword(org.datanucleus.store.StoreManager storeMgr) Accessor for the auto-increment keyword for generating DDLs (CREATE TABLEs...).getIdentityLastValueStmt(Table table, String columnName) Accessor for the auto-increment sql statement for this datastore.Method to return the column name to use when handling ranges via a row-number on the select using the original method (DB2).getSchemaName(Connection conn) Accessor for the Schema Name for this datastore.getSequenceCreateStmt(String sequenceName, Integer min, Integer max, Integer start, Integer increment, Integer cacheSize) Accessor for the sequence statement to create the sequence.getSequenceNextStmt(String sequenceName) Accessor for the statement for getting the next id from the sequence for this datastore.getSQLMethodClass(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).Class<? extends SQLOperation> getSQLOperationClass(String operationName) Accessor for the SQLOperation class for the specified operation (if available for this datastore).Accessor for the Vendor ID for this datastore.voidinitialiseTypes(org.datanucleus.store.schema.StoreSchemaHandler handler, org.datanucleus.store.connection.ManagedConnection mconn) Initialise the types for this datastore.booleanreturn whether this exception represents a cancelled statement.booleanreturn whether this exception represents a timed out statement.protected voidloadColumnMappings(org.datanucleus.plugin.PluginManager mgr, org.datanucleus.ClassLoaderResolver clr) Load all datastore mappings for this RDBMS database.Method to create a column info for the current row.Create a new SQL type info from the current row of the passed ResultSet.Methods inherited from class BaseDatastoreAdapter
addSQLTypeForJDBCType, deregisterColumnMappingsForJDBCType, getAdapterTime, getAddCandidateKeyStatement, getAddColumnStatement, getAddForeignKeyStatement, getAddPrimaryKeyStatement, getCatalogName, getCatalogSeparator, getCheckConstraintForValues, getColumnMappingClass, getColumns, getCreateDatabaseStatement, getCreateIndexStatement, getCreateTableStatement, getDatastoreDateStatement, getDatastoreDriverName, getDatastoreDriverVersion, getDatastoreProductName, getDatastoreProductVersion, getDefaultSqlTypeForJavaType, getDeleteTableStatement, getDriverMajorVersion, getDriverMinorVersion, getDropViewStatement, getEscapeCharacter, getEscapePatternExpression, getExistingIndexes, getIdentifierQuoteString, getIdentityJavaTypeForType, getInsertStatementForNoColumns, getJDBCTypeForName, getMappingManager, getMaxForeignKeys, getMaxIndexes, getMiliseconds, getNameForJDBCType, getNewUUIDFunction, getNumericConversionFunction, getOrderString, getPatternExpressionAnyCharacter, getPatternExpressionZeroMoreCharacters, getPreferredDefaultSQLTypeForJDBCType, getRangeByLimitEndOfStatementClause, getRangeByRowNumberColumn2, getRequiredTransactionIsolationLevel, getReservedWords, getSelectForUpdateText, getSelectNewUUIDStmt, getSelectWithLockOption, getSQLTypeInfoForJdbcType, getSupportedOptions, getSurrogateForEmptyStrings, getTime, getTransactionIsolationForSchemaCreation, getUnlimitedLengthPrecisionValue, getUpdateTableStatement, initialise, initialiseDatastore, isIdentityFieldDataType, isReservedKeyword, isValidPrimaryKeyType, newFKInfo, registerColumnMapping, registerColumnMapping, sequenceExists, supportsOption, supportsQueryFetchSize, supportsTransactionIsolation, toString, validToIndexMapping, validToSelectMappingInStatementMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface DatastoreAdapter
getIdentityKeyword
-
Field Details
-
DB2_RESERVED_WORDS
A string containing the list of DB2 keywords This list is normally obtained dynamically from the driver using "DatabaseMetaData.getSQLKeywords()". Based on database DB2 version 7.- See Also:
-
-
Constructor Details
-
DB2Adapter
Constructs a DB2 adapter based on the given JDBC metadata.- Parameters:
metadata- the database metadata.
-
-
Method Details
-
initialiseTypes
public void initialiseTypes(org.datanucleus.store.schema.StoreSchemaHandler handler, org.datanucleus.store.connection.ManagedConnection mconn) Initialise the types for this datastore.- Specified by:
initialiseTypesin interfaceDatastoreAdapter- Overrides:
initialiseTypesin classBaseDatastoreAdapter- Parameters:
handler- SchemaHandler that we initialise the types formconn- Managed connection to use
-
getVendorID
Description copied from interface:DatastoreAdapterAccessor for the Vendor ID for this datastore.- Specified by:
getVendorIDin interfaceDatastoreAdapter- Overrides:
getVendorIDin classBaseDatastoreAdapter- Returns:
- Vendor id for this datastore
-
getSchemaName
Description copied from class:BaseDatastoreAdapterAccessor for the Schema Name for this datastore.- Specified by:
getSchemaNamein interfaceDatastoreAdapter- Overrides:
getSchemaNamein classBaseDatastoreAdapter- Parameters:
conn- Connection to the datastore- Returns:
- The schema name
- Throws:
SQLException- Thrown if error occurs in determining the schema name.
-
getDatastoreIdentifierMaxLength
Method to return the maximum length of a datastore identifier of the specified type. If no limit exists then returns -1- Specified by:
getDatastoreIdentifierMaxLengthin interfaceDatastoreAdapter- Overrides:
getDatastoreIdentifierMaxLengthin classBaseDatastoreAdapter- Parameters:
identifierType- Type of identifier (see IdentifierFactory.TABLE, etc)- Returns:
- The max permitted length of this type of identifier
-
newSQLTypeInfo
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 interfaceDatastoreAdapter- Overrides:
newSQLTypeInfoin classBaseDatastoreAdapter- Parameters:
rs- ResultSet- Returns:
- The SQL type info
-
newRDBMSColumnInfo
Method to create a column info for the current row. Overrides the dataType/columnSize/decimalDigits to cater for DB2 particularities.- Specified by:
newRDBMSColumnInfoin interfaceDatastoreAdapter- Overrides:
newRDBMSColumnInfoin classBaseDatastoreAdapter- Parameters:
rs- ResultSet from DatabaseMetaData.getColumns()- Returns:
- column info
-
getDropDatabaseStatement
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 interfaceDatastoreAdapter- Overrides:
getDropDatabaseStatementin classBaseDatastoreAdapter- Parameters:
schemaName- Name of the catalogcatalogName- Name of the schema- Returns:
- The DDL statement
-
getDropTableStatement
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 interfaceDatastoreAdapter- Overrides:
getDropTableStatementin classBaseDatastoreAdapter- Parameters:
table- The table to drop.- Returns:
- The text of the SQL statement.
-
getContinuationString
Continuation string to use where the SQL statement goes over more than 1 line. DB2 doesn't convert newlines into continuation characters and so we just provide a space so that it accepts the statement.- Overrides:
getContinuationStringin classBaseDatastoreAdapter- Returns:
- Continuation string.
-
getIdentityLastValueStmt
Accessor for the auto-increment sql statement for this datastore.- Specified by:
getIdentityLastValueStmtin interfaceDatastoreAdapter- Overrides:
getIdentityLastValueStmtin classBaseDatastoreAdapter- Parameters:
table- Name of the table that the autoincrement is forcolumnName- Name of the column that the autoincrement is for- Returns:
- The statement for getting the latest auto-increment key
-
getIdentityKeyword
Accessor for the auto-increment keyword for generating DDLs (CREATE TABLEs...).- Specified by:
getIdentityKeywordin interfaceDatastoreAdapter- Overrides:
getIdentityKeywordin classBaseDatastoreAdapter- Parameters:
storeMgr- Store Manager- Returns:
- The keyword for a column using auto-increment
-
getSequenceCreateStmt
public 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 interfaceDatastoreAdapter- Overrides:
getSequenceCreateStmtin classBaseDatastoreAdapter- Parameters:
sequenceName- Name of the sequencemin- Minimum value for the sequencemax- Maximum value for the sequencestart- Start value for the sequenceincrement- Increment value for the sequencecacheSize- Cache size for the sequence- Returns:
- The statement for getting the next id from the sequence
-
getSequenceNextStmt
Accessor for the statement for getting the next id from the sequence for this datastore.- Specified by:
getSequenceNextStmtin interfaceDatastoreAdapter- Overrides:
getSequenceNextStmtin classBaseDatastoreAdapter- Parameters:
sequenceName- Name of the sequence- Returns:
- The statement for getting the next id for the sequence
-
getRangeByRowNumberColumn
Description copied from class:BaseDatastoreAdapterMethod to return the column name to use when handling ranges via a row-number on the select using the original method (DB2). Defaults to an empty string (not supported).- Specified by:
getRangeByRowNumberColumnin interfaceDatastoreAdapter- Overrides:
getRangeByRowNumberColumnin classBaseDatastoreAdapter- Returns:
- The row number column.
-
isStatementCancel
return whether this exception represents a cancelled statement.- Specified by:
isStatementCancelin interfaceDatastoreAdapter- Overrides:
isStatementCancelin classBaseDatastoreAdapter- Parameters:
sqle- the exception- Returns:
- whether it is a cancel
-
isStatementTimeout
Description copied from class:BaseDatastoreAdapterreturn whether this exception represents a timed out statement.- Specified by:
isStatementTimeoutin interfaceDatastoreAdapter- Overrides:
isStatementTimeoutin classBaseDatastoreAdapter- Parameters:
sqle- the exception- Returns:
- whether it is a timeout
-
getSQLOperationClass
Description copied from interface:DatastoreAdapterAccessor for the SQLOperation class for the specified operation (if available for this datastore).- Specified by:
getSQLOperationClassin interfaceDatastoreAdapter- Overrides:
getSQLOperationClassin classBaseDatastoreAdapter- Parameters:
operationName- operation name- Returns:
- SQLOperation class (or null if none available)
-
getSQLMethodClass
public Class<? extends SQLMethod> 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 interfaceDatastoreAdapter- Overrides:
getSQLMethodClassin classBaseDatastoreAdapter- Parameters:
className- Name of the class (or null if this is a STATIC method)methodName- Method nameclr- ClassLoader resolver, in case className is a subclass of a supported type- Returns:
- The SQLMethod class (or null if not defined for this datastore).
-
loadColumnMappings
protected void loadColumnMappings(org.datanucleus.plugin.PluginManager mgr, org.datanucleus.ClassLoaderResolver clr) Load all datastore mappings for this RDBMS database.- Overrides:
loadColumnMappingsin classBaseDatastoreAdapter- Parameters:
mgr- the PluginManagerclr- the ClassLoaderResolver
-