org.pentaho.di.core.database
Class DB2DatabaseMeta
java.lang.Object
org.pentaho.di.core.database.BaseDatabaseMeta
org.pentaho.di.core.database.DB2DatabaseMeta
- All Implemented Interfaces:
- Cloneable, DatabaseInterface
public class DB2DatabaseMeta
- extends BaseDatabaseMeta
- implements DatabaseInterface
Contains DB2 specific information through static final members
- Since:
- 11-mrt-2005
- Author:
- Matt
Fields inherited from class org.pentaho.di.core.database.BaseDatabaseMeta |
ATTRIBUTE_CLUSTER_DBNAME_PREFIX, ATTRIBUTE_CLUSTER_HOSTNAME_PREFIX, ATTRIBUTE_CLUSTER_PASSWORD_PREFIX, ATTRIBUTE_CLUSTER_PORT_PREFIX, ATTRIBUTE_CLUSTER_USERNAME_PREFIX, ATTRIBUTE_FORCE_IDENTIFIERS_TO_LOWERCASE, ATTRIBUTE_FORCE_IDENTIFIERS_TO_UPPERCASE, ATTRIBUTE_INITIAL_POOL_SIZE, ATTRIBUTE_IS_CLUSTERED, ATTRIBUTE_MAXIMUM_POOL_SIZE, ATTRIBUTE_MSSQL_DOUBLE_DECIMAL_SEPARATOR, ATTRIBUTE_POOLING_PARAMETER_PREFIX, ATTRIBUTE_PORT_NUMBER, ATTRIBUTE_PREFERRED_SCHEMA_NAME, ATTRIBUTE_PREFIX_EXTRA_OPTION, ATTRIBUTE_QUOTE_ALL_FIELDS, ATTRIBUTE_SQL_CONNECT, ATTRIBUTE_SUPPORTS_BOOLEAN_DATA_TYPE, ATTRIBUTE_USE_POOLING, ATTRIBUTE_USE_RESULT_STREAMING, AUTOINCREMENT_SQL_FOR_BATCH_ID, poolingParameters, SELECT_COUNT_STATEMENT, SEQUENCE_FOR_BATCH_ID |
Method Summary |
int[] |
getAccessTypeList()
Get the list of possible access types for a database. |
String |
getAddColumnStatement(String tablename,
ValueMetaInterface v,
String tk,
boolean use_autoinc,
String pk,
boolean semicolon)
Generates the SQL statement to add a column to the specified table |
int |
getDefaultDatabasePort()
|
String |
getDriverClass()
Obtain the name of the JDBC driver class that we need to use! |
String |
getDropColumnStatement(String tablename,
ValueMetaInterface v,
String tk,
boolean use_autoinc,
String pk,
boolean semicolon)
Generates the SQL statement to drop a column from the specified table |
String |
getExtraOptionIndicator()
|
String |
getFieldDefinition(ValueMetaInterface v,
String tk,
String pk,
boolean use_autoinc,
boolean add_fieldname,
boolean add_cr)
Describe a Value as a field in the database. |
int |
getMaxVARCHARLength()
Get the maximum length of a text field (VARCHAR) for this database connection. |
String |
getModifyColumnStatement(String tablename,
ValueMetaInterface v,
String tk,
boolean use_autoinc,
String pk,
boolean semicolon)
Generates the SQL statement to modify a column in the specified table |
String[] |
getReservedWords()
|
String |
getSQLCurrentSequenceValue(String sequenceName)
Get the current value of a database sequence |
String |
getSQLInsertAutoIncUnknownDimensionRow(String schemaTable,
String keyField,
String versionField)
Get the SQL to insert a new empty unknown record in a dimension. |
String |
getSQLLockTables(String[] tableNames)
|
String |
getSQLNextSequenceValue(String sequenceName)
Get the SQL to get the next value of a sequence. |
String |
getSQLSequenceExists(String sequenceName)
Check if a sequence exists. |
String |
getSQLUnlockTables(String[] tableName)
|
String |
getTruncateTableStatement(String tableName)
|
String |
getURL(String hostname,
String port,
String databaseName)
|
String[] |
getUsedLibraries()
|
boolean |
isDisplaySizeTwiceThePrecision()
|
boolean |
requiresCastToVariousForIsNull()
|
boolean |
supportsBatchUpdates()
|
boolean |
supportsGetBlob()
|
boolean |
supportsNewLinesInSQL()
|
boolean |
supportsSchemas()
|
boolean |
supportsSequenceNoMaxValueOption()
|
boolean |
supportsSequences()
|
boolean |
supportsSetCharacterStream()
See if this database supports the setCharacterStream() method on a PreparedStatement. |
Methods inherited from class org.pentaho.di.core.database.BaseDatabaseMeta |
addExtraOption, checkIndexExists, clone, generateColumnAlias, getAccessType, getAttributes, getBackwardsCompatibleSchemaTableCombination, getBackwardsCompatibleTable, getConnectionPoolingProperties, getConnectSQL, getDatabaseFactoryName, getDatabaseName, getDatabasePortNumberString, getDataTablespace, getDataTablespaceDDL, getEndQuote, getExtraOptions, getExtraOptionSeparator, getExtraOptionsHelpText, getExtraOptionValueSeparator, getFunctionAverage, getFunctionCount, getFunctionMaximum, getFunctionMinimum, getFunctionSum, getHostname, getIndexTablespace, getIndexTablespaceDDL, getInitialPoolSize, getLimitClause, getMaxColumnsInIndex, getMaximumPoolSize, getMaxTextFieldLength, getName, getNextBatchId, getNextBatchIdUsingAutoIncSQL, getNextBatchIdUsingLockTables, getNextBatchIdUsingSequence, getNotFoundTK, getObjectId, getPartitioningInformation, getPassword, getPluginId, getPluginName, getPreferredSchemaName, getSchemaTableCombination, getSelectCountStatement, getServername, getSQLColumnExists, getSQLListOfProcedures, getSQLListOfSchemas, getSQLListOfSequences, getSQLQueryFields, getSQLTableExists, getStartQuote, getSynonymTypes, getTablespaceDDL, getTableTypes, getUsername, getValueFromResultSet, getViewTypes, getXulOverlayFile, isChanged, isDefaultingToUppercase, isExplorable, isFetchSizeSupported, isForcingIdentifiersToLowerCase, isForcingIdentifiersToUpperCase, isMySQLVariant, isPartitioned, isQuoteAllFields, isRequiringTransactionsOnQueries, isStreamingResults, isSystemTable, isUsingConnectionPool, isUsingDoubleDecimalAsSchemaTableSeparator, needsPlaceHolder, needsToLockAllTables, parseStatements, quoteReservedWords, quoteSQLString, releaseSavepoint, requiresCreateTablePrimaryKeyAppend, setAccessType, setAttributes, setChanged, setConnectionPoolingProperties, setConnectSQL, setDatabaseName, setDatabasePortNumberString, setDataTablespace, setForcingIdentifiersToLowerCase, setForcingIdentifiersToUpperCase, setHostname, setIndexTablespace, setInitialPoolSize, setMaximumPoolSize, setName, setObjectId, setPartitioned, setPartitioningInformation, setPassword, setPluginId, setPluginName, setPreferredSchemaName, setQuoteAllFields, setServername, setStreamingResults, setSupportsBooleanDataType, setUsername, setUsingConnectionPool, setUsingDoubleDecimalAsSchemaTableSeparator, supportsAutoInc, supportsBitmapIndex, supportsBooleanDataType, supportsCatalogs, supportsEmptyTransactions, supportsErrorHandling, supportsErrorHandlingOnBatchUpdates, supportsFloatRoundingOnUpdate, supportsOptionsInURL, supportsPreparedStatementMetadataRetrieval, supportsRepository, supportsResultSetMetadataRetrievalOnly, supportsSetLong, supportsSetMaxRows, supportsSynonyms, supportsTimeStampToDateConversion, supportsTransactions, supportsViews, useSafePoints, useSchemaNameForTableList |
Methods inherited from interface org.pentaho.di.core.database.DatabaseInterface |
addExtraOption, checkIndexExists, clone, generateColumnAlias, getAccessType, getAttributes, getConnectionPoolingProperties, getConnectSQL, getDatabaseFactoryName, getDatabaseName, getDatabasePortNumberString, getDataTablespace, getDataTablespaceDDL, getEndQuote, getExtraOptions, getExtraOptionSeparator, getExtraOptionsHelpText, getExtraOptionValueSeparator, getFunctionAverage, getFunctionCount, getFunctionMaximum, getFunctionMinimum, getFunctionSum, getHostname, getIndexTablespace, getIndexTablespaceDDL, getInitialPoolSize, getLimitClause, getMaxColumnsInIndex, getMaximumPoolSize, getMaxTextFieldLength, getName, getNextBatchId, getNotFoundTK, getObjectId, getPartitioningInformation, getPassword, getPluginId, getPluginName, getPreferredSchemaName, getSchemaTableCombination, getSelectCountStatement, getServername, getSQLColumnExists, getSQLListOfProcedures, getSQLListOfSchemas, getSQLListOfSequences, getSQLQueryFields, getSQLTableExists, getStartQuote, getSynonymTypes, getTableTypes, getUsername, getValueFromResultSet, getViewTypes, getXulOverlayFile, isChanged, isDefaultingToUppercase, isExplorable, isFetchSizeSupported, isForcingIdentifiersToLowerCase, isForcingIdentifiersToUpperCase, isMySQLVariant, isPartitioned, isQuoteAllFields, isRequiringTransactionsOnQueries, isStreamingResults, isSystemTable, isUsingConnectionPool, isUsingDoubleDecimalAsSchemaTableSeparator, needsPlaceHolder, needsToLockAllTables, parseStatements, quoteReservedWords, quoteSQLString, releaseSavepoint, requiresCreateTablePrimaryKeyAppend, setAccessType, setAttributes, setChanged, setConnectionPoolingProperties, setConnectSQL, setDatabaseName, setDatabasePortNumberString, setDataTablespace, setForcingIdentifiersToLowerCase, setForcingIdentifiersToUpperCase, setHostname, setIndexTablespace, setInitialPoolSize, setMaximumPoolSize, setName, setObjectId, setPartitioned, setPartitioningInformation, setPassword, setPluginId, setPluginName, setPreferredSchemaName, setQuoteAllFields, setServername, setStreamingResults, setSupportsBooleanDataType, setUsername, setUsingConnectionPool, setUsingDoubleDecimalAsSchemaTableSeparator, supportsAutoInc, supportsBitmapIndex, supportsBooleanDataType, supportsCatalogs, supportsEmptyTransactions, supportsErrorHandling, supportsErrorHandlingOnBatchUpdates, supportsFloatRoundingOnUpdate, supportsOptionsInURL, supportsPreparedStatementMetadataRetrieval, supportsRepository, supportsResultSetMetadataRetrievalOnly, supportsSetLong, supportsSetMaxRows, supportsSynonyms, supportsTimeStampToDateConversion, supportsTransactions, supportsViews, useSafePoints, useSchemaNameForTableList |
DB2DatabaseMeta
public DB2DatabaseMeta()
getAccessTypeList
public int[] getAccessTypeList()
- Description copied from interface:
DatabaseInterface
- Get the list of possible access types for a database.
- Specified by:
getAccessTypeList
in interface DatabaseInterface
- Specified by:
getAccessTypeList
in class BaseDatabaseMeta
- Returns:
- the list of possible access types for a database.
getDefaultDatabasePort
public int getDefaultDatabasePort()
- Specified by:
getDefaultDatabasePort
in interface DatabaseInterface
- Overrides:
getDefaultDatabasePort
in class BaseDatabaseMeta
- Returns:
- the default database port number
supportsSetCharacterStream
public boolean supportsSetCharacterStream()
- Description copied from class:
BaseDatabaseMeta
- See if this database supports the setCharacterStream() method on a PreparedStatement.
- Specified by:
supportsSetCharacterStream
in interface DatabaseInterface
- Overrides:
supportsSetCharacterStream
in class BaseDatabaseMeta
- Returns:
- true if we can set a Stream on a field in a PreparedStatement. False if not.
getDriverClass
public String getDriverClass()
- Description copied from interface:
DatabaseInterface
- Obtain the name of the JDBC driver class that we need to use!
- Specified by:
getDriverClass
in interface DatabaseInterface
- Returns:
- the name of the JDBC driver class for the specific database
getURL
public String getURL(String hostname,
String port,
String databaseName)
- Specified by:
getURL
in interface DatabaseInterface
- Parameters:
hostname
- the hostnameport
- the port as a stringdatabaseName
- the database name
- Returns:
- the URL to use for connecting to the database.
supportsSchemas
public boolean supportsSchemas()
- Specified by:
supportsSchemas
in interface DatabaseInterface
- Overrides:
supportsSchemas
in class BaseDatabaseMeta
- Returns:
- true if the database supports schemas, DB2 supports it (v7 and v8 for sure).
getTruncateTableStatement
public String getTruncateTableStatement(String tableName)
- Specified by:
getTruncateTableStatement
in interface DatabaseInterface
- Overrides:
getTruncateTableStatement
in class BaseDatabaseMeta
- Parameters:
tableName
- The table to be truncated.
- Returns:
- The SQL statement to truncate a table: remove all rows from it without a transaction
getAddColumnStatement
public String getAddColumnStatement(String tablename,
ValueMetaInterface v,
String tk,
boolean use_autoinc,
String pk,
boolean semicolon)
- Generates the SQL statement to add a column to the specified table
- Specified by:
getAddColumnStatement
in interface DatabaseInterface
- Parameters:
tablename
- The table to addv
- The column defined as a valuetk
- the name of the technical key fielduse_autoinc
- whether or not this field uses auto incrementpk
- the name of the primary key fieldsemicolon
- whether or not to add a semi-colon behind the statement.
- Returns:
- the SQL statement to add a column to the specified table
getDropColumnStatement
public String getDropColumnStatement(String tablename,
ValueMetaInterface v,
String tk,
boolean use_autoinc,
String pk,
boolean semicolon)
- Generates the SQL statement to drop a column from the specified table
- Specified by:
getDropColumnStatement
in interface DatabaseInterface
- Overrides:
getDropColumnStatement
in class BaseDatabaseMeta
- Parameters:
tablename
- The table to addv
- The column defined as a valuetk
- the name of the technical key fielduse_autoinc
- whether or not this field uses auto incrementpk
- the name of the primary key fieldsemicolon
- whether or not to add a semi-colon behind the statement.
- Returns:
- the SQL statement to drop a column from the specified table
getModifyColumnStatement
public String getModifyColumnStatement(String tablename,
ValueMetaInterface v,
String tk,
boolean use_autoinc,
String pk,
boolean semicolon)
- Generates the SQL statement to modify a column in the specified table
- Specified by:
getModifyColumnStatement
in interface DatabaseInterface
- Parameters:
tablename
- The table to addv
- The column defined as a valuetk
- the name of the technical key fielduse_autoinc
- whether or not this field uses auto incrementpk
- the name of the primary key fieldsemicolon
- whether or not to add a semi-colon behind the statement.
- Returns:
- the SQL statement to modify a column in the specified table
getFieldDefinition
public String getFieldDefinition(ValueMetaInterface v,
String tk,
String pk,
boolean use_autoinc,
boolean add_fieldname,
boolean add_cr)
- Description copied from interface:
DatabaseInterface
- Describe a Value as a field in the database.
- Specified by:
getFieldDefinition
in interface DatabaseInterface
- Parameters:
v
- The value to describetk
- The field that's going to be the technical keypk
- The field that's going to be the primary keyuse_autoinc
- Use autoincrement or notadd_fieldname
- Add the fieldname to the definition or notadd_cr
- Add a cariage return at the end of the definition or not.
- Returns:
- a value described as a field in this database.
getReservedWords
public String[] getReservedWords()
- Specified by:
getReservedWords
in interface DatabaseInterface
- Overrides:
getReservedWords
in class BaseDatabaseMeta
- Returns:
- an array of reserved words for the database type...
getSQLLockTables
public String getSQLLockTables(String[] tableNames)
- Specified by:
getSQLLockTables
in interface DatabaseInterface
- Overrides:
getSQLLockTables
in class BaseDatabaseMeta
- Parameters:
tableNames
- The names of the tables to lock
- Returns:
- The SQL command to lock database tables for write purposes.
null is returned in case locking is not supported on the target database.
null is the default value
getSQLUnlockTables
public String getSQLUnlockTables(String[] tableName)
- Specified by:
getSQLUnlockTables
in interface DatabaseInterface
- Overrides:
getSQLUnlockTables
in class BaseDatabaseMeta
- Parameters:
tableName
- The names of the tables to unlock
- Returns:
- The SQL command to unlock database tables.
null is returned in case locking is not supported on the target database.
null is the default value
getMaxVARCHARLength
public int getMaxVARCHARLength()
- Get the maximum length of a text field (VARCHAR) for this database connection.
If this size is exceeded use a CLOB.
- Specified by:
getMaxVARCHARLength
in interface DatabaseInterface
- Overrides:
getMaxVARCHARLength
in class BaseDatabaseMeta
- Returns:
- The maximum VARCHAR field length for this database type. (mostly identical to getMaxTextFieldLength() - CLOB_LENGTH)
supportsBatchUpdates
public boolean supportsBatchUpdates()
- Specified by:
supportsBatchUpdates
in interface DatabaseInterface
- Overrides:
supportsBatchUpdates
in class BaseDatabaseMeta
- Returns:
- true if the database JDBC driver supports batch updates
For example Interbase doesn't support this!
supportsGetBlob
public boolean supportsGetBlob()
- Specified by:
supportsGetBlob
in interface DatabaseInterface
- Overrides:
supportsGetBlob
in class BaseDatabaseMeta
- Returns:
- false because the DB2 JDBC driver doesn't support getBlob on the resultset. We must use getBytes() to get the data.
getUsedLibraries
public String[] getUsedLibraries()
- Specified by:
getUsedLibraries
in interface DatabaseInterface
- Returns:
- the required libraries (in libext) for this database connection.
supportsSequences
public boolean supportsSequences()
- Specified by:
supportsSequences
in interface DatabaseInterface
- Overrides:
supportsSequences
in class BaseDatabaseMeta
- Returns:
- true if the database supports sequences
getSQLSequenceExists
public String getSQLSequenceExists(String sequenceName)
- Check if a sequence exists.
- Specified by:
getSQLSequenceExists
in interface DatabaseInterface
- Overrides:
getSQLSequenceExists
in class BaseDatabaseMeta
- Parameters:
sequenceName
- The sequence to check
- Returns:
- The SQL to get the name of the sequence back from the databases data dictionary
getSQLCurrentSequenceValue
public String getSQLCurrentSequenceValue(String sequenceName)
- Get the current value of a database sequence
- Specified by:
getSQLCurrentSequenceValue
in interface DatabaseInterface
- Overrides:
getSQLCurrentSequenceValue
in class BaseDatabaseMeta
- Parameters:
sequenceName
- The sequence to check
- Returns:
- The current value of a database sequence
getSQLNextSequenceValue
public String getSQLNextSequenceValue(String sequenceName)
- Get the SQL to get the next value of a sequence. (Oracle only)
- Specified by:
getSQLNextSequenceValue
in interface DatabaseInterface
- Overrides:
getSQLNextSequenceValue
in class BaseDatabaseMeta
- Parameters:
sequenceName
- The sequence name
- Returns:
- the SQL to get the next value of a sequence. (Oracle only)
getExtraOptionIndicator
public String getExtraOptionIndicator()
- Specified by:
getExtraOptionIndicator
in interface DatabaseInterface
- Overrides:
getExtraOptionIndicator
in class BaseDatabaseMeta
- Returns:
- This indicator separates the normal URL from the options. DB2 is special
in the sense that it requires a : instead of the usual ;.
supportsSequenceNoMaxValueOption
public boolean supportsSequenceNoMaxValueOption()
- Specified by:
supportsSequenceNoMaxValueOption
in interface DatabaseInterface
- Overrides:
supportsSequenceNoMaxValueOption
in class BaseDatabaseMeta
- Returns:
- true if the database supports the NOMAXVALUE sequence option.
The default is false, AS/400 and DB2 support this.
requiresCastToVariousForIsNull
public boolean requiresCastToVariousForIsNull()
- Specified by:
requiresCastToVariousForIsNull
in interface DatabaseInterface
- Overrides:
requiresCastToVariousForIsNull
in class BaseDatabaseMeta
- Returns:
- true if the database requires you to cast a parameter to varchar before comparing to null. Only required for DB2 and Vertica
isDisplaySizeTwiceThePrecision
public boolean isDisplaySizeTwiceThePrecision()
- Specified by:
isDisplaySizeTwiceThePrecision
in interface DatabaseInterface
- Overrides:
isDisplaySizeTwiceThePrecision
in class BaseDatabaseMeta
- Returns:
- Handles the special case of DB2 where the display size returned is twice the precision.
In that case, the length is the precision.
supportsNewLinesInSQL
public boolean supportsNewLinesInSQL()
- Specified by:
supportsNewLinesInSQL
in interface DatabaseInterface
- Overrides:
supportsNewLinesInSQL
in class BaseDatabaseMeta
- Returns:
- true if the database supports newlines in a SQL statements.
getSQLInsertAutoIncUnknownDimensionRow
public String getSQLInsertAutoIncUnknownDimensionRow(String schemaTable,
String keyField,
String versionField)
- Get the SQL to insert a new empty unknown record in a dimension.
- Specified by:
getSQLInsertAutoIncUnknownDimensionRow
in interface DatabaseInterface
- Overrides:
getSQLInsertAutoIncUnknownDimensionRow
in class BaseDatabaseMeta
- Parameters:
schemaTable
- the schema-table name to insert intokeyField
- The key fieldversionField
- the version field
- Returns:
- the SQL to insert the unknown record into the SCD.