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
,VoltDbTriggerTemplate
Responsible for generating dialect specific SQL such as trigger bodies and functions
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected String
protected String
protected String
protected String
protected String
protected String
protected String
protected String
protected String
protected String
protected String
protected String
protected int
protected String
protected final org.slf4j.Logger
protected String
protected String
protected String
protected String
protected String
protected String
protected String
protected static final String
protected String
protected String
protected ISymmetricDialect
protected String
protected String
protected String
protected String
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
AbstractTriggerTemplate
(ISymmetricDialect symmetricDialect) -
Method Summary
Modifier and TypeMethodDescriptionprotected String
adjustColumnTemplate
(String template, int typeCode) protected String
aliasedPrimaryKeyJoin
(String aliasOne, String aliasTwo, Column[] columns) Builds join with all primary key columns pairs prefixed by the new and old aliases.protected String
aliasedPrimaryKeyJoinVar
(String alias, String prefix, Column[] columns) Builds join with all primary key columns paired with prefixed parameter values.protected String
buildColumnNameString
(String tableAlias, boolean quote, Trigger trigger, Column[] columns) protected AbstractTriggerTemplate.ColumnString
buildColumnsString
(String origTableAlias, String tableAlias, String columnPrefix, Table table, Column[] columns, DataEventType dml, boolean isOld, Channel channel, Trigger trigger) protected String
buildKeyVariablesDeclare
(Column[] columns, String prefix) protected String
buildKeyVariablesString
(Column[] columns, String prefix) protected String
buildVirtualTableSql
(String oldTriggerValue, String newTriggerValue, Column[] columns) protected String
castDatetimeColumnToString
(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 String
protected AbstractTriggerTemplate.ColumnString
fillOutColumnTemplate
(String origTableAlias, String tableAlias, String columnPrefix, Table table, Column column, DataEventType dml, boolean isOld, Channel channel, Trigger trigger, boolean ignoreStreamLobs) protected String
getChannelExpression
(Trigger trigger, TriggerHistory history, Table originalTable) protected String
getClobType
(Table table) boolean[]
getColumnPositionUsingTemplate
(Table originalTable, TriggerHistory triggerHistory) protected String
getColumnSize
(Table table, Column column) protected String
protected String
getDefaultTargetTableName
(Trigger trigger, TriggerHistory history) protected String
protected String
getPrimaryKeysUpdatedString
(Table table) protected String
getPrimaryKeyWhereString
(String alias, Column[] columns) Deprecated.protected String
getSchemaNameOnly
(TriggerHistory triggerHistory) protected String
getSourceTablePrefix
(Table table) protected String
getSourceTablePrefix
(TriggerHistory triggerHistory) protected String
getSourceTableSchema
(Table table) protected String
getSourceTableSchema
(TriggerHistory triggerHistory) protected boolean
Helps detect Large Object columns.boolean
isUniTextColumn
(Column column) protected boolean
protected boolean
protected String
replaceDefaultCatalog
(String ddl, String defaultCatalog) protected String
replaceDefaultSchema
(String ddl, String defaultSchema) protected String
protected String
replaceDefaultSchemaAndCatalog
(String sql, String catalog, String schema) protected String
replaceTemplateVariables
(DataEventType dml, Trigger trigger, TriggerHistory history, Channel channel, String tablePrefix, Table originalTable, Table table, String defaultCatalog, String defaultSchema, String ddl) protected boolean
protected boolean
void
setBooleanColumnTemplate
(String booleanColumnTemplate) void
setDateColumnTemplate
(String dateColumnTemplate) void
setImageColumnTemplate
(String imageColumnTemplate) void
setTimeColumnTemplate
(String timeColumnTemplate) protected String
toClobExpression
(Table table) int
boolean
WhenParameterConstants.INITIAL_LOAD_CONCAT_CSV_IN_SQL_ENABLED
is false most dialects are going to want to still use the trigger templates because they have type translation details (like geometry templates).protected boolean
When 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
-
moneyColumnTemplate
-
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_ENABLED
is 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) -
isUniTextColumn
-
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
Builds join with all primary key columns pairs prefixed by the new and old aliases. -
aliasedPrimaryKeyJoinVar
Builds join with all primary key columns paired with prefixed parameter values. -
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() -
isLob
Helps detect Large Object columns. Some LOBs are inaccessible to triggers or require specialized code. -
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
-