liquibase.database.core
Class MSSQLDatabase

java.lang.Object
  extended by liquibase.database.AbstractDatabase
      extended by liquibase.database.core.MSSQLDatabase
All Implemented Interfaces:
Database, DatabaseObject, PrioritizedService

public class MSSQLDatabase
extends AbstractDatabase

Encapsulates MS-SQL database support.


Field Summary
static java.lang.String PRODUCT_NAME
           
protected  java.util.Set<java.lang.String> systemTablesAndViews
           
 
Fields inherited from class liquibase.database.AbstractDatabase
currentDateTimeFunction, databaseFunctions, defaultAutoIncrementBy, defaultAutoIncrementStartWith
 
Fields inherited from interface liquibase.servicelocator.PrioritizedService
PRIORITY_DATABASE, PRIORITY_DEFAULT
 
Constructor Summary
MSSQLDatabase()
           
 
Method Summary
 java.lang.String convertRequestedSchemaToCatalog(java.lang.String requestedSchema)
           
 java.lang.String convertRequestedSchemaToSchema(java.lang.String requestedSchema)
           
 java.lang.String escapeDatabaseObject(java.lang.String objectName)
           
 java.lang.String escapeIndexName(java.lang.String schemaName, java.lang.String indexName)
           
 java.lang.String generateDefaultConstraintName(java.lang.String tableName, java.lang.String columnName)
           
protected  java.lang.String getAutoIncrementByClause()
           
protected  java.lang.String getAutoIncrementClause()
           
protected  java.lang.String getAutoIncrementStartWithClause()
           
 java.lang.String getConcatSql(java.lang.String... values)
          Returns SQL to concat the passed values.
 java.lang.String getCurrentDateTimeFunction()
          Returns database-specific function for generating the current date/time.
 java.lang.String getDateLiteral(java.lang.String isoDate)
          Return a date literal with the same value as a string formatted using ISO 8601.
 java.lang.String getDefaultCatalogName()
           
protected  java.lang.String getDefaultDatabaseSchemaName()
           
 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()
           
 int getPriority()
           
 java.util.Set<java.lang.String> getSystemTablesAndViews()
          Returns system (undroppable) tables and views.
 java.lang.String getTypeName()
          Returns an all-lower-case short name of the product.
 java.lang.String getViewDefinition(java.lang.String schemaName, java.lang.String viewName)
           
 boolean isCorrectDatabaseImplementation(DatabaseConnection conn)
          Is this AbstractDatabase subclass the correct one to use for the given connection.
 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 viewName)
           
 boolean supportsInitiallyDeferrableColumns()
          Returns whether this database support initially deferrable columns.
 boolean supportsRestrictForeignKeys()
           
 boolean supportsSequences()
          Does the database type support sequence.
 boolean supportsTablespaces()
           
 
Methods inherited from class liquibase.database.AbstractDatabase
canCreateChangeLogTable, checkDatabaseChangeLogLockTable, checkDatabaseChangeLogTable, close, commit, disableForeignKeyChecks, doesTagExist, dropDatabaseObjects, enableForeignKeyChecks, equals, escapeColumnName, escapeColumnNameList, escapeConstraintName, escapeSequenceName, escapeStringForDatabase, escapeTableName, escapeViewName, execute, executeRollbackStatements, executeStatements, generateAutoIncrementBy, generateAutoIncrementStartWith, generatePrimaryKeyName, getAutoCommitMode, getAutoIncrementClause, getAutoIncrementClosing, getAutoIncrementOpening, getConnection, getContainingObjects, getDatabaseChangeLogLockTableName, getDatabaseChangeLogTableName, getDatabaseFunctions, getDatabaseMajorVersion, getDatabaseMinorVersion, getDatabaseProductName, getDatabaseProductVersion, getDateLiteral, getDateLiteral, getDateTimeLiteral, getLineComment, getLiquibaseSchemaName, getNextChangeSetSequenceValue, getRanChangeSet, getRanChangeSetList, getRanDate, getRunStatus, getTable, getTimeLiteral, hasDatabaseChangeLogLockTable, hasDatabaseChangeLogTable, hashCode, isAutoCommit, isDateOnly, isDateTime, isLiquibaseTable, isLocalDatabase, isReservedWord, isTimeOnly, markChangeSetExecStatus, parseDate, removeRanStatus, requiresPassword, requiresUsername, reset, rollback, saveRollbackStatement, saveStatements, setAutoCommit, setCanCacheLiquibaseTableInfo, setConnection, setCurrentDateTimeFunction, setDatabaseChangeLogLockTableName, setDatabaseChangeLogTableName, setDefaultSchemaName, shouldQuoteValue, supportsAutoIncrement, supportsDDLInTransaction, supportsDropTableCascadeConstraints, supportsForeignKeyDisable, supportsSchemas, tag, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

PRODUCT_NAME

public static final java.lang.String PRODUCT_NAME
See Also:
Constant Field Values

systemTablesAndViews

protected java.util.Set<java.lang.String> systemTablesAndViews
Constructor Detail

MSSQLDatabase

public MSSQLDatabase()
Method Detail

getTypeName

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


getPriority

public int getPriority()

getSystemTablesAndViews

public java.util.Set<java.lang.String> getSystemTablesAndViews()
Description copied from class: AbstractDatabase
Returns system (undroppable) tables and views.

Overrides:
getSystemTablesAndViews in class AbstractDatabase

supportsInitiallyDeferrableColumns

public boolean supportsInitiallyDeferrableColumns()
Description copied from interface: Database
Returns whether this database support initially deferrable columns.


supportsSequences

public boolean supportsSequences()
Description copied from class: AbstractDatabase
Does the database type support sequence.

Specified by:
supportsSequences in interface Database
Overrides:
supportsSequences in class AbstractDatabase

isCorrectDatabaseImplementation

public boolean isCorrectDatabaseImplementation(DatabaseConnection conn)
                                        throws DatabaseException
Description copied from interface: Database
Is this AbstractDatabase subclass the correct one to use for the given connection.

Throws:
DatabaseException

getDefaultDriver

public java.lang.String getDefaultDriver(java.lang.String url)
Description copied from interface: Database
If this database understands the given url, return the default driver class name. Otherwise return null.


getCurrentDateTimeFunction

public java.lang.String getCurrentDateTimeFunction()
Description copied from interface: Database
Returns database-specific function for generating the current date/time.


getAutoIncrementClause

protected java.lang.String getAutoIncrementClause()
Overrides:
getAutoIncrementClause in class AbstractDatabase

getAutoIncrementStartWithClause

protected java.lang.String getAutoIncrementStartWithClause()
Overrides:
getAutoIncrementStartWithClause in class AbstractDatabase

getAutoIncrementByClause

protected java.lang.String getAutoIncrementByClause()
Overrides:
getAutoIncrementByClause in class AbstractDatabase

getDefaultDatabaseSchemaName

protected java.lang.String getDefaultDatabaseSchemaName()
                                                 throws DatabaseException
Overrides:
getDefaultDatabaseSchemaName in class AbstractDatabase
Throws:
DatabaseException

getDefaultCatalogName

public java.lang.String getDefaultCatalogName()
                                       throws DatabaseException
Specified by:
getDefaultCatalogName in interface Database
Overrides:
getDefaultCatalogName in class AbstractDatabase
Throws:
DatabaseException

getConcatSql

public java.lang.String getConcatSql(java.lang.String... values)
Description copied from interface: Database
Returns SQL to concat the passed values.

Specified by:
getConcatSql in interface Database
Overrides:
getConcatSql in class AbstractDatabase

escapeIndexName

public java.lang.String escapeIndexName(java.lang.String schemaName,
                                        java.lang.String indexName)
Specified by:
escapeIndexName in interface Database
Overrides:
escapeIndexName in class AbstractDatabase

supportsTablespaces

public boolean supportsTablespaces()

isSystemTable

public boolean isSystemTable(java.lang.String catalogName,
                             java.lang.String schemaName,
                             java.lang.String tableName)
Specified by:
isSystemTable in interface Database
Overrides:
isSystemTable in class AbstractDatabase

isSystemView

public boolean isSystemView(java.lang.String catalogName,
                            java.lang.String schemaName,
                            java.lang.String viewName)
Specified by:
isSystemView in interface Database
Overrides:
isSystemView in class AbstractDatabase

generateDefaultConstraintName

public java.lang.String generateDefaultConstraintName(java.lang.String tableName,
                                                      java.lang.String columnName)

escapeDatabaseObject

public java.lang.String escapeDatabaseObject(java.lang.String objectName)
Specified by:
escapeDatabaseObject in interface Database
Overrides:
escapeDatabaseObject in class AbstractDatabase

convertRequestedSchemaToCatalog

public java.lang.String convertRequestedSchemaToCatalog(java.lang.String requestedSchema)
                                                 throws DatabaseException
Specified by:
convertRequestedSchemaToCatalog in interface Database
Overrides:
convertRequestedSchemaToCatalog in class AbstractDatabase
Throws:
DatabaseException

convertRequestedSchemaToSchema

public java.lang.String convertRequestedSchemaToSchema(java.lang.String requestedSchema)
                                                throws DatabaseException
Specified by:
convertRequestedSchemaToSchema in interface Database
Overrides:
convertRequestedSchemaToSchema in class AbstractDatabase
Throws:
DatabaseException

getDateLiteral

public java.lang.String getDateLiteral(java.lang.String isoDate)
Description copied from class: AbstractDatabase
Return 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:
getDateLiteral in interface Database
Overrides:
getDateLiteral in class AbstractDatabase

supportsRestrictForeignKeys

public boolean supportsRestrictForeignKeys()
Specified by:
supportsRestrictForeignKeys in interface Database
Overrides:
supportsRestrictForeignKeys in class AbstractDatabase

getDefaultSchemaName

public java.lang.String getDefaultSchemaName()
Specified by:
getDefaultSchemaName in interface Database
Overrides:
getDefaultSchemaName in class AbstractDatabase

getViewDefinition

public java.lang.String getViewDefinition(java.lang.String schemaName,
                                          java.lang.String viewName)
                                   throws DatabaseException
Specified by:
getViewDefinition in interface Database
Overrides:
getViewDefinition in class AbstractDatabase
Throws:
DatabaseException


Copyright © 2011 Liquibase.org. All Rights Reserved.