org.datanucleus.store.rdbms.adapter
Class DB2Adapter

java.lang.Object
  extended by org.datanucleus.store.rdbms.adapter.DatabaseAdapter
      extended by org.datanucleus.store.rdbms.adapter.DB2Adapter
All Implemented Interfaces:
org.datanucleus.store.mapped.DatastoreAdapter, RDBMSAdapter
Direct Known Subclasses:
DB2AS400Adapter

public class DB2Adapter
extends DatabaseAdapter

Provides methods for adapting SQL language elements to the DB2 database.

See Also:
DatabaseAdapter

Field Summary
static String DB2_RESERVED_WORDS
          A string containing the list of DB2 keywords This list is normally obtained dynamically from the driver using "DatabaseMetaData.getSQLKeywords()".
 
Fields inherited from class org.datanucleus.store.rdbms.adapter.DatabaseAdapter
catalogSeparator, datastoreMajorVersion, datastoreMinorVersion, datastoreProductName, datastoreProductVersion, datastoreRevisionVersion, driverMajorVersion, driverMinorVersion, driverName, driverVersion, identifierQuoteString, LOCALISER, LOCALISER_BASE, maxColumnNameLength, maxConstraintNameLength, maxIndexNameLength, maxTableNameLength, properties, reservedKeywords, supportedOptions
 
Fields inherited from interface org.datanucleus.store.rdbms.adapter.RDBMSAdapter
ACCESS_PARENTQUERY_IN_SUBQUERY_JOINED, ALTER_TABLE_DROP_CONSTRAINT_SYNTAX, ALTER_TABLE_DROP_FOREIGN_KEY_CONSTRAINT, ANSI_CROSSJOIN_SYNTAX, ANSI_JOIN_SYNTAX, AUTO_INCREMENT_COLUMN_TYPE_SPECIFICATION, AUTO_INCREMENT_KEYS_NULL_SPECIFICATION, AUTO_INCREMENT_PK_IN_CREATE_TABLE_COLUMN_DEF, BLOB_SET_USING_SETSTRING, CHAR_COLUMNS_PADDED_WITH_SPACES, CHECK_IN_CREATE_STATEMENTS, CHECK_IN_END_CREATE_STATEMENTS, CLOB_SET_USING_SETSTRING, 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, 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, INCLUDE_ORDERBY_COLS_IN_SELECT, LOCK_OPTION_PLACED_AFTER_FROM, LOCK_OPTION_PLACED_WITHIN_JOIN, LOCK_WITH_SELECT_FOR_UPDATE, NULL_EQUALS_EMPTY_STRING, NULLS_IN_CANDIDATE_KEYS, NULLS_KEYWORD_IN_COLUMN_OPTIONS, ORDERBY_USING_SELECT_COLUMN_INDEX, PERSIST_OF_UNASSIGNED_CHAR, PRIMARYKEY_IN_CREATE_STATEMENTS, STATEMENT_BATCHING, STORED_PROCEDURES, 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_MULTITABLE, USE_UNION_ALL, VIEWS
 
Fields inherited from interface org.datanucleus.store.mapped.DatastoreAdapter
ANALYSIS_METHODS, BIT_IS_REALLY_BOOLEAN, BOOLEAN_COMPARISON, CATALOGS_IN_TABLE_DEFINITIONS, ESCAPE_EXPRESSION_IN_LIKE_PREDICATE, IDENTIFIERS_LOWERCASE, IDENTIFIERS_LOWERCASE_QUOTED, IDENTIFIERS_MIXEDCASE, IDENTIFIERS_MIXEDCASE_QUOTED, IDENTIFIERS_MIXEDCASE_QUOTED_SENSITIVE, IDENTIFIERS_MIXEDCASE_SENSITIVE, IDENTIFIERS_UPPERCASE, IDENTIFIERS_UPPERCASE_QUOTED, IDENTITY_COLUMNS, PROJECTION_IN_TABLE_REFERENCE_JOINS, SCHEMAS_IN_TABLE_DEFINITIONS, SEQUENCES
 
Constructor Summary
DB2Adapter(DatabaseMetaData metadata)
          Constructs a DB2 adapter based on the given JDBC metadata.
 
Method Summary
 String getAutoIncrementKeyword()
          Accessor for the auto-increment keyword for generating DDLs (CREATE TABLEs...).
 String getAutoIncrementStmt(Table table, String columnName)
          Accessor for the auto-increment sql statement for this datastore.
 String getContinuationString()
          Continuation string to use where the SQL statement goes over more than 1 line.
 int getDatastoreIdentifierMaxLength(org.datanucleus.store.mapped.IdentifierType identifierType)
          Method to return the maximum length of a datastore identifier of the specified type.
 String getDropTableStatement(org.datanucleus.store.mapped.DatastoreContainerObject table)
          Returns the appropriate SQL to drop the given table.
 String getRangeByRowNumberColumn()
          Method to return the column name to use when handling ranges via a rownumber on the select using the original method (DB2).
 String getSchemaName(Connection conn)
          Accessor for the Schema Name for this datastore.
 String getSequenceCreateStmt(String sequence_name, Integer min, Integer max, Integer start, Integer increment, Integer cache_size)
          Accessor for the sequence statement to create the sequence.
 String getSequenceNextStmt(String sequence_name)
          Accessor for the statement for getting the next id from the sequence for this datastore.
 String getVendorID()
           
 void initialiseTypes(org.datanucleus.store.schema.StoreSchemaHandler handler, org.datanucleus.store.connection.ManagedConnection mconn)
          Initialise the types for this datastore.
 boolean isStatementCancel(SQLException sqle)
          return whether this exception represents a cancelled statement.
 boolean isStatementTimeout(SQLException sqle)
          return whether this exception represents a timed out statement.
 RDBMSColumnInfo newRDBMSColumnInfo(ResultSet rs)
          Method to create a column info for the current row.
 SQLTypeInfo newSQLTypeInfo(ResultSet rs)
          Create a new SQL type info from the current row of the passed ResultSet.
 
Methods inherited from class org.datanucleus.store.rdbms.adapter.DatabaseAdapter
addSQLTypeForJDBCType, getAdapterTime, getAddCandidateKeyStatement, getAddColumnStatement, getAddForeignKeyStatement, getAddPrimaryKeyStatement, getCatalogName, getCatalogSeparator, getCheckConstraintForValues, getColumns, getCreateIndexStatement, getCreateTableStatement, getDatastoreDateStatement, getDatastoreDriverName, getDatastoreDriverVersion, getDatastoreProductName, getDatastoreProductVersion, getDeleteTableStatement, getDriverMajorVersion, getDriverMinorVersion, getDropViewStatement, getEscapeCharacter, getEscapePatternExpression, getExistingIndexes, getIdentifierQuoteString, getInsertStatementForNoColumns, getMappingManager, getMaxForeignKeys, getMaxIndexes, getMiliseconds, getNewUUIDFunction, getNumericConversionFunction, getOperatorConcat, getOrderString, getPatternExpressionAnyCharacter, getPatternExpressionZeroMoreCharacters, getRangeByLimitEndOfStatementClause, getRangeByRowNumberColumn2, getRequiredTransactionIsolationLevel, getSelectForUpdateText, getSelectNewUUIDStmt, getSelectWithLockOption, getSQLTypeInfoForJdbcType, getSupportedOptions, getSurrogateForEmptyStrings, getTime, getTransactionIsolationForSchemaCreation, getUnlimitedLengthPrecisionValue, getValueForProperty, initialiseDatastore, isIdentityFieldDataType, isKeyword, isReservedKeyword, isValidPrimaryKeyType, iteratorReservedWords, newFKInfo, parseKeywordList, removeUnsupportedMappings, setProperties, supportsOption, supportsQueryFetchSize, supportsTransactionIsolation, toString, validToSelectMappingInStatement
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

DB2_RESERVED_WORDS

public static final String 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:
Constant Field Values
Constructor Detail

DB2Adapter

public DB2Adapter(DatabaseMetaData metadata)
Constructs a DB2 adapter based on the given JDBC metadata.

Parameters:
metadata - the database metadata.
Method Detail

initialiseTypes

public void initialiseTypes(org.datanucleus.store.schema.StoreSchemaHandler handler,
                            org.datanucleus.store.connection.ManagedConnection mconn)
Initialise the types for this datastore.

Specified by:
initialiseTypes in interface org.datanucleus.store.mapped.DatastoreAdapter
Overrides:
initialiseTypes in class DatabaseAdapter
Parameters:
handler - SchemaHandler that we initialise the types for
mconn - Managed connection to use

getVendorID

public String getVendorID()
Specified by:
getVendorID in interface org.datanucleus.store.mapped.DatastoreAdapter
Overrides:
getVendorID in class DatabaseAdapter

getSchemaName

public String getSchemaName(Connection conn)
                     throws SQLException
Description copied from class: DatabaseAdapter
Accessor for the Schema Name for this datastore.

Specified by:
getSchemaName in interface RDBMSAdapter
Overrides:
getSchemaName in class DatabaseAdapter
Parameters:
conn - Connection to the datastore
Returns:
The schema name
Throws:
SQLException - Thrown if error occurs in determining the schema name.

getDatastoreIdentifierMaxLength

public int getDatastoreIdentifierMaxLength(org.datanucleus.store.mapped.IdentifierType identifierType)
Method to return the maximum length of a datastore identifier of the specified type. If no limit exists then returns -1

Specified by:
getDatastoreIdentifierMaxLength in interface org.datanucleus.store.mapped.DatastoreAdapter
Overrides:
getDatastoreIdentifierMaxLength in class DatabaseAdapter
Parameters:
identifierType - Type of identifier (see IdentifierFactory.TABLE, etc)
Returns:
The max permitted length of this type of identifier

newSQLTypeInfo

public SQLTypeInfo newSQLTypeInfo(ResultSet rs)
Description copied from interface: RDBMSAdapter
Create 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:
newSQLTypeInfo in interface RDBMSAdapter
Overrides:
newSQLTypeInfo in class DatabaseAdapter
Parameters:
rs - ResultSet
Returns:
The SQL type info

newRDBMSColumnInfo

public RDBMSColumnInfo newRDBMSColumnInfo(ResultSet rs)
Method to create a column info for the current row. Overrides the dataType/columnSize/decimalDigits to cater for DB2 particularities.

Specified by:
newRDBMSColumnInfo in interface RDBMSAdapter
Overrides:
newRDBMSColumnInfo in class DatabaseAdapter
Parameters:
rs - ResultSet from DatabaseMetaData.getColumns()
Returns:
column info

getDropTableStatement

public String getDropTableStatement(org.datanucleus.store.mapped.DatastoreContainerObject table)
Description copied from class: DatabaseAdapter
Returns the appropriate SQL to drop the given table. It should return something like:

 DROP TABLE FOO CASCADE
 

Specified by:
getDropTableStatement in interface RDBMSAdapter
Overrides:
getDropTableStatement in class DatabaseAdapter
Parameters:
table - The table to drop.
Returns:
The text of the SQL statement.

getAutoIncrementStmt

public String getAutoIncrementStmt(Table table,
                                   String columnName)
Accessor for the auto-increment sql statement for this datastore.

Specified by:
getAutoIncrementStmt in interface RDBMSAdapter
Overrides:
getAutoIncrementStmt in class DatabaseAdapter
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

getAutoIncrementKeyword

public String getAutoIncrementKeyword()
Accessor for the auto-increment keyword for generating DDLs (CREATE TABLEs...).

Specified by:
getAutoIncrementKeyword in interface RDBMSAdapter
Overrides:
getAutoIncrementKeyword in class DatabaseAdapter
Returns:
The keyword for a column using auto-increment

getContinuationString

public String 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:
getContinuationString in class DatabaseAdapter
Returns:
Continuation string.

getSequenceCreateStmt

public String getSequenceCreateStmt(String sequence_name,
                                    Integer min,
                                    Integer max,
                                    Integer start,
                                    Integer increment,
                                    Integer cache_size)
Accessor for the sequence statement to create the sequence.

Specified by:
getSequenceCreateStmt in interface RDBMSAdapter
Overrides:
getSequenceCreateStmt in class DatabaseAdapter
Parameters:
sequence_name - 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
cache_size - Cache size for the sequence
Returns:
The statement for getting the next id from the sequence

getSequenceNextStmt

public String getSequenceNextStmt(String sequence_name)
Accessor for the statement for getting the next id from the sequence for this datastore.

Specified by:
getSequenceNextStmt in interface RDBMSAdapter
Overrides:
getSequenceNextStmt in class DatabaseAdapter
Parameters:
sequence_name - Name of the sequence
Returns:
The statement for getting the next id for the sequence

getRangeByRowNumberColumn

public String getRangeByRowNumberColumn()
Description copied from class: DatabaseAdapter
Method to return the column name to use when handling ranges via a rownumber on the select using the original method (DB2). Defaults to an empty string (not supported).

Specified by:
getRangeByRowNumberColumn in interface RDBMSAdapter
Overrides:
getRangeByRowNumberColumn in class DatabaseAdapter
Returns:
The row number column.

isStatementCancel

public boolean isStatementCancel(SQLException sqle)
return whether this exception represents a cancelled statement.

Specified by:
isStatementCancel in interface RDBMSAdapter
Overrides:
isStatementCancel in class DatabaseAdapter
Parameters:
sqle - the exception
Returns:
whether it is a cancel

isStatementTimeout

public boolean isStatementTimeout(SQLException sqle)
Description copied from class: DatabaseAdapter
return whether this exception represents a timed out statement.

Specified by:
isStatementTimeout in interface RDBMSAdapter
Overrides:
isStatementTimeout in class DatabaseAdapter
Parameters:
sqle - the exception
Returns:
whether it is a timeout


Copyright © 2012. All Rights Reserved.