Package liquibase.database.core
Class MockDatabase
- java.lang.Object
-
- liquibase.database.core.MockDatabase
-
- All Implemented Interfaces:
AutoCloseable,Database,InternalDatabase,PrioritizedService
public class MockDatabase extends Object implements Database, InternalDatabase
A DBMS that effectively does nothing, but it is useful for tests where everything should work in the same way for all databases.
-
-
Field Summary
-
Fields inherited from interface liquibase.database.Database
databaseChangeLogLockTableName, databaseChangeLogTableName
-
Fields inherited from interface liquibase.servicelocator.PrioritizedService
COMPARATOR, PRIORITY_DATABASE, PRIORITY_DEFAULT
-
-
Constructor Summary
Constructors Constructor Description MockDatabase()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanacquireLock()booleanacquireLock(Liquibase liquibase)voidaddReservedWords(Collection<String> words)voidclose()voidcommit()StringconvertRequestedSchemaToCatalog(String requestedSchema)StringconvertRequestedSchemaToSchema(String requestedSchema)StringcorrectObjectName(String name, Class<? extends DatabaseObject> objectType)Fix the object name to the format the database expects, handling changes in case, etc.StringcorrectObjectName(String name, Class<? extends DatabaseObject> objectType, boolean quoteCorrectedName)CatalogAndSchemacorrectSchema(CatalogAndSchema schema)Returns a new CatalogAndSchema adjusted for this database.booleancreatesIndexesForForeignKeys()booleandataTypeIsNotModifiable(String typeName)Types like int4 in postgres cannot have a modifier.booleandisableForeignKeyChecks()booleandoesTagExist(String tag)voiddropDatabaseObjects(CatalogAndSchema schema)Drops all objects in a specified schema.voidenableForeignKeyChecks()booleanequals(DatabaseObject otherObject, Database accordingTo)StringescapeColumnName(String catalogName, String schemaName, String tableName, String columnName)Escapes a single column name in a database-dependent manner so reserved words can be used as a column name (i.e.StringescapeColumnName(String catalogName, String schemaName, String tableName, String columnName, boolean quoteNamesThatMayBeFunctions)Similar toDatabase.escapeColumnName(String, String, String, String)but allows control over whether function-like names should be left unquoted.StringescapeColumnNameList(String columnNames)Escapes a list of column names in a database-dependent manner so reserved words can be used as a column name (i.e.StringescapeConstraintName(String constraintName)StringescapeDataTypeName(String dataTypeName)StringescapeIndexName(String catalogName, String schemaName, String indexName)StringescapeObjectName(String objectName, Class<? extends DatabaseObject> objectType)StringescapeObjectName(String catalogName, String schemaName, String objectName, Class<? extends DatabaseObject> objectType)StringescapeSequenceName(String catalogName, String schemaName, String sequenceName)StringescapeStringForDatabase(String string)StringescapeTableName(String catalogName, String schemaName, String tableName)StringescapeViewName(String catalogName, String schemaName, String viewName)voidexecute(SqlStatement[] statements, List<SqlVisitor> sqlVisitors)voidexecuteRollbackStatements(Change change, List<SqlVisitor> sqlVisitors)voidexecuteRollbackStatements(SqlStatement[] statements, List<SqlVisitor> sqlVisitors)voidexecuteStatements(Change change, DatabaseChangeLog changeLog, List<SqlVisitor> sqlVisitors)StringgenerateDatabaseFunctionValue(DatabaseFunction databaseFunction)Some function names are placeholders that need to be replaced with the specific database value.StringgeneratePrimaryKeyName(String tableName)booleangetAutoCommitMode()Auto-commit mode to run inStringgetAutoIncrementClause(BigInteger startWith, BigInteger incrementBy, String generationType, Boolean defaultOnNull)Returns database-specific auto-increment DDL clause.SqlStatementgetCommitSQL()StringgetConcatSql(String... values)Returns SQL to concat the passed values.DatabaseConnectiongetConnection()StringgetConnectionURL()StringgetConnectionUsername()DatabaseObject[]getContainingObjects()StringgetCurrentDateTimeFunction()Returns database-specific function for generating the current date/time.StringgetDatabaseChangeLogLockTableName()StringgetDatabaseChangeLogTableName()intgetDatabaseMajorVersion()intgetDatabaseMinorVersion()StringgetDatabaseProductName()Returns the name of the database product according to the underlying database.StringgetDatabaseProductName(DatabaseConnection conn)StringgetDatabaseProductVersion()intgetDataTypeMaxParameters(String dataTypeName)List<DatabaseFunction>getDateFunctions()Returns list of database native date functionsStringgetDateLiteral(String isoDate)StringgetDateLiteral(Date date)StringgetDateLiteral(Date defaultDateValue)StringgetDateTimeLiteral(Timestamp timeStamp)StringgetDefaultCatalogName()StringgetDefaultDriver(String url)If this database understands the given url, return the default driver class name.intgetDefaultFractionalDigitsForTimestamp()When a TIMESTAMP column without the parameter "number of fractional digits" is created, what is the default value?IntegergetDefaultPort()IntegergetDefaultScaleForNativeDataType(String nativeDataType)Returns the default precision for a given native data type, e.g.CatalogAndSchemagetDefaultSchema()StringgetDefaultSchemaName()StringgetDriverName()IntegergetFetchSize()StringgetJdbcCatalogName(CatalogAndSchema schema)StringgetJdbcCatalogName(Schema schema)StringgetJdbcSchemaName(CatalogAndSchema schema)StringgetJdbcSchemaName(Schema schema)StringgetLineComment()StringgetLiquibaseCatalogName()StringgetLiquibaseSchemaName()StringgetLiquibaseTablespaceName()intgetMaxFractionalDigitsForTimestamp()Determines the maximum precision (number of fractional digits) for TIMESTAMP columns for the given database.StringgetName()ObjectQuotingStrategygetObjectQuotingStrategy()booleangetOutputDefaultCatalog()booleangetOutputDefaultSchema()Should the schema be included in identifiers even if it is the default schema?intgetPriority()RanChangeSetgetRanChangeSet(ChangeSet changeSet)List<RanChangeSet>getRanChangeSetList()Returns the ChangeSets that have been run against the current database.DategetRanDate(ChangeSet changeSet)ChangeSet.RunStatusgetRunStatus(ChangeSet changeSet)Returns the run status for the given ChangeSetSchemagetSchema()CatalogAndSchema.CatalogAndSchemaCasegetSchemaAndCatalogCase()CatalogAndSchemagetSchemaFromJdbcInfo(String rawCatalogName, String rawSchemaName)SqlStatementgetSelectChangeLogLockSQL()StringgetShortName()Returns an all-lower-case short name of the product.StringgetSystemSchema()StringgetTimeLiteral(Time time)StringgetViewDefinition(CatalogAndSchema schema, String name)booleanisAutoCommit()booleanisCaseSensitive()booleanisCorrectDatabaseImplementation(DatabaseConnection conn)Is this AbstractDatabase subclass the correct one to use for the given connection.booleanisDefaultCatalog(String catalog)If the database supports catalogs, test if a given catalog name equals to the default catalog of the current logged in user.booleanisDefaultSchema(String catalog, String schema)If the database supports schemas, test if a given combination of catalog and schema name equals to the default catalog and schema of the current logged in user.booleanisFunction(String string)booleanisLiquibaseObject(DatabaseObject object)booleanisReservedWord(String string)booleanisSafeToRunUpdate()booleanisSystemObject(DatabaseObject example)DatabaseChangeLogLock[]listLocks()voidmarkChangeSetExecStatus(ChangeSet changeSet, ChangeSet.ExecType execType)After the changeset has been ran against the database this method will update the change log table with the information.DateparseDate(String dateAsString)voidreleaseLock()voidremoveRanStatus(ChangeSet changeSet)booleanrequiresExplicitNullForColumns()Does the database require explicit NULL for nullable columns?booleanrequiresPassword()booleanrequiresUsername()voidresetInternalState()voidrollback()voidsaveRollbackStatement(Change change, List<SqlVisitor> sqlVisitors, Writer writer)voidsaveStatements(Change change, List<SqlVisitor> sqlVisitors, Writer writer)voidsetAutoCommit(boolean b)voidsetCanCacheLiquibaseTableInfo(boolean canCacheLiquibaseTableInfo)voidsetCaseSensitive(boolean caseSensitive)voidsetConnection(Connection conn)voidsetConnection(DatabaseConnection conn)voidsetCurrentDateTimeFunction(String function)voidsetDatabaseChangeLogLockTableName(String tableName)Does nothingvoidsetDatabaseChangeLogTableName(String tableName)Does nothingvoidsetDefaultCatalogName(String catalogName)voidsetDefaultSchemaName(String schemaName)voidsetLiquibaseCatalogName(String catalogName)voidsetLiquibaseSchemaName(String schemaName)voidsetLiquibaseTablespaceName(String tablespaceName)voidsetObjectQuotingStrategy(ObjectQuotingStrategy quotingStrategy)voidsetOutputDefaultCatalog(boolean outputDefaultCatalog)voidsetOutputDefaultSchema(boolean outputDefaultSchema)Whether the default schema should be included in generated SQLvoidsetSupportsCatalogs(boolean supportsCatalogs)voidsetSupportsSchemas(boolean supportsSchemas)voidsetSupportsSequences(boolean supportsSequences)booleansupportsAutoIncrement()booleansupportsBatchUpdates()Does the database support batched DML (INSERT/UPDATE/DELETE/MERGE/...) statements sent in a single call to the database?booleansupportsCatalogInObjectName()booleansupportsCatalogInObjectName(Class<? extends DatabaseObject> type)booleansupportsCatalogs()booleansupportsDDLInTransaction()Determines if the database supports DDL within a transaction or not.booleansupportsDropTableCascadeConstraints()booleansupportsForeignKeyDisable()booleansupportsInitiallyDeferrableColumns()Returns whether this database support initially deferrable columns.booleansupportsNotNullConstraintNames()Does this database treat NOT NULL as an own kind of CONSTRAINT (in addition of simply being a column property)? This will affect the CONSTRAINT clause SQL generators.booleansupportsPrimaryKeyNames()booleansupportsRestrictForeignKeys()booleansupportsSchemas()booleansupportsSequences()booleansupportsTablespaces()voidtag(String tagString)Tags the database changelog with the given string.StringtoString()StringunescapeDataTypeName(String dataTypeName)StringunescapeDataTypeString(String dataTypeString)voidupdateChecksum(ChangeSet changeSet)ValidationErrorsvalidate()-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface liquibase.database.Database
getDisplayName
-
-
-
-
Method Detail
-
getDefaultScaleForNativeDataType
public Integer getDefaultScaleForNativeDataType(String nativeDataType)
Description copied from interface:DatabaseReturns the default precision for a given native data type, e.g. "datetime2" for Microsoft SQL Server.- Specified by:
getDefaultScaleForNativeDataTypein interfaceDatabase- Parameters:
nativeDataType- the name of the native data type (case-insensitive).- Returns:
- The default precision of the native data type, or null if the type is unknown to this database.
-
getPriority
public int getPriority()
- Specified by:
getPriorityin interfacePrioritizedService
-
getSchema
public Schema getSchema()
-
getName
public String getName()
-
getDefaultSchema
public CatalogAndSchema getDefaultSchema()
- Specified by:
getDefaultSchemain interfaceDatabase
-
getDefaultPort
public Integer getDefaultPort()
- Specified by:
getDefaultPortin interfaceDatabase
-
getContainingObjects
public DatabaseObject[] getContainingObjects()
-
equals
public boolean equals(DatabaseObject otherObject, Database accordingTo)
-
setCanCacheLiquibaseTableInfo
public void setCanCacheLiquibaseTableInfo(boolean canCacheLiquibaseTableInfo)
- Specified by:
setCanCacheLiquibaseTableInfoin interfaceDatabase
-
requiresUsername
public boolean requiresUsername()
- Specified by:
requiresUsernamein interfaceDatabase
-
requiresPassword
public boolean requiresPassword()
- Specified by:
requiresPasswordin interfaceDatabase
-
isCorrectDatabaseImplementation
public boolean isCorrectDatabaseImplementation(DatabaseConnection conn)
Description copied from interface:DatabaseIs this AbstractDatabase subclass the correct one to use for the given connection.- Specified by:
isCorrectDatabaseImplementationin interfaceDatabase
-
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.- Specified by:
getDefaultDriverin interfaceDatabase
-
getConnection
public DatabaseConnection getConnection()
- Specified by:
getConnectionin interfaceDatabase
-
setConnection
public void setConnection(DatabaseConnection conn)
- Specified by:
setConnectionin interfaceDatabase
-
setConnection
public void setConnection(Connection conn)
-
getAutoCommitMode
public boolean getAutoCommitMode()
Description copied from interface:DatabaseAuto-commit mode to run in- Specified by:
getAutoCommitModein interfaceDatabase
-
isAutoCommit
public boolean isAutoCommit()
- Specified by:
isAutoCommitin interfaceDatabase
-
setAutoCommit
public void setAutoCommit(boolean b)
- Specified by:
setAutoCommitin interfaceDatabase
-
isCaseSensitive
public boolean isCaseSensitive()
- Specified by:
isCaseSensitivein interfaceDatabase
-
setCaseSensitive
public void setCaseSensitive(boolean caseSensitive)
-
supportsDDLInTransaction
public boolean supportsDDLInTransaction()
Description copied from interface:DatabaseDetermines if the database supports DDL within a transaction or not.- Specified by:
supportsDDLInTransactionin interfaceDatabase- Returns:
- True if the database supports DDL within a transaction, otherwise false.
-
getDatabaseProductName
public String getDatabaseProductName()
Description copied from interface:DatabaseReturns the name of the database product according to the underlying database.- Specified by:
getDatabaseProductNamein interfaceDatabase
-
getDatabaseProductVersion
public String getDatabaseProductVersion()
- Specified by:
getDatabaseProductVersionin interfaceDatabase
-
getDatabaseMajorVersion
public int getDatabaseMajorVersion()
- Specified by:
getDatabaseMajorVersionin interfaceDatabase
-
getDatabaseMinorVersion
public int getDatabaseMinorVersion()
- Specified by:
getDatabaseMinorVersionin interfaceDatabase
-
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.- Specified by:
getShortNamein interfaceDatabase
-
getDriverName
public String getDriverName()
-
getConnectionURL
public String getConnectionURL()
-
getConnectionUsername
public String getConnectionUsername()
-
getDefaultCatalogName
public String getDefaultCatalogName()
- Specified by:
getDefaultCatalogNamein interfaceDatabase
-
setDefaultCatalogName
public void setDefaultCatalogName(String catalogName)
- Specified by:
setDefaultCatalogNamein interfaceDatabase
-
getDefaultSchemaName
public String getDefaultSchemaName()
- Specified by:
getDefaultSchemaNamein interfaceDatabase
-
setDefaultSchemaName
public void setDefaultSchemaName(String schemaName)
- Specified by:
setDefaultSchemaNamein interfaceDatabase
-
supportsInitiallyDeferrableColumns
public boolean supportsInitiallyDeferrableColumns()
Description copied from interface:DatabaseReturns whether this database support initially deferrable columns.- Specified by:
supportsInitiallyDeferrableColumnsin interfaceDatabase
-
supportsSequences
public boolean supportsSequences()
- Specified by:
supportsSequencesin interfaceDatabase
-
setSupportsSequences
public void setSupportsSequences(boolean supportsSequences)
-
supportsDropTableCascadeConstraints
public boolean supportsDropTableCascadeConstraints()
- Specified by:
supportsDropTableCascadeConstraintsin interfaceDatabase
-
supportsAutoIncrement
public boolean supportsAutoIncrement()
- Specified by:
supportsAutoIncrementin interfaceDatabase
-
getDateLiteral
public String getDateLiteral(String isoDate)
- Specified by:
getDateLiteralin interfaceDatabase
-
getDateLiteral
public String getDateLiteral(Date date)
- Specified by:
getDateLiteralin interfaceDatabase
-
getTimeLiteral
public String getTimeLiteral(Time time)
- Specified by:
getTimeLiteralin interfaceDatabase
-
getDateTimeLiteral
public String getDateTimeLiteral(Timestamp timeStamp)
- Specified by:
getDateTimeLiteralin interfaceDatabase
-
getCurrentDateTimeFunction
public String getCurrentDateTimeFunction()
Description copied from interface:DatabaseReturns database-specific function for generating the current date/time.- Specified by:
getCurrentDateTimeFunctionin interfaceDatabase
-
setCurrentDateTimeFunction
public void setCurrentDateTimeFunction(String function)
- Specified by:
setCurrentDateTimeFunctionin interfaceDatabase
-
getLineComment
public String getLineComment()
- Specified by:
getLineCommentin interfaceDatabase
-
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
-
getCommitSQL
public SqlStatement getCommitSQL()
-
getDatabaseChangeLogTableName
public String getDatabaseChangeLogTableName()
- Specified by:
getDatabaseChangeLogTableNamein interfaceDatabase- See Also:
Database.getDatabaseChangeLogTableName()
-
setDatabaseChangeLogTableName
public void setDatabaseChangeLogTableName(String tableName)
Does nothing- Specified by:
setDatabaseChangeLogTableNamein interfaceDatabase- Parameters:
tableName- the name of the change log table to set- See Also:
Database.setDatabaseChangeLogTableName(java.lang.String)
-
getDatabaseChangeLogLockTableName
public String getDatabaseChangeLogLockTableName()
- Specified by:
getDatabaseChangeLogLockTableNamein interfaceDatabase- See Also:
Database.getDatabaseChangeLogLockTableName()
-
setDatabaseChangeLogLockTableName
public void setDatabaseChangeLogLockTableName(String tableName)
Does nothing- Specified by:
setDatabaseChangeLogLockTableNamein interfaceDatabase- See Also:
Database.setDatabaseChangeLogLockTableName(java.lang.String)
-
getConcatSql
public String getConcatSql(String... values)
Description copied from interface:DatabaseReturns SQL to concat the passed values.- Specified by:
getConcatSqlin interfaceDatabase
-
acquireLock
public boolean acquireLock(Liquibase liquibase)
-
releaseLock
public void releaseLock()
-
listLocks
public DatabaseChangeLogLock[] listLocks()
-
dropDatabaseObjects
public void dropDatabaseObjects(CatalogAndSchema schema)
Description copied from interface:DatabaseDrops all objects in a specified schema.- Specified by:
dropDatabaseObjectsin interfaceDatabase- Parameters:
schema- schema (catalog+)schema to drop
-
tag
public void tag(String tagString)
Description copied from interface:DatabaseTags the database changelog with the given string.
-
doesTagExist
public boolean doesTagExist(String tag)
- Specified by:
doesTagExistin interfaceDatabase
-
isSystemObject
public boolean isSystemObject(DatabaseObject example)
- Specified by:
isSystemObjectin interfaceDatabase
-
isLiquibaseObject
public boolean isLiquibaseObject(DatabaseObject object)
- Specified by:
isLiquibaseObjectin interfaceDatabase
-
supportsTablespaces
public boolean supportsTablespaces()
- Specified by:
supportsTablespacesin interfaceDatabase
-
getViewDefinition
public String getViewDefinition(CatalogAndSchema schema, String name)
- Specified by:
getViewDefinitionin interfaceDatabase
-
getDatabaseProductName
public String getDatabaseProductName(DatabaseConnection conn)
-
getDateLiteral
public String getDateLiteral(Date defaultDateValue)
- Specified by:
getDateLiteralin interfaceDatabase
-
escapeTableName
public String escapeTableName(String catalogName, String schemaName, String tableName)
- Specified by:
escapeTableNamein interfaceDatabase
-
escapeIndexName
public String escapeIndexName(String catalogName, String schemaName, String indexName)
- Specified by:
escapeIndexNamein interfaceDatabase
-
escapeColumnName
public String escapeColumnName(String catalogName, String schemaName, String tableName, String columnName)
Description copied from interface:DatabaseEscapes a single column name in a database-dependent manner so reserved words can be used as a column name (i.e. "return").- Specified by:
escapeColumnNamein interfaceDatabasecolumnName- column name- Returns:
- escaped column name
-
escapeColumnName
public String escapeColumnName(String catalogName, String schemaName, String tableName, String columnName, boolean quoteNamesThatMayBeFunctions)
Description copied from interface:DatabaseSimilar toDatabase.escapeColumnName(String, String, String, String)but allows control over whether function-like names should be left unquoted.- Specified by:
escapeColumnNamein interfaceDatabase
-
escapeColumnNameList
public String escapeColumnNameList(String columnNames)
Description copied from interface:DatabaseEscapes a list of column names in a database-dependent manner so reserved words can be used as a column name (i.e. "return").- Specified by:
escapeColumnNameListin interfaceDatabase- Parameters:
columnNames- list of column names- Returns:
- escaped column name list
-
escapeSequenceName
public String escapeSequenceName(String catalogName, String schemaName, String sequenceName)
- Specified by:
escapeSequenceNamein interfaceDatabase
-
convertRequestedSchemaToSchema
public String convertRequestedSchemaToSchema(String requestedSchema)
-
convertRequestedSchemaToCatalog
public String convertRequestedSchemaToCatalog(String requestedSchema)
-
supportsSchemas
public boolean supportsSchemas()
- Specified by:
supportsSchemasin interfaceDatabase
-
setSupportsSchemas
public void setSupportsSchemas(boolean supportsSchemas)
-
supportsCatalogs
public boolean supportsCatalogs()
- Specified by:
supportsCatalogsin interfaceDatabase
-
getSchemaAndCatalogCase
public CatalogAndSchema.CatalogAndSchemaCase getSchemaAndCatalogCase()
- Specified by:
getSchemaAndCatalogCasein interfaceDatabase
-
setSupportsCatalogs
public void setSupportsCatalogs(boolean supportsCatalogs)
-
supportsCatalogInObjectName
public boolean supportsCatalogInObjectName()
-
generatePrimaryKeyName
public String generatePrimaryKeyName(String tableName)
- Specified by:
generatePrimaryKeyNamein interfaceDatabase
-
escapeViewName
public String escapeViewName(String catalogName, String schemaName, String viewName)
- Specified by:
escapeViewNamein interfaceDatabase
-
acquireLock
public boolean acquireLock()
-
getRunStatus
public ChangeSet.RunStatus getRunStatus(ChangeSet changeSet) throws DatabaseException, DatabaseHistoryException
Description copied from interface:DatabaseReturns the run status for the given ChangeSet- Specified by:
getRunStatusin interfaceDatabase- Throws:
DatabaseExceptionDatabaseHistoryException
-
getRanChangeSet
public RanChangeSet getRanChangeSet(ChangeSet changeSet) throws DatabaseException, DatabaseHistoryException
- Specified by:
getRanChangeSetin interfaceDatabase- Throws:
DatabaseExceptionDatabaseHistoryException
-
markChangeSetExecStatus
public void markChangeSetExecStatus(ChangeSet changeSet, ChangeSet.ExecType execType) throws DatabaseException
Description copied from interface:DatabaseAfter the changeset has been ran against the database this method will update the change log table with the information.- Specified by:
markChangeSetExecStatusin interfaceDatabase- Throws:
DatabaseException
-
getRanChangeSetList
public List<RanChangeSet> getRanChangeSetList() throws DatabaseException
Description copied from interface:DatabaseReturns the ChangeSets that have been run against the current database.- Specified by:
getRanChangeSetListin interfaceDatabase- Throws:
DatabaseException
-
getRanDate
public Date getRanDate(ChangeSet changeSet) throws DatabaseException, DatabaseHistoryException
- Specified by:
getRanDatein interfaceDatabase- Throws:
DatabaseExceptionDatabaseHistoryException
-
removeRanStatus
public void removeRanStatus(ChangeSet changeSet) throws DatabaseException
- Specified by:
removeRanStatusin interfaceDatabase- Throws:
DatabaseException
-
getSelectChangeLogLockSQL
public SqlStatement getSelectChangeLogLockSQL()
-
escapeStringForDatabase
public String escapeStringForDatabase(String string)
- Specified by:
escapeStringForDatabasein interfaceDatabase
-
close
public void close()
- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceDatabase
-
supportsRestrictForeignKeys
public boolean supportsRestrictForeignKeys()
- Specified by:
supportsRestrictForeignKeysin interfaceDatabase
-
escapeConstraintName
public String escapeConstraintName(String constraintName)
- Specified by:
escapeConstraintNamein interfaceDatabase
-
isSafeToRunUpdate
public boolean isSafeToRunUpdate()
- Specified by:
isSafeToRunUpdatein interfaceDatabase
-
escapeObjectName
public String escapeObjectName(String objectName, Class<? extends DatabaseObject> objectType)
- Specified by:
escapeObjectNamein interfaceDatabase
-
escapeObjectName
public String escapeObjectName(String catalogName, String schemaName, String objectName, Class<? extends DatabaseObject> objectType)
- Specified by:
escapeObjectNamein interfaceDatabase
-
executeStatements
public void executeStatements(Change change, DatabaseChangeLog changeLog, List<SqlVisitor> sqlVisitors)
- Specified by:
executeStatementsin interfaceDatabase
-
execute
public void execute(SqlStatement[] statements, List<SqlVisitor> sqlVisitors)
-
saveStatements
public void saveStatements(Change change, List<SqlVisitor> sqlVisitors, Writer writer)
- Specified by:
saveStatementsin interfaceDatabase
-
executeRollbackStatements
public void executeRollbackStatements(Change change, List<SqlVisitor> sqlVisitors)
- Specified by:
executeRollbackStatementsin interfaceDatabase
-
executeRollbackStatements
public void executeRollbackStatements(SqlStatement[] statements, List<SqlVisitor> sqlVisitors)
- Specified by:
executeRollbackStatementsin interfaceDatabase
-
saveRollbackStatement
public void saveRollbackStatement(Change change, List<SqlVisitor> sqlVisitors, Writer writer)
- Specified by:
saveRollbackStatementin interfaceDatabase
-
getLiquibaseCatalogName
public String getLiquibaseCatalogName()
- Specified by:
getLiquibaseCatalogNamein interfaceDatabase
-
setLiquibaseCatalogName
public void setLiquibaseCatalogName(String catalogName)
- Specified by:
setLiquibaseCatalogNamein interfaceDatabase
-
getLiquibaseSchemaName
public String getLiquibaseSchemaName()
- Specified by:
getLiquibaseSchemaNamein interfaceDatabase
-
setLiquibaseSchemaName
public void setLiquibaseSchemaName(String schemaName)
- Specified by:
setLiquibaseSchemaNamein interfaceDatabase
-
getLiquibaseTablespaceName
public String getLiquibaseTablespaceName()
- Specified by:
getLiquibaseTablespaceNamein interfaceDatabase
-
setLiquibaseTablespaceName
public void setLiquibaseTablespaceName(String tablespaceName)
- Specified by:
setLiquibaseTablespaceNamein interfaceDatabase
-
getDateFunctions
public List<DatabaseFunction> getDateFunctions()
Description copied from interface:DatabaseReturns list of database native date functions- Specified by:
getDateFunctionsin interfaceDatabase
-
resetInternalState
public void resetInternalState()
- Specified by:
resetInternalStatein interfaceDatabase
-
supportsForeignKeyDisable
public boolean supportsForeignKeyDisable()
- Specified by:
supportsForeignKeyDisablein interfaceDatabase
-
disableForeignKeyChecks
public boolean disableForeignKeyChecks()
- Specified by:
disableForeignKeyChecksin interfaceDatabase
-
enableForeignKeyChecks
public void enableForeignKeyChecks()
- Specified by:
enableForeignKeyChecksin interfaceDatabase
-
updateChecksum
public void updateChecksum(ChangeSet changeSet)
-
isReservedWord
public boolean isReservedWord(String string)
- Specified by:
isReservedWordin interfaceDatabase
-
correctSchema
public CatalogAndSchema correctSchema(CatalogAndSchema schema)
Description copied from interface:DatabaseReturns a new CatalogAndSchema adjusted for this database. Examples of adjustments include: fixes for case issues, replacing null schema or catalog names with the default values removing set schema or catalog names if they are not supported- Specified by:
correctSchemain interfaceDatabase
-
correctObjectName
public String correctObjectName(String name, Class<? extends DatabaseObject> objectType)
Description copied from interface:DatabaseFix the object name to the format the database expects, handling changes in case, etc.- Specified by:
correctObjectNamein interfaceDatabase
-
correctObjectName
public String correctObjectName(String name, Class<? extends DatabaseObject> objectType, boolean quoteCorrectedName)
-
getFetchSize
public Integer getFetchSize()
- Specified by:
getFetchSizein interfaceDatabase
-
isFunction
public boolean isFunction(String string)
- Specified by:
isFunctionin interfaceDatabase
-
getDataTypeMaxParameters
public int getDataTypeMaxParameters(String dataTypeName)
- Specified by:
getDataTypeMaxParametersin interfaceDatabase
-
getSchemaFromJdbcInfo
public CatalogAndSchema getSchemaFromJdbcInfo(String rawCatalogName, String rawSchemaName)
-
getJdbcCatalogName
public String getJdbcCatalogName(CatalogAndSchema schema)
-
getJdbcSchemaName
public String getJdbcSchemaName(CatalogAndSchema schema)
-
dataTypeIsNotModifiable
public boolean dataTypeIsNotModifiable(String typeName)
Description copied from interface:DatabaseTypes like int4 in postgres cannot have a modifier. e.g. int4(10) Checks whether the type is allowed to have a modifier- Specified by:
dataTypeIsNotModifiablein interfaceDatabase- Parameters:
typeName- type name- Returns:
- Whether data type can have a modifier
-
generateDatabaseFunctionValue
public String generateDatabaseFunctionValue(DatabaseFunction databaseFunction)
Description copied from interface:DatabaseSome function names are placeholders that need to be replaced with the specific database value. e.g. nextSequenceValue(sequenceName) should be replaced with NEXT_VAL('sequenceName') for Postgresql- Specified by:
generateDatabaseFunctionValuein interfaceDatabase- Parameters:
databaseFunction- database function to check.- Returns:
- the string value to use for an update or generate
-
getObjectQuotingStrategy
public ObjectQuotingStrategy getObjectQuotingStrategy()
- Specified by:
getObjectQuotingStrategyin interfaceDatabase
-
setObjectQuotingStrategy
public void setObjectQuotingStrategy(ObjectQuotingStrategy quotingStrategy)
- Specified by:
setObjectQuotingStrategyin interfaceDatabase
-
supportsCatalogInObjectName
public boolean supportsCatalogInObjectName(Class<? extends DatabaseObject> type)
- Specified by:
supportsCatalogInObjectNamein interfaceDatabase
-
createsIndexesForForeignKeys
public boolean createsIndexesForForeignKeys()
- Specified by:
createsIndexesForForeignKeysin interfaceDatabase
-
getOutputDefaultSchema
public boolean getOutputDefaultSchema()
Description copied from interface:DatabaseShould the schema be included in identifiers even if it is the default schema?- Specified by:
getOutputDefaultSchemain interfaceDatabase- Returns:
- true (if the schema should be included in every case) or false (omit if default schema)
-
setOutputDefaultSchema
public void setOutputDefaultSchema(boolean outputDefaultSchema)
Description copied from interface:DatabaseWhether the default schema should be included in generated SQL- Specified by:
setOutputDefaultSchemain interfaceDatabase
-
getOutputDefaultCatalog
public boolean getOutputDefaultCatalog()
- Specified by:
getOutputDefaultCatalogin interfaceDatabase
-
setOutputDefaultCatalog
public void setOutputDefaultCatalog(boolean outputDefaultCatalog)
- Specified by:
setOutputDefaultCatalogin interfaceDatabase
-
isDefaultSchema
public boolean isDefaultSchema(String catalog, String schema)
Description copied from interface:DatabaseIf the database supports schemas, test if a given combination of catalog and schema name equals to the default catalog and schema of the current logged in user.- Specified by:
isDefaultSchemain interfaceDatabase- Parameters:
catalog- catalog name to be testedschema- schema name to be tested- Returns:
- if the database supports catalogs: true if it is the default schema, false if not. If it does not support schemas, the behaviour of this method is undefined (please call supportsSchemas first!)
-
isDefaultCatalog
public boolean isDefaultCatalog(String catalog)
Description copied from interface:DatabaseIf the database supports catalogs, test if a given catalog name equals to the default catalog of the current logged in user.- Specified by:
isDefaultCatalogin interfaceDatabase- Parameters:
catalog- catalog name to be tested- Returns:
- if the database supports catalogs: true if it is the default catalog, false if not. If it does not support catalogs, the behaviour of this method is undefined (please call supportsCatalog first!)
-
supportsPrimaryKeyNames
public boolean supportsPrimaryKeyNames()
- Specified by:
supportsPrimaryKeyNamesin interfaceDatabase
-
getSystemSchema
public String getSystemSchema()
- Specified by:
getSystemSchemain interfaceDatabase
-
addReservedWords
public void addReservedWords(Collection<String> words)
- Specified by:
addReservedWordsin interfaceDatabase
-
escapeDataTypeName
public String escapeDataTypeName(String dataTypeName)
- Specified by:
escapeDataTypeNamein interfaceDatabase
-
unescapeDataTypeName
public String unescapeDataTypeName(String dataTypeName)
- Specified by:
unescapeDataTypeNamein interfaceDatabase
-
unescapeDataTypeString
public String unescapeDataTypeString(String dataTypeString)
- Specified by:
unescapeDataTypeStringin interfaceDatabase
-
validate
public ValidationErrors validate()
-
supportsNotNullConstraintNames
public boolean supportsNotNullConstraintNames()
Description copied from interface:DatabaseDoes this database treat NOT NULL as an own kind of CONSTRAINT (in addition of simply being a column property)? This will affect the CONSTRAINT clause SQL generators.- Specified by:
supportsNotNullConstraintNamesin interfaceDatabase- Returns:
- true if the database supports naming NOT NULL constraints, false if not.
-
supportsBatchUpdates
public boolean supportsBatchUpdates()
Description copied from interface:DatabaseDoes the database support batched DML (INSERT/UPDATE/DELETE/MERGE/...) statements sent in a single call to the database?- Specified by:
supportsBatchUpdatesin interfaceDatabase- Returns:
- true if the database has this capability for all DML statements, false in all other cases
-
getMaxFractionalDigitsForTimestamp
public int getMaxFractionalDigitsForTimestamp()
Description copied from interface:DatabaseDetermines the maximum precision (number of fractional digits) for TIMESTAMP columns for the given database. Might not always be able to give an exact answer since, for some DBMS, it depends on the actual software version if fractional digits are supported. A warning should be logged in this case.- Specified by:
getMaxFractionalDigitsForTimestampin interfaceDatabase- Returns:
- the number of allowed fractional digits for TIMESTAMP columns. May return 0.
-
getDefaultFractionalDigitsForTimestamp
public int getDefaultFractionalDigitsForTimestamp()
Description copied from interface:DatabaseWhen a TIMESTAMP column without the parameter "number of fractional digits" is created, what is the default value?- Specified by:
getDefaultFractionalDigitsForTimestampin interfaceDatabase- Returns:
- The default number of fractional digits for TIMESTAMP columns
-
requiresExplicitNullForColumns
public boolean requiresExplicitNullForColumns()
Description copied from interface:DatabaseDoes the database require explicit NULL for nullable columns?- Specified by:
requiresExplicitNullForColumnsin interfaceDatabase- Returns:
- true if the database behaves incorrectly if NULL is not explicitly specified, false if it behaves like any good RDBMS should.
-
-