liquibase.database
Interface Database

All Superinterfaces:
DatabaseObject
All Known Implementing Classes:
AbstractDatabase, CacheDatabase, DB2Database, DerbyDatabase, FirebirdDatabase, H2Database, HibernateDatabase, HsqlDatabase, MaxDBDatabase, MSSQLDatabase, MySQLDatabase, OracleDatabase, PostgresDatabase, SQLiteDatabase, SybaseDatabase, UnsupportedDatabase

public interface Database
extends DatabaseObject


Method Summary
 void checkDatabaseChangeLogLockTable()
           
 void checkDatabaseChangeLogTable()
           
 void close()
           
 void commit()
           
 java.lang.Object convertDatabaseValueToJavaObject(java.lang.Object defaultValue, int dataType, int columnSize, int decimalDigits)
           
 java.lang.String convertJavaObjectToString(java.lang.Object value)
           
 java.lang.String convertRequestedSchemaToCatalog(java.lang.String requestedSchema)
           
 java.lang.String convertRequestedSchemaToSchema(java.lang.String requestedSchema)
           
 DatabaseSnapshot createDatabaseSnapshot(java.lang.String schema, java.util.Set<DiffStatusListener> statusListeners)
           
 SqlStatement createFindSequencesSQL(java.lang.String schema)
           
 boolean doesChangeLogLockTableExist()
           
 boolean doesChangeLogTableExist()
           
 boolean doesTagExist(java.lang.String tag)
           
 void dropDatabaseObjects(java.lang.String schema)
           
 java.lang.String escapeColumnName(java.lang.String schemaName, java.lang.String tableName, java.lang.String columnName)
          Escapes a single column name in a database-dependent manner so reserved words can be used as a column name (i.e.
 java.lang.String escapeColumnNameList(java.lang.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.
 java.lang.String escapeConstraintName(java.lang.String constraintName)
           
 java.lang.String escapeSequenceName(java.lang.String schemaName, java.lang.String sequenceName)
           
 java.lang.String escapeStringForDatabase(java.lang.String string)
           
 java.lang.String escapeTableName(java.lang.String schemaName, java.lang.String tableName)
          Escapes the table name in a database-dependent manner so reserved words can be used as a table name (i.e.
 java.lang.String escapeViewName(java.lang.String schemaName, java.lang.String viewName)
           
 java.lang.String generatePrimaryKeyName(java.lang.String tableName)
           
 boolean getAutoCommitMode()
          Auto-commit mode to run in
 java.lang.String getAutoIncrementClause()
           
 java.lang.String getBigIntType()
           
 java.lang.String getBlobType()
          Returns the actual database-specific data type to use a "BLOB" column.
 java.lang.String getBooleanType()
          Returns the actual database-specific data type to use a "boolean" column.
 java.lang.String getClobType()
          Returns the actual database-specific data type to use a "CLOB" column.
 java.lang.String getColumnType(java.lang.String columnType, java.lang.Boolean autoIncrement)
           
 java.lang.String getConcatSql(java.lang.String... values)
          Returns SQL to concat the passed values.
 DatabaseConnection getConnection()
           
 java.lang.String getConnectionURL()
           
 java.lang.String getConnectionUsername()
           
 java.lang.String getCurrencyType()
          Returns the actual database-specific data type to use a "currency" column.
 java.lang.String getCurrentDateTimeFunction()
          Returns database-specific function for generating the current date/time.
 java.lang.String getDatabaseChangeLogLockTableName()
           
 java.lang.String getDatabaseChangeLogTableName()
           
 java.lang.String getDatabaseProductName()
           
 java.lang.String getDatabaseProductName(java.sql.Connection conn)
           
 java.lang.String getDatabaseProductVersion()
           
 int getDatabaseType(int type)
           
 java.lang.String getDateLiteral(java.sql.Date date)
           
 java.lang.String getDateLiteral(java.util.Date defaultDateValue)
           
 java.lang.String getDateLiteral(java.lang.String isoDate)
           
 java.lang.String getDateLiteral(java.sql.Time time)
           
 java.lang.String getDateLiteral(java.sql.Timestamp timeStamp)
           
 java.lang.String getDateTimeType()
          Returns the actual database-specific data type to use a "datetime" column.
 java.lang.String getDateType()
           
 java.lang.String getDefaultCatalogName()
           
 java.lang.String getDefaultDriver(java.lang.String url)
          If this database understands the given url, return the default driver class name.
 java.lang.String getDefaultSchemaName()
           
 java.lang.String getDriverName()
           
 java.lang.String getFalseBooleanValue()
           
 JdbcTemplate getJdbcTemplate()
           
 java.lang.String getLineComment()
           
 java.lang.String getProductName()
          Returns the full database product name.
 RanChangeSet getRanChangeSet(ChangeSet changeSet)
           
 java.util.List<RanChangeSet> getRanChangeSetList()
           
 java.util.Date getRanDate(ChangeSet changeSet)
           
 ChangeSet.RunStatus getRunStatus(ChangeSet changeSet)
           
 SqlStatement getSelectChangeLogLockSQL()
           
 java.lang.String getTimeType()
           
 java.lang.String getTrueBooleanValue()
           
 java.lang.String getTypeName()
          Returns an all-lower-case short name of the product.
 java.lang.String getUUIDType()
          Returns the actual database-specific data type to use a "UUID" column.
 java.lang.String getViewDefinition(java.lang.String schemaName, java.lang.String name)
           
 boolean isColumnAutoIncrement(java.lang.String schemaName, java.lang.String tableName, java.lang.String columnName)
           
 boolean isCorrectDatabaseImplementation(java.sql.Connection conn)
          Is this AbstractDatabase subclass the correct one to use for the given connection.
 boolean isLiquibaseTable(java.lang.String tableName)
           
 boolean isSystemTable(java.lang.String catalogName, java.lang.String schemaName, java.lang.String tableName)
           
 boolean isSystemView(java.lang.String catalogName, java.lang.String schemaName, java.lang.String name)
           
 void markChangeSetAsRan(ChangeSet changeSet)
           
 void markChangeSetAsReRan(ChangeSet changeSet)
           
 void removeRanStatus(ChangeSet changeSet)
           
 void rollback()
           
 void setConnection(java.sql.Connection conn)
           
 void setConnection(DatabaseConnection conn)
           
 void setCurrentDateTimeFunction(java.lang.String function)
           
 void setDefaultSchemaName(java.lang.String schemaName)
           
 void setJdbcTemplate(JdbcTemplate template)
           
 boolean shouldQuoteValue(java.lang.String value)
           
 boolean supportsAutoIncrement()
           
 boolean supportsDDLInTransaction()
          Determines if the database supports DDL within a transaction or not.
 boolean supportsInitiallyDeferrableColumns()
          Returns whether this database support initially deferrable columns.
 boolean supportsRestrictForeignKeys()
           
 boolean supportsSchemas()
           
 boolean supportsSequences()
           
 boolean supportsTablespaces()
           
 void tag(java.lang.String tagString)
           
 

Method Detail

isCorrectDatabaseImplementation

boolean isCorrectDatabaseImplementation(java.sql.Connection conn)
                                        throws JDBCException
Is this AbstractDatabase subclass the correct one to use for the given connection.

Throws:
JDBCException

getDefaultDriver

java.lang.String getDefaultDriver(java.lang.String url)
If this database understands the given url, return the default driver class name. Otherwise return null.


getConnection

DatabaseConnection getConnection()

setConnection

void setConnection(java.sql.Connection conn)

setConnection

void setConnection(DatabaseConnection conn)

getAutoCommitMode

boolean getAutoCommitMode()
Auto-commit mode to run in


supportsDDLInTransaction

boolean supportsDDLInTransaction()
Determines if the database supports DDL within a transaction or not.

Returns:
True if the database supports DDL within a transaction, otherwise false.

getDatabaseProductName

java.lang.String getDatabaseProductName()

getDatabaseProductVersion

java.lang.String getDatabaseProductVersion()
                                           throws JDBCException
Throws:
JDBCException

getProductName

java.lang.String getProductName()
Returns the full database product name. May be different than what the JDBC connection reports (getDatabaseProductName())


getTypeName

java.lang.String getTypeName()
Returns an all-lower-case short name of the product. Used for end-user selecting of database type such as the DBMS precondition.


getDriverName

java.lang.String getDriverName()
                               throws JDBCException
Throws:
JDBCException

getConnectionURL

java.lang.String getConnectionURL()
                                  throws JDBCException
Throws:
JDBCException

getConnectionUsername

java.lang.String getConnectionUsername()
                                       throws JDBCException
Throws:
JDBCException

getDefaultCatalogName

java.lang.String getDefaultCatalogName()
                                       throws JDBCException
Throws:
JDBCException

getDefaultSchemaName

java.lang.String getDefaultSchemaName()

setDefaultSchemaName

void setDefaultSchemaName(java.lang.String schemaName)
                          throws JDBCException
Throws:
JDBCException

supportsInitiallyDeferrableColumns

boolean supportsInitiallyDeferrableColumns()
Returns whether this database support initially deferrable columns.


supportsSequences

boolean supportsSequences()

supportsAutoIncrement

boolean supportsAutoIncrement()

getColumnType

java.lang.String getColumnType(java.lang.String columnType,
                               java.lang.Boolean autoIncrement)

getFalseBooleanValue

java.lang.String getFalseBooleanValue()

getTrueBooleanValue

java.lang.String getTrueBooleanValue()

getDateLiteral

java.lang.String getDateLiteral(java.lang.String isoDate)

getCurrentDateTimeFunction

java.lang.String getCurrentDateTimeFunction()
Returns database-specific function for generating the current date/time.


setCurrentDateTimeFunction

void setCurrentDateTimeFunction(java.lang.String function)

getLineComment

java.lang.String getLineComment()

getAutoIncrementClause

java.lang.String getAutoIncrementClause()

getDatabaseChangeLogTableName

java.lang.String getDatabaseChangeLogTableName()

getDatabaseChangeLogLockTableName

java.lang.String getDatabaseChangeLogLockTableName()

getConcatSql

java.lang.String getConcatSql(java.lang.String... values)
Returns SQL to concat the passed values.


doesChangeLogTableExist

boolean doesChangeLogTableExist()
                                throws JDBCException
Throws:
JDBCException

doesChangeLogLockTableExist

boolean doesChangeLogLockTableExist()
                                    throws JDBCException
Throws:
JDBCException

checkDatabaseChangeLogTable

void checkDatabaseChangeLogTable()
                                 throws JDBCException
Throws:
JDBCException

checkDatabaseChangeLogLockTable

void checkDatabaseChangeLogLockTable()
                                     throws JDBCException
Throws:
JDBCException

dropDatabaseObjects

void dropDatabaseObjects(java.lang.String schema)
                         throws JDBCException
Throws:
JDBCException

tag

void tag(java.lang.String tagString)
         throws JDBCException
Throws:
JDBCException

doesTagExist

boolean doesTagExist(java.lang.String tag)
                     throws JDBCException
Throws:
JDBCException

isSystemTable

boolean isSystemTable(java.lang.String catalogName,
                      java.lang.String schemaName,
                      java.lang.String tableName)

isLiquibaseTable

boolean isLiquibaseTable(java.lang.String tableName)

createFindSequencesSQL

SqlStatement createFindSequencesSQL(java.lang.String schema)
                                    throws JDBCException
Throws:
JDBCException

shouldQuoteValue

boolean shouldQuoteValue(java.lang.String value)

supportsTablespaces

boolean supportsTablespaces()

getViewDefinition

java.lang.String getViewDefinition(java.lang.String schemaName,
                                   java.lang.String name)
                                   throws JDBCException
Throws:
JDBCException

getDatabaseType

int getDatabaseType(int type)

getDatabaseProductName

java.lang.String getDatabaseProductName(java.sql.Connection conn)
                                        throws JDBCException
Throws:
JDBCException

getBooleanType

java.lang.String getBooleanType()
Returns the actual database-specific data type to use a "boolean" column.


getCurrencyType

java.lang.String getCurrencyType()
Returns the actual database-specific data type to use a "currency" column.


getUUIDType

java.lang.String getUUIDType()
Returns the actual database-specific data type to use a "UUID" column.


getClobType

java.lang.String getClobType()
Returns the actual database-specific data type to use a "CLOB" column.


getBlobType

java.lang.String getBlobType()
Returns the actual database-specific data type to use a "BLOB" column.


getDateType

java.lang.String getDateType()

getDateTimeType

java.lang.String getDateTimeType()
Returns the actual database-specific data type to use a "datetime" column.


getTimeType

java.lang.String getTimeType()

getBigIntType

java.lang.String getBigIntType()

convertDatabaseValueToJavaObject

java.lang.Object convertDatabaseValueToJavaObject(java.lang.Object defaultValue,
                                                  int dataType,
                                                  int columnSize,
                                                  int decimalDigits)
                                                  throws java.text.ParseException
Throws:
java.text.ParseException

convertJavaObjectToString

java.lang.String convertJavaObjectToString(java.lang.Object value)

isSystemView

boolean isSystemView(java.lang.String catalogName,
                     java.lang.String schemaName,
                     java.lang.String name)

getDateLiteral

java.lang.String getDateLiteral(java.sql.Date date)

getDateLiteral

java.lang.String getDateLiteral(java.sql.Time time)

getDateLiteral

java.lang.String getDateLiteral(java.sql.Timestamp timeStamp)

getDateLiteral

java.lang.String getDateLiteral(java.util.Date defaultDateValue)

escapeTableName

java.lang.String escapeTableName(java.lang.String schemaName,
                                 java.lang.String tableName)
Escapes the table name in a database-dependent manner so reserved words can be used as a table name (i.e. "order"). Currently only escapes MS-SQL because other DBMSs store table names case-sensitively when escaping is used which could confuse end-users. Pass null to schemaName to use the default schema


escapeColumnName

java.lang.String escapeColumnName(java.lang.String schemaName,
                                  java.lang.String tableName,
                                  java.lang.String columnName)
Escapes a single column name in a database-dependent manner so reserved words can be used as a column name (i.e. "return").

Parameters:
schemaName -
tableName -
columnName - column name
Returns:
escaped column name

escapeColumnNameList

java.lang.String escapeColumnNameList(java.lang.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. "return").

Parameters:
columnNames - list of column names
Returns:
escaped column name list

convertRequestedSchemaToSchema

java.lang.String convertRequestedSchemaToSchema(java.lang.String requestedSchema)
                                                throws JDBCException
Throws:
JDBCException

convertRequestedSchemaToCatalog

java.lang.String convertRequestedSchemaToCatalog(java.lang.String requestedSchema)
                                                 throws JDBCException
Throws:
JDBCException

supportsSchemas

boolean supportsSchemas()

generatePrimaryKeyName

java.lang.String generatePrimaryKeyName(java.lang.String tableName)

escapeSequenceName

java.lang.String escapeSequenceName(java.lang.String schemaName,
                                    java.lang.String sequenceName)

escapeViewName

java.lang.String escapeViewName(java.lang.String schemaName,
                                java.lang.String viewName)

isColumnAutoIncrement

boolean isColumnAutoIncrement(java.lang.String schemaName,
                              java.lang.String tableName,
                              java.lang.String columnName)
                              throws java.sql.SQLException,
                                     JDBCException
Throws:
java.sql.SQLException
JDBCException

getRunStatus

ChangeSet.RunStatus getRunStatus(ChangeSet changeSet)
                                 throws JDBCException,
                                        DatabaseHistoryException
Throws:
JDBCException
DatabaseHistoryException

getRanChangeSet

RanChangeSet getRanChangeSet(ChangeSet changeSet)
                             throws JDBCException,
                                    DatabaseHistoryException
Throws:
JDBCException
DatabaseHistoryException

markChangeSetAsRan

void markChangeSetAsRan(ChangeSet changeSet)
                        throws JDBCException
Throws:
JDBCException

markChangeSetAsReRan

void markChangeSetAsReRan(ChangeSet changeSet)
                          throws JDBCException
Throws:
JDBCException

getRanChangeSetList

java.util.List<RanChangeSet> getRanChangeSetList()
                                                 throws JDBCException
Throws:
JDBCException

getRanDate

java.util.Date getRanDate(ChangeSet changeSet)
                          throws JDBCException,
                                 DatabaseHistoryException
Throws:
JDBCException
DatabaseHistoryException

removeRanStatus

void removeRanStatus(ChangeSet changeSet)
                     throws JDBCException
Throws:
JDBCException

commit

void commit()
            throws JDBCException
Throws:
JDBCException

rollback

void rollback()
              throws JDBCException
Throws:
JDBCException

getSelectChangeLogLockSQL

SqlStatement getSelectChangeLogLockSQL()
                                       throws JDBCException
Throws:
JDBCException

getJdbcTemplate

JdbcTemplate getJdbcTemplate()

setJdbcTemplate

void setJdbcTemplate(JdbcTemplate template)

escapeStringForDatabase

java.lang.String escapeStringForDatabase(java.lang.String string)

close

void close()
           throws JDBCException
Throws:
JDBCException

createDatabaseSnapshot

DatabaseSnapshot createDatabaseSnapshot(java.lang.String schema,
                                        java.util.Set<DiffStatusListener> statusListeners)
                                        throws JDBCException
Throws:
JDBCException

supportsRestrictForeignKeys

boolean supportsRestrictForeignKeys()

escapeConstraintName

java.lang.String escapeConstraintName(java.lang.String constraintName)