Skip to content

Commit

Permalink
0004201: Failed to create update trigger for triggers that use and
Browse files Browse the repository at this point in the history
external_select with $(curTriggerValue)
  • Loading branch information
Philip Marzullo committed Jul 13, 2022
1 parent 4f95f4c commit 708f3ff
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 6 deletions.
Expand Up @@ -125,7 +125,7 @@ public AseTriggerTemplate(ISymmetricDialect symmetricDialect) {
" fetch DeleteDataCursor into @OldPk, @OldDataRow $(oldKeyVariables), @ChannelId \n" +
" while @@sqlstatus = 0 begin \n" +
" insert into $(defaultCatalog)$(defaultSchema)$(prefixName)_data (table_name, event_type, trigger_hist_id, pk_data, old_data, channel_id, transaction_id, source_node_id, external_data, create_time) \n" +
" values('$(targetTableName)','D', $(triggerHistoryId), @OldPk, @OldDataRow, @ChannelId, @txid, @clientname, $(externalSelect), getdate())\n" +
" values('$(targetTableName)','D', $(triggerHistoryId), @OldPk, @OldDataRow, @ChannelId, @txid, @clientname, $(externalSelectForDelete), getdate())\n" +
" fetch DeleteDataCursor into @OldPk,@OldDataRow $(oldKeyVariables), @ChannelId \n" +
" end \n" +
" close DeleteDataCursor \n" +
Expand All @@ -140,7 +140,7 @@ public AseTriggerTemplate(ISymmetricDialect symmetricDialect) {
" fetch InsertDataCursor into @DataRow $(newKeyVariables), @ChannelId \n" +
" while @@sqlstatus = 0 begin \n" +
" insert into $(defaultCatalog)$(defaultSchema)$(prefixName)_data (table_name, event_type, trigger_hist_id, row_data, channel_id, transaction_id, source_node_id, external_data, create_time) \n" +
" values('$(targetTableName)','I', $(triggerHistoryId), @DataRow, @ChannelId, @txid, @clientname, $(externalSelect), getdate()) \n" +
" values('$(targetTableName)','I', $(triggerHistoryId), @DataRow, @ChannelId, @txid, @clientname, $(externalSelectForInsert), getdate()) \n" +
" fetch InsertDataCursor into @DataRow $(newKeyVariables), @ChannelId \n" +
" end \n" +
" close InsertDataCursor \n" +
Expand Down
Expand Up @@ -190,7 +190,7 @@ public MsSqlTriggerTemplate(ISymmetricDialect symmetricDialect) {
" select '$(targetTableName)','D', $(triggerHistoryId), $(oldKeys), \n" +
" $(specialSqlServerSybaseChannelExpression), $(txIdExpression), \n" +
defaultCatalog + "dbo.$(prefixName)_node_disabled(), \n" +
" $(externalSelect), current_timestamp \n" +
" $(externalSelectForDelete), current_timestamp \n" +
" from deleted \n" +
" where $(syncOnDeleteCondition) \n" +
" insert into " + defaultCatalog + "$(defaultSchema)$(prefixName)_data \n" +
Expand All @@ -199,7 +199,7 @@ public MsSqlTriggerTemplate(ISymmetricDialect symmetricDialect) {
" select '$(targetTableName)','I', $(triggerHistoryId), $(columns), \n" +
" $(channelExpression), $(txIdExpression), \n" +
defaultCatalog + "dbo.$(prefixName)_node_disabled(), \n" +
" $(externalSelect), current_timestamp \n" +
" $(externalSelectForInsert), current_timestamp \n" +
" $(if:containsBlobClobColumns) \n" +
" from inserted \n" +
" inner join $(schemaName)$(tableName) $(origTableAlias) on $(tableNewPrimaryKeyJoin) \n" +
Expand Down Expand Up @@ -284,7 +284,7 @@ public MsSqlTriggerTemplate(ISymmetricDialect symmetricDialect) {
" select '$(targetTableName)','D', $(triggerHistoryId), $(oldKeys), \n" +
" $(specialSqlServerSybaseChannelExpression), \n" +
" $(txIdExpression), " + defaultCatalog + "dbo.$(prefixName)_node_disabled(), \n" +
" $(externalSelect), current_timestamp \n" +
" $(externalSelectForDelete), current_timestamp \n" +
" from deleted \n" +
" where $(syncOnDeleteCondition) \n" +
" insert into " + defaultCatalog + "$(defaultSchema)$(prefixName)_data \n" +
Expand All @@ -293,7 +293,7 @@ public MsSqlTriggerTemplate(ISymmetricDialect symmetricDialect) {
" select '$(targetTableName)','R', $(triggerHistoryId), $(newKeys), \n" +
" $(channelExpression), $(txIdExpression), \n" +
defaultCatalog + "dbo.$(prefixName)_node_disabled(), \n" +
" $(externalSelect), current_timestamp \n" +
" $(externalSelectForInsert), current_timestamp \n" +
" $(if:containsBlobClobColumns) \n" +
" from inserted \n" +
" inner join $(schemaName)$(tableName) $(origTableAlias) on $(tableNewPrimaryKeyJoin) \n" +
Expand Down
Expand Up @@ -505,6 +505,12 @@ protected String replaceTemplateVariables(DataEventType dml, Trigger trigger,
ddl = FormatUtils.replace("channelExpression", symmetricDialect.preProcessTriggerSqlClause(
getChannelExpression(trigger, history, originalTable)), ddl);

ddl = FormatUtils.replace("externalSelectForDelete", (StringUtils.isBlank(trigger.getExternalSelect()) ? "null"
: "(" + convertExternalSelectToDelete(symmetricDialect.preProcessTriggerSqlClause(trigger.getExternalSelect()))
+ ")"), ddl);
ddl = FormatUtils.replace("externalSelectForInsert", (StringUtils.isBlank(trigger.getExternalSelect()) ? "null"
: "(" + convertExternalSelectToInsert(symmetricDialect.preProcessTriggerSqlClause(trigger.getExternalSelect()))
+ ")"), ddl);
ddl = FormatUtils.replace("externalSelect", (trigger.getExternalSelect() == null ? "null"
: "(" + symmetricDialect.preProcessTriggerSqlClause(trigger.getExternalSelect())
+ ")"), ddl);
Expand Down Expand Up @@ -674,6 +680,18 @@ protected String replaceTemplateVariables(DataEventType dml, Trigger trigger,
return ddl;
}

private String convertExternalSelectToDelete(String externalSelect) {
externalSelect = FormatUtils.replace("curTriggerValue", oldTriggerValue, externalSelect);
externalSelect = FormatUtils.replace("curColumnPrefix", oldColumnPrefix, externalSelect);
return externalSelect;
}

private String convertExternalSelectToInsert(String externalSelect) {
externalSelect = FormatUtils.replace("curTriggerValue", newTriggerValue, externalSelect);
externalSelect = FormatUtils.replace("curColumnPrefix", newColumnPrefix, externalSelect);
return externalSelect;
}

private String getChannelExpression() {

return null;
Expand Down

0 comments on commit 708f3ff

Please sign in to comment.