Package org.pentaho.di.core.database
Class SnowflakeHVDatabaseMeta
java.lang.Object
org.pentaho.di.core.database.BaseDatabaseMeta
org.pentaho.di.core.database.SnowflakeHVDatabaseMeta
- All Implemented Interfaces:
Cloneable
,DatabaseInterface
,DatabaseInterfaceExtended
-
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
-
Method Summary
Modifier and TypeMethodDescriptionint[]
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 tableint
Obtain 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 surrogateKey, String primaryKey, boolean useAutoinc, boolean addFieldName, boolean addCr) Describe a Value as a field in the database.getLimitClause
(int nrRows) getModifyColumnStatement
(String tableName, ValueMetaInterface v, String tk, boolean useAutoinc, String pk, boolean semicolon) Generates the SQL statement to modify a column in the specified tableint
getNotFoundTK
(boolean useAutoinc) Get the not found technical key.String[]
getSchemas
(DatabaseMetaData databaseMetaData, DatabaseMeta dbMeta) getSQLColumnExists
(String columnname, String tablename) getSQLInsertAutoIncUnknownDimensionRow
(String schemaTable, String keyField, String versionField) Get the SQL to insert a new empty unknown record in a dimension.getSQLListOfSchemas
(DatabaseMeta databaseMeta) 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 tablegetSQLTableExists
(String tablename) getTables
(DatabaseMetaData databaseMetaData, DatabaseMeta dbMeta, String schemaPattern, String tableNamePattern, String[] tableTypes) String[]
boolean
Checks whether or not the command setFetchSize() is supported by the JDBC driver...boolean
void
putOptionalOptions
(Map<String, String> extraOptions) 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.boolean
Returns a true of savepoints can be released, false if not.boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
Methods inherited from class org.pentaho.di.core.database.BaseDatabaseMeta
addAttribute, addDefaultOptions, addExtraOption, canTest, checkIndexExists, clone, customizeValueFromSQLType, fullExceptionLog, generateColumnAlias, getAccessType, getAttribute, getAttributes, getBackwardsCompatibleSchemaTableCombination, getBackwardsCompatibleTable, getConnectionPoolingProperties, getConnectSQL, getCreateTableStatement, getDatabaseFactoryName, getDatabaseName, getDatabasePortNumberString, getDataTablespace, getDataTablespaceDDL, getDisplayName, getDropTableIfExistsStatement, getEndQuote, getExtraOptions, getExtraOptionValueSeparator, getFieldnameProtector, getFunctionAverage, getFunctionCount, getFunctionMaximum, getFunctionMinimum, getFunctionSum, getHostname, getIndexTablespace, getIndexTablespaceDDL, getInitialPoolSize, getInitialPoolSizeString, getMaxColumnsInIndex, getMaximumPoolSize, getMaximumPoolSizeString, getMaxTextFieldLength, getMaxVARCHARLength, getName, getNamedCluster, getNextBatchId, getNextBatchIdUsingAutoIncSQL, getNextBatchIdUsingLockTables, getNextBatchIdUsingSequence, getObjectId, getPartitioningInformation, getPassword, getPluginId, getPluginName, getPreferredSchemaName, getSafeFieldname, getSchemaTableCombination, getSelectCountStatement, getSequenceNoMaxValueOption, getServername, getSQLCurrentSequenceValue, getSQLListOfProcedures, getSQLListOfSequences, getSQLLockTables, getSQLNextSequenceValue, getSqlScriptStatements, getSQLSequenceExists, getSQLUnlockTables, getSQLValue, getStartQuote, getSynonymTypes, getTablespaceDDL, getTableTypes, getTruncateTableStatement, getUsername, getValueFromResultSet, getViewTypes, getXulOverlayFile, isChanged, isDefaultingToUppercase, isDisplaySizeTwiceThePrecision, isExplorable, isForcingIdentifiersToLowerCase, isForcingIdentifiersToUpperCase, isMySQLVariant, isPartitioned, isQuoteAllFields, isStreamingResults, isSystemTable, isUsingConnectionPool, isUsingDoubleDecimalAsSchemaTableSeparator, needsPlaceHolder, needsToLockAllTables, onlySpaces, parseStatements, preserveReservedCase, quoteReservedWords, 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, supportsCatalogs, supportsEmptyTransactions, supportsErrorHandling, supportsFloatRoundingOnUpdate, supportsGetBlob, supportsNewLinesInSQL, supportsOptionsInURL, supportsPreparedStatementMetadataRetrieval, supportsResultSetMetadataRetrievalOnly, supportsSchemas, supportsSequenceNoMaxValueOption, supportsSequences, supportsSetCharacterStream, supportsSetLong, supportsSetMaxRows, supportsTimestampDataType, useSafePoints, useSchemaNameForTableList
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.pentaho.di.core.database.DatabaseInterface
addAttribute, addDefaultOptions, addExtraOption, checkIndexExists, clone, createSqlScriptParser, customizeValueFromSQLType, generateColumnAlias, getAccessType, getAttribute, getAttributes, getConnectionPoolingProperties, getConnectSQL, getCreateTableStatement, getDatabaseFactoryName, getDatabaseName, getDatabasePortNumberString, getDataTablespace, getDataTablespaceDDL, getDisplayName, getEndQuote, getExtraOptions, getExtraOptionValueSeparator, getFunctionAverage, getFunctionCount, getFunctionMaximum, getFunctionMinimum, getFunctionSum, getHostname, getIndexTablespace, getIndexTablespaceDDL, getInitialPoolSize, getInitialPoolSizeString, getLegacyColumnName, getMaxColumnsInIndex, getMaximumPoolSize, getMaximumPoolSizeString, getMaxTextFieldLength, getMaxVARCHARLength, getName, getNamedCluster, getNamedClusterList, getNextBatchId, getObjectId, getPartitioningInformation, getPassword, getPluginId, getPluginName, getPreferredSchemaName, getSafeFieldname, getSchemaTableCombination, getSelectCountStatement, getSequenceNoMaxValueOption, getServername, getSQLCurrentSequenceValue, getSQLListOfProcedures, getSQLListOfSequences, getSQLLockTables, getSQLNextSequenceValue, getSqlScriptStatements, getSQLSequenceExists, getSQLUnlockTables, getSQLValue, getStartQuote, getSynonymTypes, getTableTypes, getTruncateTableStatement, getUnsupportedTableOutputMessage, getUsername, getValueFromResultSet, getViewTypes, getXulOverlayFile, isChanged, isDefaultingToUppercase, isDisplaySizeTwiceThePrecision, isExplorable, isForcingIdentifiersToLowerCase, isForcingIdentifiersToUpperCase, isMySQLVariant, isPartitioned, isQuoteAllFields, isStreamingResults, isSystemTable, isUsingConnectionPool, isUsingDoubleDecimalAsSchemaTableSeparator, needsPlaceHolder, needsToLockAllTables, parseStatements, preserveReservedCase, quoteReservedWords, 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, supportsCatalogs, supportsEmptyTransactions, supportsErrorHandling, supportsFloatRoundingOnUpdate, supportsGetBlob, supportsNewLinesInSQL, supportsOptionsInURL, supportsPreparedStatementMetadataRetrieval, supportsResultSetMetadataRetrievalOnly, supportsSchemas, supportsSequenceNoMaxValueOption, supportsSequences, supportsSetCharacterStream, supportsSetLong, supportsSetMaxRows, supportsStandardTableOutput, supportsTimestampDataType, useSafePoints, useSchemaNameForTableList
-
Field Details
-
WAREHOUSE
- See Also:
-
-
Constructor Details
-
SnowflakeHVDatabaseMeta
public SnowflakeHVDatabaseMeta()
-
-
Method Details
-
getAccessTypeList
public int[] getAccessTypeList()Description copied from interface:DatabaseInterface
Get the list of possible access types for a database.- Specified by:
getAccessTypeList
in interfaceDatabaseInterface
- Specified by:
getAccessTypeList
in classBaseDatabaseMeta
- Returns:
- the list of possible access types for a database.
-
getDefaultDatabasePort
public int getDefaultDatabasePort()- Specified by:
getDefaultDatabasePort
in interfaceDatabaseInterface
- Overrides:
getDefaultDatabasePort
in classBaseDatabaseMeta
- Returns:
- the default database port number
-
getDefaultOptions
- Specified by:
getDefaultOptions
in interfaceDatabaseInterface
- Overrides:
getDefaultOptions
in classBaseDatabaseMeta
- Returns:
- default extra Options
-
isFetchSizeSupported
public boolean isFetchSizeSupported()Description copied from class:BaseDatabaseMeta
Checks whether or not the command setFetchSize() is supported by the JDBC driver...- Specified by:
isFetchSizeSupported
in interfaceDatabaseInterface
- Overrides:
isFetchSizeSupported
in classBaseDatabaseMeta
- Returns:
- true is setFetchSize() is supported!
-
getDriverClass
Description copied from interface:DatabaseInterface
Obtain the name of the JDBC driver class that we need to use!- Specified by:
getDriverClass
in interfaceDatabaseInterface
- Returns:
- the name of the JDBC driver class for the specific database
-
getURL
- Specified by:
getURL
in interfaceDatabaseInterface
- Parameters:
hostname
- the hostnameport
- the port as a stringdatabaseName
- the database name- Returns:
- the URL to use for connecting to the database.
-
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:
getAddColumnStatement
in 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
-
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:
getDropColumnStatement
in interfaceDatabaseInterface
- Overrides:
getDropColumnStatement
in 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
-
getSQLListOfSchemas
- Specified by:
getSQLListOfSchemas
in interfaceDatabaseInterface
- Returns:
- the SQL to retrieve the list of schemas
-
getSQLListOfSchemas
- Specified by:
getSQLListOfSchemas
in interfaceDatabaseInterface
- Overrides:
getSQLListOfSchemas
in classBaseDatabaseMeta
- Returns:
- the SQL to retrieve the list of schemas or null if the JDBC metadata needs to be used.
-
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:
getModifyColumnStatement
in 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
-
getFieldDefinition
public String getFieldDefinition(ValueMetaInterface v, String surrogateKey, String primaryKey, boolean useAutoinc, boolean addFieldName, boolean addCr) Description copied from interface:DatabaseInterface
Describe a Value as a field in the database.- Specified by:
getFieldDefinition
in interfaceDatabaseInterface
- Parameters:
v
- The value to describesurrogateKey
- The field that's going to be the technical keyprimaryKey
- 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.
-
getUsedLibraries
- Specified by:
getUsedLibraries
in interfaceDatabaseInterface
- Returns:
- the required libraries (in lib) for this database connection.
-
getLimitClause
- Specified by:
getLimitClause
in interfaceDatabaseInterface
- Overrides:
getLimitClause
in classBaseDatabaseMeta
- Parameters:
nrRows
- The number of rows to which we want to limit the result of the query.- Returns:
- the clause after a select statement to limit the number of rows
-
getSQLQueryFields
Returns the minimal SQL to launch in order to determine the layout of the resultset for a given database table- Specified by:
getSQLQueryFields
in interfaceDatabaseInterface
- Overrides:
getSQLQueryFields
in classBaseDatabaseMeta
- Parameters:
tableName
- The name of the table to determine the layout for- Returns:
- The SQL to launch.
-
getSQLTableExists
- Specified by:
getSQLTableExists
in interfaceDatabaseInterface
- Overrides:
getSQLTableExists
in 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:
getSQLColumnExists
in interfaceDatabaseInterface
- Overrides:
getSQLColumnExists
in 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
-
getNotFoundTK
public int getNotFoundTK(boolean useAutoinc) Description copied from interface:DatabaseInterface
Get the not found technical key.- Specified by:
getNotFoundTK
in interfaceDatabaseInterface
- Overrides:
getNotFoundTK
in classBaseDatabaseMeta
- Parameters:
useAutoinc
- Whether or not we want to use an auto increment field- Returns:
- the lowest possible technical key to be used as the NOT FOUND row in a slowly changing dimension.
- See Also:
-
getExtraOptionSeparator
- Specified by:
getExtraOptionSeparator
in interfaceDatabaseInterface
- Overrides:
getExtraOptionSeparator
in classBaseDatabaseMeta
- Returns:
- The extra option separator in database URL for this platform (usually this is semicolon ; )
-
getExtraOptionIndicator
- Specified by:
getExtraOptionIndicator
in interfaceDatabaseInterface
- Overrides:
getExtraOptionIndicator
in classBaseDatabaseMeta
- Returns:
- This indicator separates the normal URL from the options
-
supportsTransactions
public boolean supportsTransactions()- Specified by:
supportsTransactions
in interfaceDatabaseInterface
- Overrides:
supportsTransactions
in classBaseDatabaseMeta
- Returns:
- true if the database supports transactions.
-
supportsTimeStampToDateConversion
public boolean supportsTimeStampToDateConversion()- Specified by:
supportsTimeStampToDateConversion
in interfaceDatabaseInterface
- Overrides:
supportsTimeStampToDateConversion
in classBaseDatabaseMeta
- Returns:
- true if the database supports timestamp to date conversion. For example Interbase doesn't support this!
-
supportsBitmapIndex
public boolean supportsBitmapIndex()- Specified by:
supportsBitmapIndex
in interfaceDatabaseInterface
- Overrides:
supportsBitmapIndex
in classBaseDatabaseMeta
- Returns:
- true if the database supports bitmap indexes
-
supportsViews
public boolean supportsViews()- Specified by:
supportsViews
in interfaceDatabaseInterface
- Overrides:
supportsViews
in classBaseDatabaseMeta
- Returns:
- true if the database supports views
-
supportsSynonyms
public boolean supportsSynonyms()- Specified by:
supportsSynonyms
in interfaceDatabaseInterface
- Overrides:
supportsSynonyms
in classBaseDatabaseMeta
- Returns:
- true if the database supports synonyms
-
getReservedWords
- Specified by:
getReservedWords
in interfaceDatabaseInterface
- Overrides:
getReservedWords
in classBaseDatabaseMeta
- Returns:
- an array of reserved words for the database type...
-
getExtraOptionsHelpText
- Specified by:
getExtraOptionsHelpText
in interfaceDatabaseInterface
- Overrides:
getExtraOptionsHelpText
in classBaseDatabaseMeta
- Returns:
- extra help text on the supported options on the selected database platform.
-
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 interfaceDatabaseInterface
- Overrides:
getSQLInsertAutoIncUnknownDimensionRow
in 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.
-
supportsIndexes
public boolean supportsIndexes()- Specified by:
supportsIndexes
in interfaceDatabaseInterface
- Returns:
- true if the database supports indexes at all. (Exasol and Snowflake do not)
-
quoteSQLString
Description copied from interface:DatabaseInterface
Adds quotes around the string according to the database dialect and also escapes special characters like CR, LF and the quote character itself.- Specified by:
quoteSQLString
in interfaceDatabaseInterface
- Overrides:
quoteSQLString
in classBaseDatabaseMeta
- Parameters:
string
- The String to escape- Returns:
- A string that is properly quoted for use in a SQL statement (insert, update, delete, etc)
-
releaseSavepoint
public boolean releaseSavepoint()Description copied from class:BaseDatabaseMeta
Returns a true of savepoints can be released, false if not.- Specified by:
releaseSavepoint
in interfaceDatabaseInterface
- Overrides:
releaseSavepoint
in classBaseDatabaseMeta
- Returns:
-
supportsErrorHandlingOnBatchUpdates
public boolean supportsErrorHandlingOnBatchUpdates()- Specified by:
supportsErrorHandlingOnBatchUpdates
in interfaceDatabaseInterface
- Overrides:
supportsErrorHandlingOnBatchUpdates
in classBaseDatabaseMeta
- Returns:
- true if the database supports error handling (recovery of failure) while doing batch updates.
-
isRequiringTransactionsOnQueries
public boolean isRequiringTransactionsOnQueries()- Specified by:
isRequiringTransactionsOnQueries
in interfaceDatabaseInterface
- Overrides:
isRequiringTransactionsOnQueries
in classBaseDatabaseMeta
- Returns:
- true if this database needs a transaction to perform a query (auto-commit turned off).
-
supportsRepository
public boolean supportsRepository()- Specified by:
supportsRepository
in interfaceDatabaseInterface
- Overrides:
supportsRepository
in classBaseDatabaseMeta
- Returns:
- true if Kettle can create a repository on this type of database.
-
putOptionalOptions
- Specified by:
putOptionalOptions
in interfaceDatabaseInterface
-
getSchemas
public ResultSet getSchemas(DatabaseMetaData databaseMetaData, DatabaseMeta dbMeta) throws SQLException - Specified by:
getSchemas
in interfaceDatabaseInterface
- Throws:
SQLException
-
getTables
public ResultSet getTables(DatabaseMetaData databaseMetaData, DatabaseMeta dbMeta, String schemaPattern, String tableNamePattern, String[] tableTypes) throws SQLException - Specified by:
getTables
in interfaceDatabaseInterface
- Throws:
SQLException
-