Package org.jumpmind.symmetric.db
Class AbstractSymmetricDialect
java.lang.Object
org.jumpmind.symmetric.db.AbstractSymmetricDialect
- All Implemented Interfaces:
ISymmetricDialect
- Direct Known Subclasses:
AbstractEmbeddedSymmetricDialect
,AseSymmetricDialect
,Db2SymmetricDialect
,DerbySymmetricDialect
,FirebirdSymmetricDialect
,GenericSymmetricDialect
,HanaSymmetricDialect
,HsqlDb2SymmetricDialect
,InformixSymmetricDialect
,IngresSymmetricDialect
,InterbaseSymmetricDialect
,MsSqlSymmetricDialect
,MySqlSymmetricDialect
,NuoDbSymmetricDialect
,OracleSymmetricDialect
,PostgreSqlSymmetricDialect
,RaimaSymmetricDialect
,RedshiftSymmetricDialect
,SqlAnywhereSymmetricDialect
,SqliteSymmetricDialect
,VoltDbSymmetricDialect
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected int
protected int
protected String
protected String
protected String
protected String
protected IExtensionService
protected boolean
protected final org.slf4j.Logger
static final int
protected IParameterService
protected IDatabasePlatform
protected boolean
protected Boolean
protected boolean
protected boolean
protected boolean
protected String
protected ISymmetricDialect
protected AbstractTriggerTemplate
-
Constructor Summary
ConstructorsConstructorDescriptionAbstractSymmetricDialect
(IParameterService parameterService, IDatabasePlatform platform) -
Method Summary
Modifier and TypeMethodDescriptionboolean
areDatabaseTransactionsPendingSince
(long time) protected void
boolean
void
protected void
close
(ISqlTransaction transaction) createCsvDataSql
(Trigger trigger, TriggerHistory triggerHistory, Channel channel, String whereClause) createCsvPrimaryKeySql
(Trigger trigger, TriggerHistory triggerHistory, Channel channel, String whereClause) void
createDdlTrigger
(String tablePrefix, StringBuilder sqlBuffer, String triggerName, String runtimeCatalog, String runtimeSchema) createInitialLoadSqlFor
(Node node, TriggerRouter trigger, Table table, TriggerHistory triggerHistory, Channel channel, String overrideSelectSql) boolean
createOrAlterTablesIfNecessary
(String... tableNames) protected String
createPostDdlTriggerDDL
(String tablePrefix, String triggerName) protected String
createPostTriggerDDL
(DataEventType dml, Trigger trigger, TriggerHistory hist, Channel channel, String tablePrefix, Table table) createPurgeSqlFor
(Node node, TriggerRouter triggerRouter, TriggerHistory triggerHistory) createPurgeSqlFor
(Node node, TriggerRouter triggerRouter, TriggerHistory triggerHistory, List<TransformService.TransformTableNodeGroupLink> transforms) createPurgeSqlFor
(Node node, TriggerRouter triggerRouter, TriggerHistory triggerHistory, List<TransformService.TransformTableNodeGroupLink> transforms, String deleteSql) createPurgeSqlForMultipleTables
(Node node, TriggerRouter triggerRouter, TriggerHistory triggerHistory, List<TransformService.TransformTableNodeGroupLink> transforms, String deleteSql) void
protected void
void
createTrigger
(StringBuilder sqlBuffer, DataEventType dml, Trigger trigger, TriggerHistory hist, Channel channel, String tablePrefix, Table table) void
createTrigger
(StringBuilder sqlBuffer, DataEventType dml, Trigger trigger, TriggerHistory hist, Channel channel, String tablePrefix, Table table, ISqlTransaction transaction) void
disableSyncTriggers
(ISqlTransaction transaction) Deprecated.boolean
doesDdlTriggerExist
(String catalogName, String schema, String triggerName) final boolean
doesTriggerExist
(StringBuilder sqlBuffer, String catalogName, String schema, String tableName, String triggerName) protected abstract boolean
doesTriggerExistOnPlatform
(StringBuilder seqlBuffer, String catalogName, String schema, String tableName, String triggerName) abstract void
void
boolean
abstract BinaryEncoding
boolean[]
getColumnPositionUsingTemplate
(Table originalTable, TriggerHistory triggerHistory) long
getCurrentSequenceValue
(SequenceIdentifier identifier) long
final String
getDataHasChangedCondition
(Trigger trigger) protected String
protected String
getDropTriggerSql
(StringBuilder sqlBuffer, String catalogName, String schemaName, String triggerName, String tableName) getInitialLoadTwoPassLobLengthSql
(Column column, boolean isFirstPass) getInitialLoadTwoPassLobSql
(String sql, Table table, boolean isFirstPass) int
int
int
getName()
getSequenceKeyName
(SequenceIdentifier identifier) getSequenceName
(SequenceIdentifier identifier) int
getTargetDialect
(String tableName) getTargetPlatform
(String tableName) getTransactionId
(ISqlTransaction transaction) getTransactionTriggerExpression
(String defaultCatalog, String defaultSchema, Trigger trigger) void
long
insertWithGeneratedKey
(String sql, SequenceIdentifier sequenceId) long
insertWithGeneratedKey
(String sql, SequenceIdentifier identifier, Object... args) protected void
install
(String sql, String objectName, StringBuilder ddl) protected boolean
boolean
boolean
boolean
isInitialLoadTwoPassLob
(Table table) boolean
protected final void
logSql
(String sql, StringBuilder sqlBuffer) massageDataExtractionSql
(String sql, boolean isContainsBigLob) massageForLob
(String sql, boolean isContainsBigLob) protected Database
boolean
Column[]
orderColumns
(String[] columnNames, Table table) Deprecated.protected void
postCreateDdlTrigger
(ISqlTransaction transaction, String tablePrefix, StringBuilder sqlBuffer, String triggerName) protected void
postCreateTrigger
(ISqlTransaction transaction, StringBuilder sqlBuffer, DataEventType dml, Trigger trigger, TriggerHistory hist, Channel channel, String tablePrefix, Table table) protected void
prefixConfigDatabase
(Database targetTables) preProcessTriggerSqlClause
(String sqlClause) protected Database
readDatabaseFromXml
(String resourceName) void
removeDdlTrigger
(StringBuilder sqlBuffer, String catalogName, String schemaName, String triggerName) void
removeTrigger
(StringBuilder sqlBuffer, String catalogName, String schemaName, String triggerName, String tableName) void
removeTrigger
(StringBuilder sqlBuffer, String catalogName, String schemaName, String triggerName, String tableName, ISqlTransaction transaction) protected String
replaceTokens
(String sql, String objectName) boolean
void
setExtensionService
(IExtensionService extensionService) void
setTargetDialect
(ISymmetricDialect targetDialect) boolean
boolean
boolean
boolean
boolean
boolean
boolean
protected String
switchCatalogForTriggerInstall
(String catalog, ISqlTransaction transaction) void
truncateTable
(String tableName) protected void
protected void
uninstall
(String sql, String objectName, StringBuilder ddl) void
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.jumpmind.symmetric.db.ISymmetricDialect
cleanDatabase, disableSyncTriggers, enableSyncTriggers, getSyncTriggersExpression
-
Field Details
-
log
protected final org.slf4j.Logger log -
MAX_SYMMETRIC_SUPPORTED_TRIGGER_SIZE
public static final int MAX_SYMMETRIC_SUPPORTED_TRIGGER_SIZE- See Also:
-
platform
-
targetDialect
-
triggerTemplate
-
parameterService
-
extensionService
-
supportsGetGeneratedKeys
-
databaseName
-
driverVersion
-
driverName
-
databaseMajorVersion
protected int databaseMajorVersion -
databaseMinorVersion
protected int databaseMinorVersion -
databaseProductVersion
-
sqlKeywords
-
supportsTransactionViews
protected boolean supportsTransactionViews -
supportsSubselectsInDelete
protected boolean supportsSubselectsInDelete -
supportsSubselectsInUpdate
protected boolean supportsSubselectsInUpdate -
supportsDdlTriggers
protected boolean supportsDdlTriggers -
sqlReplacementTokens
-
tablePrefixLowerCase
-
isSpatialTypesEnabled
protected boolean isSpatialTypesEnabled
-
-
Constructor Details
-
AbstractSymmetricDialect
-
-
Method Details
-
getSymmetricDdlChanges
- Specified by:
getSymmetricDdlChanges
in interfaceISymmetricDialect
-
requiresAutoCommitFalseToSetFetchSize
public boolean requiresAutoCommitFalseToSetFetchSize() -
buildSqlReplacementTokens
protected void buildSqlReplacementTokens() -
getSqlReplacementTokens
- Specified by:
getSqlReplacementTokens
in interfaceISymmetricDialect
-
getMaxTriggerNameLength
public int getMaxTriggerNameLength()- Specified by:
getMaxTriggerNameLength
in interfaceISymmetricDialect
-
verifyDatabaseIsCompatible
public void verifyDatabaseIsCompatible()- Specified by:
verifyDatabaseIsCompatible
in interfaceISymmetricDialect
-
initTablesAndDatabaseObjects
public void initTablesAndDatabaseObjects()- Specified by:
initTablesAndDatabaseObjects
in interfaceISymmetricDialect
-
replaceTokens
-
installed
-
install
-
uninstall
-
uninstall
-
dropTablesAndDatabaseObjects
public void dropTablesAndDatabaseObjects()- Specified by:
dropTablesAndDatabaseObjects
in interfaceISymmetricDialect
-
doesTriggerExist
public final boolean doesTriggerExist(StringBuilder sqlBuffer, String catalogName, String schema, String tableName, String triggerName) - Specified by:
doesTriggerExist
in interfaceISymmetricDialect
-
doesDdlTriggerExist
- Specified by:
doesDdlTriggerExist
in interfaceISymmetricDialect
-
dropRequiredDatabaseObjects
public abstract void dropRequiredDatabaseObjects()- Specified by:
dropRequiredDatabaseObjects
in interfaceISymmetricDialect
-
createRequiredDatabaseObjects
public void createRequiredDatabaseObjects()- Specified by:
createRequiredDatabaseObjects
in interfaceISymmetricDialect
-
getCreateRequiredDatabaseObjectsDDL
- Specified by:
getCreateRequiredDatabaseObjectsDDL
in interfaceISymmetricDialect
-
createRequiredDatabaseObjectsImpl
-
getBinaryEncoding
- Specified by:
getBinaryEncoding
in interfaceISymmetricDialect
-
doesTriggerExistOnPlatform
protected abstract boolean doesTriggerExistOnPlatform(StringBuilder seqlBuffer, String catalogName, String schema, String tableName, String triggerName) -
getTransactionTriggerExpression
public String getTransactionTriggerExpression(String defaultCatalog, String defaultSchema, Trigger trigger) - Specified by:
getTransactionTriggerExpression
in interfaceISymmetricDialect
-
getTransactionId
- Specified by:
getTransactionId
in interfaceISymmetricDialect
-
createInitialLoadSqlFor
public String createInitialLoadSqlFor(Node node, TriggerRouter trigger, Table table, TriggerHistory triggerHistory, Channel channel, String overrideSelectSql) - Specified by:
createInitialLoadSqlFor
in interfaceISymmetricDialect
-
getColumnPositionUsingTemplate
- Specified by:
getColumnPositionUsingTemplate
in interfaceISymmetricDialect
-
createPurgeSqlFor
public String createPurgeSqlFor(Node node, TriggerRouter triggerRouter, TriggerHistory triggerHistory) - Specified by:
createPurgeSqlFor
in interfaceISymmetricDialect
-
createPurgeSqlFor
public String createPurgeSqlFor(Node node, TriggerRouter triggerRouter, TriggerHistory triggerHistory, List<TransformService.TransformTableNodeGroupLink> transforms) - Specified by:
createPurgeSqlFor
in interfaceISymmetricDialect
-
createPurgeSqlFor
public String createPurgeSqlFor(Node node, TriggerRouter triggerRouter, TriggerHistory triggerHistory, List<TransformService.TransformTableNodeGroupLink> transforms, String deleteSql) - Specified by:
createPurgeSqlFor
in interfaceISymmetricDialect
-
createPurgeSqlForMultipleTables
public List<String> createPurgeSqlForMultipleTables(Node node, TriggerRouter triggerRouter, TriggerHistory triggerHistory, List<TransformService.TransformTableNodeGroupLink> transforms, String deleteSql) - Specified by:
createPurgeSqlForMultipleTables
in interfaceISymmetricDialect
-
createCsvDataSql
public String createCsvDataSql(Trigger trigger, TriggerHistory triggerHistory, Channel channel, String whereClause) - Specified by:
createCsvDataSql
in interfaceISymmetricDialect
-
createCsvPrimaryKeySql
public String createCsvPrimaryKeySql(Trigger trigger, TriggerHistory triggerHistory, Channel channel, String whereClause) - Specified by:
createCsvPrimaryKeySql
in interfaceISymmetricDialect
-
getSqlKeywords
- Specified by:
getSqlKeywords
in interfaceISymmetricDialect
-
getDropTriggerSql
-
removeTrigger
public void removeTrigger(StringBuilder sqlBuffer, String catalogName, String schemaName, String triggerName, String tableName) - Specified by:
removeTrigger
in interfaceISymmetricDialect
-
removeTrigger
public void removeTrigger(StringBuilder sqlBuffer, String catalogName, String schemaName, String triggerName, String tableName, ISqlTransaction transaction) - Specified by:
removeTrigger
in interfaceISymmetricDialect
-
removeDdlTrigger
public void removeDdlTrigger(StringBuilder sqlBuffer, String catalogName, String schemaName, String triggerName) - Specified by:
removeDdlTrigger
in interfaceISymmetricDialect
-
logSql
-
createTrigger
public void createTrigger(StringBuilder sqlBuffer, DataEventType dml, Trigger trigger, TriggerHistory hist, Channel channel, String tablePrefix, Table table) - Specified by:
createTrigger
in interfaceISymmetricDialect
-
createTrigger
public void createTrigger(StringBuilder sqlBuffer, DataEventType dml, Trigger trigger, TriggerHistory hist, Channel channel, String tablePrefix, Table table, ISqlTransaction transaction) - Specified by:
createTrigger
in interfaceISymmetricDialect
-
postCreateTrigger
protected void postCreateTrigger(ISqlTransaction transaction, StringBuilder sqlBuffer, DataEventType dml, Trigger trigger, TriggerHistory hist, Channel channel, String tablePrefix, Table table) -
switchCatalogForTriggerInstall
-
createPostTriggerDDL
protected String createPostTriggerDDL(DataEventType dml, Trigger trigger, TriggerHistory hist, Channel channel, String tablePrefix, Table table) -
createDdlTrigger
public void createDdlTrigger(String tablePrefix, StringBuilder sqlBuffer, String triggerName, String runtimeCatalog, String runtimeSchema) - Specified by:
createDdlTrigger
in interfaceISymmetricDialect
-
postCreateDdlTrigger
protected void postCreateDdlTrigger(ISqlTransaction transaction, String tablePrefix, StringBuilder sqlBuffer, String triggerName) -
createPostDdlTriggerDDL
-
getCreateSymmetricDDL
- Specified by:
getCreateSymmetricDDL
in interfaceISymmetricDialect
-
prefixConfigDatabase
-
createOrAlterTablesIfNecessary
- Specified by:
createOrAlterTablesIfNecessary
in interfaceISymmetricDialect
-
readSymmetricSchemaFromXml
- Specified by:
readSymmetricSchemaFromXml
in interfaceISymmetricDialect
-
readSymmetricSchemaFromDatabase
-
readDatabaseFromXml
- Throws:
IOException
-
merge
-
getPlatform
- Specified by:
getPlatform
in interfaceISymmetricDialect
-
getTargetPlatform
- Specified by:
getTargetPlatform
in interfaceISymmetricDialect
-
getTargetPlatform
- Specified by:
getTargetPlatform
in interfaceISymmetricDialect
-
getName
- Specified by:
getName
in interfaceISymmetricDialect
-
getVersion
- Specified by:
getVersion
in interfaceISymmetricDialect
-
getMajorVersion
public int getMajorVersion()- Specified by:
getMajorVersion
in interfaceISymmetricDialect
-
getMinorVersion
public int getMinorVersion()- Specified by:
getMinorVersion
in interfaceISymmetricDialect
-
getProductVersion
- Specified by:
getProductVersion
in interfaceISymmetricDialect
-
supportsTransactionViews
public boolean supportsTransactionViews()- Specified by:
supportsTransactionViews
in interfaceISymmetricDialect
-
supportsSubselectsInDelete
public boolean supportsSubselectsInDelete()- Specified by:
supportsSubselectsInDelete
in interfaceISymmetricDialect
-
supportsSubselectsInUpdate
public boolean supportsSubselectsInUpdate()- Specified by:
supportsSubselectsInUpdate
in interfaceISymmetricDialect
-
supportsDdlTriggers
public boolean supportsDdlTriggers()- Specified by:
supportsDdlTriggers
in interfaceISymmetricDialect
-
insertWithGeneratedKey
- Specified by:
insertWithGeneratedKey
in interfaceISymmetricDialect
-
insertWithGeneratedKey
- Specified by:
insertWithGeneratedKey
in interfaceISymmetricDialect
-
getSequenceName
- Specified by:
getSequenceName
in interfaceISymmetricDialect
-
getSequenceKeyName
- Specified by:
getSequenceKeyName
in interfaceISymmetricDialect
-
getCurrentSequenceValue
- Specified by:
getCurrentSequenceValue
in interfaceISymmetricDialect
-
orderColumns
Deprecated.- Specified by:
orderColumns
in interfaceISymmetricDialect
-
disableSyncTriggers
Deprecated.- Specified by:
disableSyncTriggers
in interfaceISymmetricDialect
-
supportsTransactionId
public boolean supportsTransactionId()- Specified by:
supportsTransactionId
in interfaceISymmetricDialect
-
isBlobSyncSupported
public boolean isBlobSyncSupported()- Specified by:
isBlobSyncSupported
in interfaceISymmetricDialect
-
isClobSyncSupported
public boolean isClobSyncSupported()- Specified by:
isClobSyncSupported
in interfaceISymmetricDialect
-
isTransactionIdOverrideSupported
public boolean isTransactionIdOverrideSupported()- Specified by:
isTransactionIdOverrideSupported
in interfaceISymmetricDialect
-
getEngineName
- Specified by:
getEngineName
in interfaceISymmetricDialect
-
supportsOpenCursorsAcrossCommit
public boolean supportsOpenCursorsAcrossCommit()- Specified by:
supportsOpenCursorsAcrossCommit
in interfaceISymmetricDialect
-
getInitialLoadTableAlias
- Specified by:
getInitialLoadTableAlias
in interfaceISymmetricDialect
-
preProcessTriggerSqlClause
- Specified by:
preProcessTriggerSqlClause
in interfaceISymmetricDialect
-
truncateTable
- Specified by:
truncateTable
in interfaceISymmetricDialect
-
areDatabaseTransactionsPendingSince
public boolean areDatabaseTransactionsPendingSince(long time) - Specified by:
areDatabaseTransactionsPendingSince
in interfaceISymmetricDialect
-
getEarliestTransactionStartTime
- Specified by:
getEarliestTransactionStartTime
in interfaceISymmetricDialect
-
getDatabaseTimeSQL
- Specified by:
getDatabaseTimeSQL
in interfaceISymmetricDialect
-
getDatabaseTime
public long getDatabaseTime()- Specified by:
getDatabaseTime
in interfaceISymmetricDialect
-
getSourceNodeExpression
- Specified by:
getSourceNodeExpression
in interfaceISymmetricDialect
-
getDataHasChangedCondition
- Specified by:
getDataHasChangedCondition
in interfaceISymmetricDialect
-
getDbSpecificDataHasChangedCondition
-
needsToSelectLobData
public boolean needsToSelectLobData()- Specified by:
needsToSelectLobData
in interfaceISymmetricDialect
-
canGapsOccurInCapturedDataIds
public boolean canGapsOccurInCapturedDataIds()- Specified by:
canGapsOccurInCapturedDataIds
in interfaceISymmetricDialect
-
massageDataExtractionSql
- Specified by:
massageDataExtractionSql
in interfaceISymmetricDialect
-
getDriverName
- Specified by:
getDriverName
in interfaceISymmetricDialect
-
getDriverVersion
- Specified by:
getDriverVersion
in interfaceISymmetricDialect
-
massageForLob
- Specified by:
massageForLob
in interfaceISymmetricDialect
-
isInitialLoadTwoPassLob
- Specified by:
isInitialLoadTwoPassLob
in interfaceISymmetricDialect
-
getInitialLoadTwoPassLobSql
- Specified by:
getInitialLoadTwoPassLobSql
in interfaceISymmetricDialect
-
getInitialLoadTwoPassLobLengthSql
-
escapesTemplatesForDatabaseInserts
public boolean escapesTemplatesForDatabaseInserts()- Specified by:
escapesTemplatesForDatabaseInserts
in interfaceISymmetricDialect
-
getMasterCollation
- Specified by:
getMasterCollation
in interfaceISymmetricDialect
-
supportsBatchUpdates
public boolean supportsBatchUpdates()- Specified by:
supportsBatchUpdates
in interfaceISymmetricDialect
-
cleanupTriggers
public void cleanupTriggers()- Specified by:
cleanupTriggers
in interfaceISymmetricDialect
-
getTriggerTemplate
- Specified by:
getTriggerTemplate
in interfaceISymmetricDialect
-
close
-
getTablePrefix
- Specified by:
getTablePrefix
in interfaceISymmetricDialect
-
getTemplateNumberPrecisionSpec
- Specified by:
getTemplateNumberPrecisionSpec
in interfaceISymmetricDialect
-
getSqlTypeForIds
public int getSqlTypeForIds()- Specified by:
getSqlTypeForIds
in interfaceISymmetricDialect
-
getParameterService
- Specified by:
getParameterService
in interfaceISymmetricDialect
-
setExtensionService
- Specified by:
setExtensionService
in interfaceISymmetricDialect
-
getSymTablePermissions
- Specified by:
getSymTablePermissions
in interfaceISymmetricDialect
-
getTargetDialect
- Specified by:
getTargetDialect
in interfaceISymmetricDialect
-
getTargetDialect
- Specified by:
getTargetDialect
in interfaceISymmetricDialect
-
setTargetDialect
- Specified by:
setTargetDialect
in interfaceISymmetricDialect
-
getSyncTriggersOnIncomingExpression
- Specified by:
getSyncTriggersOnIncomingExpression
in interfaceISymmetricDialect
-