Package liquibase.database.core
Class HsqlDatabase
- java.lang.Object
-
- liquibase.database.AbstractJdbcDatabase
-
- liquibase.database.core.HsqlDatabase
-
- All Implemented Interfaces:
AutoCloseable,Database,PrioritizedService
public class HsqlDatabase extends AbstractJdbcDatabase
-
-
Field Summary
-
Fields inherited from class liquibase.database.AbstractJdbcDatabase
caseSensitive, currentDateTimeFunction, dateFunctions, defaultAutoIncrementBy, defaultAutoIncrementStartWith, defaultCatalogName, defaultSchemaName, quotingStrategy, sequenceCurrentValueFunction, sequenceNextValueFunction, unmodifiableDataTypes, unquotedObjectsAreUppercased
-
Fields inherited from interface liquibase.database.Database
COMPLETE_SQL_SCOPE_KEY
-
Fields inherited from interface liquibase.servicelocator.PrioritizedService
COMPARATOR, PRIORITY_DATABASE, PRIORITY_DEFAULT
-
-
Constructor Summary
Constructors Constructor Description HsqlDatabase()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description StringescapeObjectName(String objectName, Class<? extends DatabaseObject> objectType)StringgetAutoIncrementClause(BigInteger startWith, BigInteger incrementBy, String generationType, Boolean defaultOnNull)Returns database-specific auto-increment DDL clause.StringgetConcatSql(String... values)Returns SQL to concat the passed values.protected StringgetConnectionCatalogName()protected StringgetConnectionSchemaName()Overwrite this method to get the default schema name for the connection.StringgetDateLiteral(String isoDate)Return a date literal with the same value as a string formatted using ISO 8601.protected StringgetDefaultDatabaseProductName()StringgetDefaultDriver(String url)If this database understands the given url, return the default driver class name.IntegergetDefaultPort()intgetMaxFractionalDigitsForTimestamp()Most relational databases support 9 fractional digits, and subclasses must overwrite this method if they support less than that.intgetPriority()StringgetShortName()Returns an all-lower-case short name of the product.booleanisCaseSensitive()booleanisCorrectDatabaseImplementation(DatabaseConnection conn)Is this AbstractDatabase subclass the correct one to use for the given connection.booleanisReservedWord(String value)booleanisUsingOracleSyntax()DateparseDate(String dateAsString)voidsetConnection(DatabaseConnection conn)booleansupportsCatalogs()booleansupportsCreateIfNotExists(Class<? extends DatabaseObject> type)Does the database support the "if not exits" syntax?booleansupportsDatabaseChangeLogHistory()Does the particular database implementation support the database changelog history feature and associated table?static booleansupportsDefaultValueComputed(String columnType, String defaultValue)Checks to see if the string is an acceptable computed value for HSQL "datetime" columns are the only columns for which HSQL supports computer values.booleansupportsInitiallyDeferrableColumns()Returns whether this database support initially deferrable columns.booleansupportsSequences()Does the database type support sequence.booleansupportsTablespaces()-
Methods inherited from class liquibase.database.AbstractJdbcDatabase
addReservedWords, canCreateChangeLogTable, close, commit, correctObjectName, correctSchema, correctSchema, createsIndexesForForeignKeys, dataTypeIsNotModifiable, disableForeignKeyChecks, doesTagExist, dropDatabaseObjects, enableForeignKeyChecks, equals, escapeColumnName, escapeColumnName, escapeColumnNameList, escapeConstraintName, escapeDataTypeName, escapeIndexName, escapeObjectName, escapeSequenceName, escapeStringForDatabase, escapeTableName, escapeViewName, execute, executeRollbackStatements, executeRollbackStatements, executeStatements, filterRollbackVisitors, generateAutoIncrementBy, generateAutoIncrementStartWith, generateDatabaseFunctionValue, generatePrimaryKeyName, get, getAutoCommitMode, getAutoIncrementByClause, getAutoIncrementClause, getAutoIncrementClause, getAutoIncrementClosing, getAutoIncrementOpening, getAutoIncrementStartWithClause, getConnection, getConnectionSchemaNameCallStatement, getContainingObjects, getCurrentDateTimeFunction, getDatabaseChangeLogLockTableName, getDatabaseChangeLogTableName, getDatabaseMajorVersion, getDatabaseMinorVersion, getDatabaseProductName, getDatabaseProductVersion, getDataTypeMaxParameters, getDateFunctions, getDateLiteral, getDateLiteral, getDateTimeLiteral, getDefaultCatalogName, getDefaultFractionalDigitsForTimestamp, getDefaultScaleForNativeDataType, getDefaultSchema, getDefaultSchemaName, getFetchSize, getJdbcCatalogName, getJdbcCatalogName, getJdbcSchemaName, getJdbcSchemaName, getLineComment, getLiquibaseCatalogName, getLiquibaseSchemaName, getLiquibaseTablespaceName, getName, getObjectQuotingStrategy, getOutputDefaultCatalog, getOutputDefaultSchema, getQuotingEndCharacter, getQuotingEndReplacement, getQuotingStartCharacter, getRanChangeSet, getRanChangeSetList, getRanDate, getRawDatabaseChangeLogLockTableName, getRawDatabaseChangeLogTableName, getRunStatus, getSchemaAndCatalogCase, getSchemaFromJdbcInfo, getSystemSchema, getSystemTables, getSystemViews, getTimeLiteral, getViewDefinition, hashCode, isAutoCommit, isCatalogOrSchemaType, isCurrentTimeFunction, isDateOnly, isDateTime, isDefaultCatalog, isDefaultSchema, isFunction, isLiquibaseObject, isSafeToRunUpdate, isSystemObject, isSystemView, isTimeOnly, isTimestamp, jdbcCallsCatalogsSchemas, markChangeSetExecStatus, mustQuoteObjectName, quoteObject, removeRanStatus, requiresExplicitNullForColumns, requiresPassword, requiresUsername, resetInternalState, rollback, saveRollbackStatement, saveStatements, set, setAutoCommit, setCanCacheLiquibaseTableInfo, setCaseSensitive, setCurrentDateTimeFunction, setDatabaseChangeLogLockTableName, setDatabaseChangeLogTableName, setDefaultCatalogName, setDefaultSchemaName, setLiquibaseCatalogName, setLiquibaseSchemaName, setLiquibaseTablespaceName, setObjectQuotingStrategy, setOutputDefaultCatalog, setOutputDefaultSchema, startsWithNumeric, supportsAutoIncrement, supportsBatchUpdates, supportsCatalogInObjectName, supportsDDLInTransaction, supportsDropTableCascadeConstraints, supportsForeignKeyDisable, supportsNotNullConstraintNames, supportsPrimaryKeyNames, supportsRestrictForeignKeys, supportsSchemas, tag, toString, unescapeDataTypeName, unescapeDataTypeString, validate
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface liquibase.database.Database
addCompleteSqlToScope, afterUpdate, dropDatabaseObjects, failOnDefferable, getDisplayName, temporarilySetObjectQuotingStrategy
-
-
-
-
Method Detail
-
supportsDefaultValueComputed
public static boolean supportsDefaultValueComputed(String columnType, String defaultValue)
Checks to see if the string is an acceptable computed value for HSQL "datetime" columns are the only columns for which HSQL supports computer values.- Parameters:
columnType- String of the column's data typedefaultValue- String to be checked for valid valueComputed in HSQL- Returns:
- boolean True if the string represents a function supported by HSQL for default values
-
isCorrectDatabaseImplementation
public boolean isCorrectDatabaseImplementation(DatabaseConnection conn) throws DatabaseException
Description copied from interface:DatabaseIs this AbstractDatabase subclass the correct one to use for the given connection.- Throws:
DatabaseException
-
getDefaultDriver
public String getDefaultDriver(String url)
Description copied from interface:DatabaseIf this database understands the given url, return the default driver class name. Otherwise return null.
-
getDefaultPort
public Integer getDefaultPort()
-
getDefaultDatabaseProductName
protected String getDefaultDatabaseProductName()
- Specified by:
getDefaultDatabaseProductNamein classAbstractJdbcDatabase
-
getPriority
public int getPriority()
-
getShortName
public String getShortName()
Description copied from interface:DatabaseReturns an all-lower-case short name of the product. Used for end-user selecting of database type such as the DBMS precondition.
-
supportsSequences
public boolean supportsSequences()
Description copied from class:AbstractJdbcDatabaseDoes the database type support sequence.- Specified by:
supportsSequencesin interfaceDatabase- Overrides:
supportsSequencesin classAbstractJdbcDatabase
-
supportsInitiallyDeferrableColumns
public boolean supportsInitiallyDeferrableColumns()
Description copied from interface:DatabaseReturns whether this database support initially deferrable columns.
-
supportsCatalogs
public boolean supportsCatalogs()
- Specified by:
supportsCatalogsin interfaceDatabase- Overrides:
supportsCatalogsin classAbstractJdbcDatabase
-
getConnectionCatalogName
protected String getConnectionCatalogName() throws DatabaseException
- Overrides:
getConnectionCatalogNamein classAbstractJdbcDatabase- Throws:
DatabaseException
-
getConnectionSchemaName
protected String getConnectionSchemaName()
Description copied from class:AbstractJdbcDatabaseOverwrite this method to get the default schema name for the connection. If you only need to change the statement that obtains the current schema then override- Overrides:
getConnectionSchemaNamein classAbstractJdbcDatabase- See Also:
AbstractJdbcDatabase.getConnectionSchemaNameCallStatement()
-
getConcatSql
public String getConcatSql(String... values)
Description copied from interface:DatabaseReturns SQL to concat the passed values.- Specified by:
getConcatSqlin interfaceDatabase- Overrides:
getConcatSqlin classAbstractJdbcDatabase
-
getDateLiteral
public String getDateLiteral(String isoDate)
Description copied from class:AbstractJdbcDatabaseReturn a date literal with the same value as a string formatted using ISO 8601. Note: many databases accept date literals in ISO8601 format with the 'T' replaced with a space. Only databases which do not accept these strings should need to override this method. Implementation restriction: Currently, only the following subsets of ISO8601 are supported: yyyy-MM-dd hh:mm:ss yyyy-MM-ddThh:mm:ss- Specified by:
getDateLiteralin interfaceDatabase- Overrides:
getDateLiteralin classAbstractJdbcDatabase
-
parseDate
public Date parseDate(String dateAsString) throws DateParseException
- Specified by:
parseDatein interfaceDatabase- Overrides:
parseDatein classAbstractJdbcDatabase- Throws:
DateParseException
-
supportsTablespaces
public boolean supportsTablespaces()
-
isReservedWord
public boolean isReservedWord(String value)
- Specified by:
isReservedWordin interfaceDatabase- Overrides:
isReservedWordin classAbstractJdbcDatabase
-
isCaseSensitive
public boolean isCaseSensitive()
- Specified by:
isCaseSensitivein interfaceDatabase- Overrides:
isCaseSensitivein classAbstractJdbcDatabase
-
setConnection
public void setConnection(DatabaseConnection conn)
- Specified by:
setConnectionin interfaceDatabase- Overrides:
setConnectionin classAbstractJdbcDatabase
-
isUsingOracleSyntax
public boolean isUsingOracleSyntax()
-
escapeObjectName
public String escapeObjectName(String objectName, Class<? extends DatabaseObject> objectType)
- Specified by:
escapeObjectNamein interfaceDatabase- Overrides:
escapeObjectNamein classAbstractJdbcDatabase
-
getMaxFractionalDigitsForTimestamp
public int getMaxFractionalDigitsForTimestamp()
Description copied from class:AbstractJdbcDatabaseMost relational databases support 9 fractional digits, and subclasses must overwrite this method if they support less than that.- Specified by:
getMaxFractionalDigitsForTimestampin interfaceDatabase- Overrides:
getMaxFractionalDigitsForTimestampin classAbstractJdbcDatabase- Returns:
- the maximum number of supported fractional digits in TIMESTAMP columns
-
getAutoIncrementClause
public String getAutoIncrementClause(BigInteger startWith, BigInteger incrementBy, String generationType, Boolean defaultOnNull)
Description copied from interface:DatabaseReturns database-specific auto-increment DDL clause.- Specified by:
getAutoIncrementClausein interfaceDatabase- Overrides:
getAutoIncrementClausein classAbstractJdbcDatabase
-
supportsCreateIfNotExists
public boolean supportsCreateIfNotExists(Class<? extends DatabaseObject> type)
Description copied from interface:DatabaseDoes the database support the "if not exits" syntax?- Parameters:
type- the DatabaseObject type to be checked.- Returns:
- true if the "if not exists" syntax is supported, false otherwise.
-
supportsDatabaseChangeLogHistory
public boolean supportsDatabaseChangeLogHistory()
Description copied from interface:DatabaseDoes the particular database implementation support the database changelog history feature and associated table?- Returns:
- true if supported, false otherwise
-
-