Package org.jumpmind.symmetric.db
Class AbstractTriggerTemplate
java.lang.Object
org.jumpmind.symmetric.db.AbstractTriggerTemplate
- Direct Known Subclasses:
AseTriggerTemplate,Db2TriggerTemplate,DerbyTriggerTemplate,FirebirdTriggerTemplate,GenericTriggerTemplate,GreenplumTriggerTemplate,H2TriggerTemplate,HanaTriggerTemplate,HsqlDb2TriggerTemplate,HsqlDbTriggerTemplate,InformixTriggerTemplate,IngresSqlTriggerTemplate,InterbaseTriggerTemplate,MsSqlTriggerTemplate,MySqlTriggerTemplate,NuoDbTriggerTemplate,OracleTriggerTemplate,PostgreSqlTriggerTemplate,RaimaTriggerTemplate,RedshiftTriggerTemplate,SqlAnywhereTriggerTemplate,SqliteTriggerTemplate,TiberoTriggerTemplate,VoltDbTriggerTemplate
Responsible for generating dialect specific SQL such as trigger bodies and functions
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected Stringprotected Stringprotected Stringprotected Stringprotected Stringprotected Stringprotected Stringprotected Stringprotected Stringprotected Stringprotected Stringprotected Stringprotected intprotected Stringprotected final org.slf4j.Loggerprotected Stringprotected Stringprotected Stringprotected Stringprotected Stringprotected Stringprotected static final Stringprotected Stringprotected Stringprotected ISymmetricDialectprotected Stringprotected Stringprotected Stringprotected String -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedAbstractTriggerTemplate(ISymmetricDialect symmetricDialect) -
Method Summary
Modifier and TypeMethodDescriptionprotected StringadjustColumnTemplate(String template, int typeCode) protected StringaliasedPrimaryKeyJoin(String aliasOne, String aliasTwo, Column[] columns) protected StringaliasedPrimaryKeyJoinVar(String alias, String prefix, Column[] columns) protected StringbuildColumnNameString(String tableAlias, boolean quote, Trigger trigger, Column[] columns) protected AbstractTriggerTemplate.ColumnStringbuildColumnsString(String origTableAlias, String tableAlias, String columnPrefix, Table table, Column[] columns, DataEventType dml, boolean isOld, Channel channel, Trigger trigger) protected StringbuildKeyVariablesDeclare(Column[] columns, String prefix) protected StringbuildKeyVariablesString(Column[] columns, String prefix) protected StringbuildVirtualTableSql(String oldTriggerValue, String newTriggerValue, Column[] columns) protected StringcastDatetimeColumnToString(String columnName) createCsvDataSql(Trigger trigger, TriggerHistory triggerHistory, Table originalTable, Channel channel, String whereClause) createCsvPrimaryKeySql(Trigger trigger, TriggerHistory triggerHistory, Table table, Channel channel, String whereClause) createDdlTrigger(String tablePrefix, String defaultCatalog, String defaultSchema, String triggerName) createInitalLoadSql(Node node, TriggerRouter triggerRouter, Table originalTable, TriggerHistory triggerHistory, Channel channel, String overrideSelectSql) createPostDdlTriggerDDL(String tablePrefix, String triggerName) createPostTriggerDDL(DataEventType dml, Trigger trigger, TriggerHistory history, Channel channel, String tablePrefix, Table originalTable, String defaultCatalog, String defaultSchema) createTriggerDDL(DataEventType dml, Trigger trigger, TriggerHistory history, Channel channel, String tablePrefix, Table originalTable, String defaultCatalog, String defaultSchema) protected Stringprotected AbstractTriggerTemplate.ColumnStringfillOutColumnTemplate(String origTableAlias, String tableAlias, String columnPrefix, Table table, Column column, DataEventType dml, boolean isOld, Channel channel, Trigger trigger, boolean ignoreStreamLobs) protected StringgetChannelExpression(Trigger trigger, TriggerHistory history, Table originalTable) protected StringgetClobType(Table table) boolean[]getColumnPositionUsingTemplate(Table originalTable, TriggerHistory triggerHistory) protected StringgetColumnSize(Table table, Column column) protected Stringprotected StringgetDefaultTargetTableName(Trigger trigger, TriggerHistory history) protected Stringprotected StringgetPrimaryKeysUpdatedString(Table table) protected StringgetPrimaryKeyWhereString(String alias, Column[] columns) Deprecated.protected StringgetSchemaNameOnly(TriggerHistory triggerHistory) protected StringgetSourceTablePrefix(Table table) protected StringgetSourceTablePrefix(TriggerHistory triggerHistory) protected StringgetSourceTableSchema(Table table) protected StringgetSourceTableSchema(TriggerHistory triggerHistory) protected booleanprotected booleanprotected StringreplaceDefaultCatalog(String ddl, String defaultCatalog) protected StringreplaceDefaultSchema(String ddl, String defaultSchema) protected Stringprotected StringreplaceDefaultSchemaAndCatalog(String sql, String catalog, String schema) protected StringreplaceTemplateVariables(DataEventType dml, Trigger trigger, TriggerHistory history, Channel channel, String tablePrefix, Table originalTable, Table table, String defaultCatalog, String defaultSchema, String ddl) protected booleanprotected booleanvoidsetBooleanColumnTemplate(String booleanColumnTemplate) voidsetDateColumnTemplate(String dateColumnTemplate) voidsetImageColumnTemplate(String imageColumnTemplate) voidsetTimeColumnTemplate(String timeColumnTemplate) protected StringtoClobExpression(Table table) intbooleanWhenParameterConstants.INITIAL_LOAD_CONCAT_CSV_IN_SQL_ENABLEDis false most dialects are going to want to still use the trigger templates because they have type translation details (like geometry templates).protected booleanWhen INITIAL_LOAD_USE_COLUMN_TEMPLATES_ENABLED is true, column templates are used for all columns.
-
Field Details
-
log
protected final org.slf4j.Logger log -
ORIG_TABLE_ALIAS
- See Also:
-
sqlTemplates
-
emptyColumnTemplate
-
stringColumnTemplate
-
xmlColumnTemplate
-
arrayColumnTemplate
-
numberColumnTemplate
-
datetimeColumnTemplate
-
timeColumnTemplate
-
dateColumnTemplate
-
dateTimeWithTimeZoneColumnTemplate
-
dateTimeWithLocalTimeZoneColumnTemplate
-
geometryColumnTemplate
-
geographyColumnTemplate
-
clobColumnTemplate
-
blobColumnTemplate
-
longColumnTemplate
-
binaryColumnTemplate
-
imageColumnTemplate
-
wrappedBlobColumnTemplate
-
booleanColumnTemplate
-
triggerConcatCharacter
-
newTriggerValue
-
oldTriggerValue
-
oldColumnPrefix
-
newColumnPrefix
-
otherColumnTemplate
-
symmetricDialect
-
hashedValue
protected int hashedValue
-
-
Constructor Details
-
AbstractTriggerTemplate
-
-
Method Details
-
useTriggerTemplateForColumnTemplatesDuringInitialLoad
public boolean useTriggerTemplateForColumnTemplatesDuringInitialLoad()WhenParameterConstants.INITIAL_LOAD_CONCAT_CSV_IN_SQL_ENABLEDis false most dialects are going to want to still use the trigger templates because they have type translation details (like geometry templates). However, some dialects cannot handle the complex SQL generated (Firebird). We needed a way to tell the dialect that we want to select the columns straight up. -
useTriggerTemplateForColumnTemplatesDuringInitialLoad
When INITIAL_LOAD_USE_COLUMN_TEMPLATES_ENABLED is true, column templates are used for all columns. When false, only specific column types have been implemented to format data in code. -
createInitalLoadSql
public String createInitalLoadSql(Node node, TriggerRouter triggerRouter, Table originalTable, TriggerHistory triggerHistory, Channel channel, String overrideSelectSql) -
getColumnPositionUsingTemplate
-
castDatetimeColumnToString
-
getSourceTablePrefix
-
getSourceTableSchema
-
getSourceTablePrefix
-
getSourceTableSchema
-
getSchemaNameOnly
-
replaceDefaultSchemaAndCatalog
-
replaceDefaultSchemaAndCatalog
-
createCsvDataSql
-
createCsvPrimaryKeySql
-
createTriggerDDL
public String createTriggerDDL(DataEventType dml, Trigger trigger, TriggerHistory history, Channel channel, String tablePrefix, Table originalTable, String defaultCatalog, String defaultSchema) -
createPostTriggerDDL
public String createPostTriggerDDL(DataEventType dml, Trigger trigger, TriggerHistory history, Channel channel, String tablePrefix, Table originalTable, String defaultCatalog, String defaultSchema) -
createDdlTrigger
-
createPostDdlTriggerDDL
-
getDefaultTargetTableName
-
replaceTemplateVariables
-
toClobExpression
-
getClobType
-
getChannelExpression
-
buildVirtualTableSql
-
eval
-
aliasedPrimaryKeyJoin
-
aliasedPrimaryKeyJoinVar
-
getPrimaryKeyWhereString
Deprecated.Specific to Derby. Needs to be removed when the initial load is refactored to concat in Java vs. in SQL -
requiresWrappedBlobTemplateForBlobType
protected boolean requiresWrappedBlobTemplateForBlobType() -
requiresEmptyLobTemplateForDeletes
protected boolean requiresEmptyLobTemplateForDeletes() -
buildColumnNameString
-
buildColumnsString
protected AbstractTriggerTemplate.ColumnString buildColumnsString(String origTableAlias, String tableAlias, String columnPrefix, Table table, Column[] columns, DataEventType dml, boolean isOld, Channel channel, Trigger trigger) -
fillOutColumnTemplate
protected AbstractTriggerTemplate.ColumnString fillOutColumnTemplate(String origTableAlias, String tableAlias, String columnPrefix, Table table, Column column, DataEventType dml, boolean isOld, Channel channel, Trigger trigger, boolean ignoreStreamLobs) -
getColumnSize
-
getOtherColumnTemplate
-
noTimeColumnTemplate
protected boolean noTimeColumnTemplate() -
noDateColumnTemplate
protected boolean noDateColumnTemplate() -
adjustColumnTemplate
-
buildKeyVariablesDeclare
-
buildKeyVariablesString
-
getClobColumnTemplate
-
setBooleanColumnTemplate
-
getNewTriggerValue
-
getOldTriggerValue
-
getBlobColumnTemplate
-
getWrappedBlobColumnTemplate
-
replaceDefaultSchema
-
replaceDefaultCatalog
-
getTimeColumnTemplate
-
setTimeColumnTemplate
-
getDateColumnTemplate
-
setDateColumnTemplate
-
getImageColumnTemplate
-
setImageColumnTemplate
-
toHashedValue
public int toHashedValue() -
replaceOracleQueryHint
-
getHasPrimaryKeysDefinedString
-
getPrimaryKeysUpdatedString
-
getCreateTriggerString
-