Package org.pentaho.di.core.database
Class MSSQLServerDatabaseMeta
java.lang.Object
org.pentaho.di.core.database.BaseDatabaseMeta
org.pentaho.di.core.database.MSSQLServerDatabaseMeta
- All Implemented Interfaces:
Cloneable,DatabaseInterface,DatabaseInterfaceExtended
- Direct Known Subclasses:
AzureSqlDataBaseMeta,MSSQLServerNativeDatabaseMeta
Contains MySQL specific information through static final members
- Since:
- 11-mrt-2005
- Author:
- Matt
-
Field Summary
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_PRESERVE_RESERVED_WORD_CASE, ATTRIBUTE_QUOTE_ALL_FIELDS, ATTRIBUTE_SQL_CONNECT, ATTRIBUTE_SUPPORTS_BOOLEAN_DATA_TYPE, ATTRIBUTE_SUPPORTS_TIMESTAMP_DATA_TYPE, ATTRIBUTE_USE_POOLING, ATTRIBUTE_USE_RESULT_STREAMING, AUTOINCREMENT_SQL_FOR_BATCH_ID, NAMED_CLUSTER_ID, poolingParameters, releaseSavepoint, SELECT_COUNT_STATEMENT, SEQUENCE_FOR_BATCH_ID -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleancheckIndexExists(Database database, String schemaName, String tableName, String[] idxFields) Verifies on the specified database connection if an index exists on the fields with the specified name.int[]Get the list of possible access types for a database.getAddColumnStatement(String tablename, ValueMetaInterface v, String tk, boolean useAutoinc, String pk, boolean semicolon) Generates the SQL statement to add a column to the specified tableintObtain the name of the JDBC driver class that we need to use!getDropColumnStatement(String tablename, ValueMetaInterface v, String tk, boolean useAutoinc, String pk, boolean semicolon) Generates the SQL statement to drop a column from the specified tablegetFieldDefinition(ValueMetaInterface v, String tk, String pk, boolean useAutoinc, boolean addFieldName, boolean addCr) Describe a Value as a field in the database.intGet the maximum length of a text field (VARCHAR) for this database connection.getModifyColumnStatement(String tablename, ValueMetaInterface v, String tk, boolean useAutoinc, String pk, boolean semicolon) Generates the SQL statement to modify a column in the specified tablegetNextBatchIdUsingLockTables(DatabaseMeta dbm, Database ldb, String schemaName, String tableName, String fieldName) String[]getSchemaTableCombination(String schemaName, String tablePart) Get the schema-table combination to query the right table.getSQLColumnExists(String columnname, String tablename) getSQLCurrentSequenceValue(String sequenceName) Get the current value of a database sequencegetSQLInsertAutoIncUnknownDimensionRow(String schemaTable, String keyField, String versionField) Get the SQL to insert a new empty unknown record in a dimension.getSQLListOfProcedures(String schemaName) getSQLLockTables(String[] tableNames) getSQLNextSequenceValue(String sequenceName) Get the SQL to get the next value of a sequence.getSQLQueryColumnFields(String columnname, String tableName) getSQLQueryFields(String tableName) Returns the minimal SQL to launch in order to determine the layout of the resultset for a given database tablegetSQLSequenceExists(String sequenceName) Check if a sequence exists.getSQLTableExists(String tablename) String[]quoteSQLString(String string) Adds quotes around the string according to the database dialect and also escapes special characters like CR, LF and the quote character itself.booleanbooleanbooleanbooleanbooleanbooleanbooleanbooleanMethods inherited from class org.pentaho.di.core.database.BaseDatabaseMeta
addAttribute, addDefaultOptions, addExtraOption, canTest, clone, customizeValueFromSQLType, fullExceptionLog, generateColumnAlias, getAccessType, getAttribute, getAttributes, getBackwardsCompatibleSchemaTableCombination, getBackwardsCompatibleTable, getConnectionPoolingProperties, getConnectSQL, getCreateTableStatement, getDatabaseFactoryName, getDatabaseName, getDatabasePortNumberString, getDataTablespace, getDataTablespaceDDL, getDefaultOptions, getDisplayName, getDropTableIfExistsStatement, getEndQuote, getExtraOptionIndicator, getExtraOptions, getExtraOptionSeparator, getExtraOptionValueSeparator, getFieldnameProtector, getFunctionAverage, getFunctionCount, getFunctionMaximum, getFunctionMinimum, getFunctionSum, getHostname, getIndexTablespace, getIndexTablespaceDDL, getInitialPoolSize, getInitialPoolSizeString, getLimitClause, getMaxColumnsInIndex, getMaximumPoolSize, getMaximumPoolSizeString, getMaxTextFieldLength, getName, getNamedCluster, getNextBatchId, getNextBatchIdUsingAutoIncSQL, getNextBatchIdUsingSequence, getNotFoundTK, getObjectId, getPartitioningInformation, getPassword, getPluginId, getPluginName, getPreferredSchemaName, getSafeFieldname, getSelectCountStatement, getSequenceNoMaxValueOption, getServername, getSQLListOfProcedures, getSqlScriptStatements, getSQLUnlockTables, getSQLValue, getStartQuote, getSynonymTypes, getTablespaceDDL, getTableTypes, getTruncateTableStatement, getUsername, getValueFromResultSet, getViewTypes, getXulOverlayFile, isChanged, isDefaultingToUppercase, isDisplaySizeTwiceThePrecision, isExplorable, isFetchSizeSupported, isForcingIdentifiersToLowerCase, isForcingIdentifiersToUpperCase, isMySQLVariant, isPartitioned, isQuoteAllFields, isRequiringTransactionsOnQueries, isStreamingResults, isSystemTable, isUsingConnectionPool, isUsingDoubleDecimalAsSchemaTableSeparator, needsPlaceHolder, needsToLockAllTables, onlySpaces, parseStatements, preserveReservedCase, quoteReservedWords, releaseSavepoint, requiresCastToVariousForIsNull, requiresCreateTablePrimaryKeyAppend, requiresName, setAccessType, setAttributes, setChanged, setConnectionPoolingProperties, setConnectSQL, setDatabaseName, setDatabasePortNumberString, setDataTablespace, setDisplayName, setForcingIdentifiersToLowerCase, setForcingIdentifiersToUpperCase, setHostname, setIndexTablespace, setInitialPoolSize, setInitialPoolSizeString, setMaximumPoolSize, setMaximumPoolSizeString, setName, setNamedCluster, setObjectId, setPartitioned, setPartitioningInformation, setPassword, setPluginId, setPluginName, setPreferredSchemaName, setPreserveReservedCase, setQuoteAllFields, setServername, setStreamingResults, setSupportsBooleanDataType, setSupportsTimestampDataType, setUsername, setUsingConnectionPool, setUsingDoubleDecimalAsSchemaTableSeparator, supportsAutoGeneratedKeys, supportsAutoInc, supportsBatchUpdates, supportsBooleanDataType, supportsEmptyTransactions, supportsErrorHandling, supportsFloatRoundingOnUpdate, supportsGetBlob, supportsNewLinesInSQL, supportsOptionsInURL, supportsPreparedStatementMetadataRetrieval, supportsRepository, supportsResultSetMetadataRetrievalOnly, supportsSetCharacterStream, supportsSetLong, supportsSetMaxRows, supportsTimestampDataType, supportsTimeStampToDateConversion, supportsTransactions, supportsViews, useSchemaNameForTableListMethods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.pentaho.di.core.database.DatabaseInterface
addAttribute, addDefaultOptions, addExtraOption, clone, createSqlScriptParser, customizeValueFromSQLType, generateColumnAlias, getAccessType, getAttribute, getAttributes, getConnectionPoolingProperties, getConnectSQL, getCreateTableStatement, getDatabaseFactoryName, getDatabaseName, getDatabasePortNumberString, getDataTablespace, getDataTablespaceDDL, getDefaultOptions, getDisplayName, getEndQuote, getExtraOptionIndicator, getExtraOptions, getExtraOptionSeparator, getExtraOptionValueSeparator, getFunctionAverage, getFunctionCount, getFunctionMaximum, getFunctionMinimum, getFunctionSum, getHostname, getIndexTablespace, getIndexTablespaceDDL, getInitialPoolSize, getInitialPoolSizeString, getLegacyColumnName, getLimitClause, getMaxColumnsInIndex, getMaximumPoolSize, getMaximumPoolSizeString, getMaxTextFieldLength, getName, getNamedCluster, getNamedClusterList, getNextBatchId, getNotFoundTK, getObjectId, getPartitioningInformation, getPassword, getPluginId, getPluginName, getPreferredSchemaName, getSafeFieldname, getSchemas, getSelectCountStatement, getSequenceNoMaxValueOption, getServername, getSQLListOfProcedures, getSQLListOfSchemas, getSqlScriptStatements, getSQLUnlockTables, getSQLValue, getStartQuote, getSynonymTypes, getTables, getTableTypes, getTruncateTableStatement, getUnsupportedTableOutputMessage, getUsername, getValueFromResultSet, getViewTypes, getXulOverlayFile, isChanged, isDefaultingToUppercase, isDisplaySizeTwiceThePrecision, isExplorable, isFetchSizeSupported, isForcingIdentifiersToLowerCase, isForcingIdentifiersToUpperCase, isMySQLVariant, isPartitioned, isQuoteAllFields, isRequiringTransactionsOnQueries, isStreamingResults, isSystemTable, isUsingConnectionPool, isUsingDoubleDecimalAsSchemaTableSeparator, needsPlaceHolder, needsToLockAllTables, parseStatements, preserveReservedCase, putOptionalOptions, quoteReservedWords, releaseSavepoint, requiresCastToVariousForIsNull, requiresCreateTablePrimaryKeyAppend, setAccessType, setAttributes, setChanged, setConnectionPoolingProperties, setConnectSQL, setDatabaseName, setDatabasePortNumberString, setDataTablespace, setDisplayName, setForcingIdentifiersToLowerCase, setForcingIdentifiersToUpperCase, setHostname, setIndexTablespace, setInitialPoolSize, setInitialPoolSizeString, setMaximumPoolSize, setMaximumPoolSizeString, setName, setNamedCluster, setObjectId, setPartitioned, setPartitioningInformation, setPassword, setPluginId, setPluginName, setPreferredSchemaName, setPreserveReservedCase, setQuoteAllFields, setServername, setStreamingResults, setSupportsBooleanDataType, setSupportsTimestampDataType, setUsername, setUsingConnectionPool, setUsingDoubleDecimalAsSchemaTableSeparator, supportsAutoGeneratedKeys, supportsAutoInc, supportsBatchUpdates, supportsBooleanDataType, supportsEmptyTransactions, supportsErrorHandling, supportsFloatRoundingOnUpdate, supportsGetBlob, supportsIndexes, supportsNewLinesInSQL, supportsOptionsInURL, supportsPreparedStatementMetadataRetrieval, supportsRepository, supportsResultSetMetadataRetrievalOnly, supportsSetCharacterStream, supportsSetLong, supportsSetMaxRows, supportsStandardTableOutput, supportsTimestampDataType, supportsTimeStampToDateConversion, supportsTransactions, supportsViews, useSchemaNameForTableList
-
Constructor Details
-
MSSQLServerDatabaseMeta
public MSSQLServerDatabaseMeta()
-
-
Method Details
-
supportsCatalogs
public boolean supportsCatalogs()- Specified by:
supportsCatalogsin interfaceDatabaseInterface- Overrides:
supportsCatalogsin classBaseDatabaseMeta- Returns:
- true if the database supports catalogs
-
getAccessTypeList
public int[] getAccessTypeList()Description copied from interface:DatabaseInterfaceGet the list of possible access types for a database.- Specified by:
getAccessTypeListin interfaceDatabaseInterface- Specified by:
getAccessTypeListin classBaseDatabaseMeta- Returns:
- the list of possible access types for a database.
-
getDefaultDatabasePort
public int getDefaultDatabasePort()- Specified by:
getDefaultDatabasePortin interfaceDatabaseInterface- Overrides:
getDefaultDatabasePortin classBaseDatabaseMeta- Returns:
- the default database port number
-
getDriverClass
Description copied from interface:DatabaseInterfaceObtain the name of the JDBC driver class that we need to use!- Specified by:
getDriverClassin interfaceDatabaseInterface- Returns:
- the name of the JDBC driver class for the specific database
-
getURL
- Specified by:
getURLin interfaceDatabaseInterface- Parameters:
hostname- the hostnameport- the port as a stringdatabaseName- the database name- Returns:
- the URL to use for connecting to the database.
-
getSchemaTableCombination
Description copied from class:BaseDatabaseMetaGet the schema-table combination to query the right table. Usually that is SCHEMA.TABLENAME, however there are exceptions to this rule...- Specified by:
getSchemaTableCombinationin interfaceDatabaseInterface- Overrides:
getSchemaTableCombinationin classBaseDatabaseMeta- Parameters:
schemaName- The schema nametablePart- The tablename- Returns:
- the schema-table combination to query the right table.
-
supportsBitmapIndex
public boolean supportsBitmapIndex()- Specified by:
supportsBitmapIndexin interfaceDatabaseInterface- Overrides:
supportsBitmapIndexin classBaseDatabaseMeta- Returns:
- true if the database supports bitmap indexes
-
supportsSynonyms
public boolean supportsSynonyms()- Specified by:
supportsSynonymsin interfaceDatabaseInterface- Overrides:
supportsSynonymsin classBaseDatabaseMeta- Returns:
- true if the database supports synonyms
-
getSQLQueryFields
Description copied from class:BaseDatabaseMetaReturns the minimal SQL to launch in order to determine the layout of the resultset for a given database table- Specified by:
getSQLQueryFieldsin interfaceDatabaseInterface- Overrides:
getSQLQueryFieldsin classBaseDatabaseMeta- Parameters:
tableName- The name of the table to determine the layout for- Returns:
- The SQL to launch.
-
getSQLTableExists
- Specified by:
getSQLTableExistsin interfaceDatabaseInterface- Overrides:
getSQLTableExistsin classBaseDatabaseMeta- Parameters:
tablename- The table to verify the existance for- Returns:
- The SQL to execute to verify if the given table exists. If an Exception is thrown for this SQL, we don't have the table.
-
getSQLColumnExists
- Specified by:
getSQLColumnExistsin interfaceDatabaseInterface- Overrides:
getSQLColumnExistsin classBaseDatabaseMeta- Parameters:
columnname- The column to verify the existance fortablename- The table to verify the existance for- Returns:
- The SQL to execute to verify if the given table exists. If an Exception is thrown for this SQL, we don't have the column.
-
getSQLQueryColumnFields
-
getSQLLockTables
- Specified by:
getSQLLockTablesin interfaceDatabaseInterface- Overrides:
getSQLLockTablesin classBaseDatabaseMeta- 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
-
getAddColumnStatement
public String getAddColumnStatement(String tablename, ValueMetaInterface v, String tk, boolean useAutoinc, String pk, boolean semicolon) Generates the SQL statement to add a column to the specified table- Specified by:
getAddColumnStatementin interfaceDatabaseInterface- Parameters:
tablename- The table to addv- The column defined as a valuetk- the name of the technical key fielduseAutoinc- 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
-
getModifyColumnStatement
public String getModifyColumnStatement(String tablename, ValueMetaInterface v, String tk, boolean useAutoinc, String pk, boolean semicolon) Generates the SQL statement to modify a column in the specified table- Specified by:
getModifyColumnStatementin interfaceDatabaseInterface- Parameters:
tablename- The table to addv- The column defined as a valuetk- the name of the technical key fielduseAutoinc- 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
-
getDropColumnStatement
public String getDropColumnStatement(String tablename, ValueMetaInterface v, String tk, boolean useAutoinc, String pk, boolean semicolon) Generates the SQL statement to drop a column from the specified table- Specified by:
getDropColumnStatementin interfaceDatabaseInterface- Overrides:
getDropColumnStatementin classBaseDatabaseMeta- Parameters:
tablename- The table to addv- The column defined as a valuetk- the name of the technical key fielduseAutoinc- 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
-
getFieldDefinition
public String getFieldDefinition(ValueMetaInterface v, String tk, String pk, boolean useAutoinc, boolean addFieldName, boolean addCr) Description copied from interface:DatabaseInterfaceDescribe a Value as a field in the database.- Specified by:
getFieldDefinitionin interfaceDatabaseInterface- 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 keyuseAutoinc- Use autoincrement or notaddFieldName- Add the fieldname to the definition or notaddCr- Add a cariage return at the end of the definition or not.- Returns:
- a value described as a field in this database.
-
getSQLListOfProcedures
- Parameters:
the- schema name to search in or null if you want to search the whole DB- Returns:
- The SQL on this database to get a list of stored procedures.
-
getReservedWords
- Specified by:
getReservedWordsin interfaceDatabaseInterface- Overrides:
getReservedWordsin classBaseDatabaseMeta- Returns:
- an array of reserved words for the database type...
-
getUsedLibraries
- Specified by:
getUsedLibrariesin interfaceDatabaseInterface- Returns:
- the required libraries (in lib) for this database connection.
-
getExtraOptionsHelpText
- Specified by:
getExtraOptionsHelpTextin interfaceDatabaseInterface- Overrides:
getExtraOptionsHelpTextin classBaseDatabaseMeta- Returns:
- extra help text on the supported options on the selected database platform.
-
checkIndexExists
public boolean checkIndexExists(Database database, String schemaName, String tableName, String[] idxFields) throws KettleDatabaseException Verifies on the specified database connection if an index exists on the fields with the specified name.- Specified by:
checkIndexExistsin interfaceDatabaseInterface- Overrides:
checkIndexExistsin classBaseDatabaseMeta- Parameters:
database- a connected databaseschemaName-tableName-idxFields-- Returns:
- true if the index exists, false if it doesn't.
- Throws:
KettleDatabaseException
-
getSQLListOfSchemas
- Specified by:
getSQLListOfSchemasin interfaceDatabaseInterface- Overrides:
getSQLListOfSchemasin classBaseDatabaseMeta- Returns:
- the SQL to retrieve the list of schemas or null if the JDBC metadata needs to be used.
-
supportsSchemas
public boolean supportsSchemas()- Specified by:
supportsSchemasin interfaceDatabaseInterface- Overrides:
supportsSchemasin classBaseDatabaseMeta- Returns:
- true if the database supports schemas
-
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:
getSQLInsertAutoIncUnknownDimensionRowin interfaceDatabaseInterface- Overrides:
getSQLInsertAutoIncUnknownDimensionRowin classBaseDatabaseMeta- 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.
-
getSQLNextSequenceValue
Description copied from class:BaseDatabaseMetaGet the SQL to get the next value of a sequence. (Oracle/PGSQL only)- Specified by:
getSQLNextSequenceValuein interfaceDatabaseInterface- Overrides:
getSQLNextSequenceValuein classBaseDatabaseMeta- Parameters:
sequenceName- The sequence name- Returns:
- the SQL to get the next value of a sequence. (Oracle/PGSQL only)
-
getSQLCurrentSequenceValue
Description copied from class:BaseDatabaseMetaGet the current value of a database sequence- Specified by:
getSQLCurrentSequenceValuein interfaceDatabaseInterface- Overrides:
getSQLCurrentSequenceValuein classBaseDatabaseMeta- Parameters:
sequenceName- The sequence to check- Returns:
- The current value of a database sequence
-
getSQLSequenceExists
Description copied from class:BaseDatabaseMetaCheck if a sequence exists.- Specified by:
getSQLSequenceExistsin interfaceDatabaseInterface- Overrides:
getSQLSequenceExistsin classBaseDatabaseMeta- Parameters:
sequenceName- The sequence to check- Returns:
- The SQL to get the name of the sequence back from the databases data dictionary
-
supportsSequences
public boolean supportsSequences()- Specified by:
supportsSequencesin interfaceDatabaseInterface- Overrides:
supportsSequencesin classBaseDatabaseMeta- Returns:
- true if the database supports sequences
-
supportsSequenceNoMaxValueOption
public boolean supportsSequenceNoMaxValueOption()- Specified by:
supportsSequenceNoMaxValueOptionin interfaceDatabaseInterface- Overrides:
supportsSequenceNoMaxValueOptionin classBaseDatabaseMeta- Returns:
- true if the database supports the NOMAXVALUE sequence option. The default is false, AS/400 and DB2 support this.
-
getSQLListOfSequences
- Specified by:
getSQLListOfSequencesin interfaceDatabaseInterface- Overrides:
getSQLListOfSequencesin classBaseDatabaseMeta- Returns:
- The SQL on this database to get a list of sequences.
-
quoteSQLString
Description copied from interface:DatabaseInterfaceAdds quotes around the string according to the database dialect and also escapes special characters like CR, LF and the quote character itself.- Specified by:
quoteSQLStringin interfaceDatabaseInterface- Overrides:
quoteSQLStringin classBaseDatabaseMeta- Parameters:
string-- Returns:
- A string that is properly quoted for use in an Oracle SQL statement (insert, update, delete, etc)
-
getNextBatchIdUsingLockTables
public Long getNextBatchIdUsingLockTables(DatabaseMeta dbm, Database ldb, String schemaName, String tableName, String fieldName) throws KettleDatabaseException - Overrides:
getNextBatchIdUsingLockTablesin classBaseDatabaseMeta- Throws:
KettleDatabaseException
-
useSafePoints
public boolean useSafePoints()- Specified by:
useSafePointsin interfaceDatabaseInterface- Overrides:
useSafePointsin classBaseDatabaseMeta- Returns:
- true if the database supports the use of safe-points and if it is appropriate to ever use it (default to false)
-
supportsErrorHandlingOnBatchUpdates
public boolean supportsErrorHandlingOnBatchUpdates()- Specified by:
supportsErrorHandlingOnBatchUpdatesin interfaceDatabaseInterface- Overrides:
supportsErrorHandlingOnBatchUpdatesin classBaseDatabaseMeta- Returns:
- true if the database supports error handling (recovery of failure) while doing batch updates.
-
getMaxVARCHARLength
public int getMaxVARCHARLength()Description copied from class:BaseDatabaseMetaGet the maximum length of a text field (VARCHAR) for this database connection. If this size is exceeded use a CLOB.- Specified by:
getMaxVARCHARLengthin interfaceDatabaseInterface- Overrides:
getMaxVARCHARLengthin classBaseDatabaseMeta- Returns:
- The maximum VARCHAR field length for this database type. (mostly identical to getMaxTextFieldLength() - CLOB_LENGTH)
-