Skip to content

Commit

Permalink
0001070: If trigger table name changes and the new trigger table name…
Browse files Browse the repository at this point in the history
… doesn't exist, the old triggers don't get remove from the old table
  • Loading branch information
chenson42 committed Feb 24, 2013
1 parent c02b23c commit cd63f88
Showing 1 changed file with 29 additions and 10 deletions.
Expand Up @@ -259,6 +259,17 @@ public TriggerHistory getTriggerHistory(int histId) {
}
return history;
}

protected List<TriggerHistory> getActiveTriggerHistories(Trigger trigger) {
List<TriggerHistory> active = getActiveTriggerHistories();
List<TriggerHistory> list = new ArrayList<TriggerHistory>();
for (TriggerHistory triggerHistory : active) {
if (triggerHistory.getTriggerId().equals(trigger.getTriggerId())) {
list.add(triggerHistory);
}
}
return list;
}

public TriggerHistory getNewestTriggerHistoryForTrigger(String triggerId, String catalogName,
String schemaName, String tableName) {
Expand All @@ -278,15 +289,15 @@ public TriggerHistory getNewestTriggerHistoryForTrigger(String triggerId, String
}
}
return null;
}
}

/**
* Get a list of trigger histories that are currently active
*/
public List<TriggerHistory> getActiveTriggerHistories() {
return sqlTemplate.query(getSql("allTriggerHistSql", "activeTriggerHistSql"),
new TriggerHistoryMapper());
}
}

public List<TriggerHistory> getActiveTriggerHistories(String tableName) {
return sqlTemplate.query(getSql("allTriggerHistSql", "triggerHistBySourceTableWhereSql"),
Expand Down Expand Up @@ -941,7 +952,7 @@ protected void inactivateTriggers(List<Trigger> triggersThatShouldBeActive,
tablesByTriggerId.put(trigger.getTriggerId(), tables);
}

if (tables == null || trigger == null) {
if (tables == null || tables.size() == 0 || trigger == null) {
removeTrigger = true;
} else {
if (!StringUtils.equals(trigger.getSourceCatalogName(),
Expand Down Expand Up @@ -1122,13 +1133,21 @@ public void syncTrigger(Trigger trigger, ITriggerCreationListener listener, bool
try {
if (listener != null) {
addTriggerCreationListeners(listener);
}
}

if (triggersForCurrentNode.contains(trigger)) {
if (!trigger.isSourceTableNameWildCarded()) {
List<TriggerHistory> histories = getActiveTriggerHistories(trigger);
for (TriggerHistory triggerHistory : histories) {
if (!triggerHistory.getFullyQualifiedSourceTableName().equals(trigger.getFullyQualifiedSourceTableName())) {
dropTriggers(triggerHistory, sqlBuffer);
}
}
}
updateOrCreateDatabaseTrigger(trigger, triggersForCurrentNode, sqlBuffer,
force);
} else {
List<TriggerHistory> histories = findTriggerHistories(trigger.getSourceCatalogName(), trigger.getSourceSchemaName(), trigger.getSourceTableName());
List<TriggerHistory> histories = getActiveTriggerHistories(trigger);
for (TriggerHistory triggerHistory : histories) {
dropTriggers(triggerHistory, sqlBuffer);
}
Expand Down Expand Up @@ -1164,11 +1183,11 @@ protected void updateOrCreateDatabaseTriggers(Trigger trigger, Table table,
}

TriggerHistory latestHistoryBeforeRebuild = getNewestTriggerHistoryForTrigger(
trigger.getTriggerId(),
trigger.getSourceCatalogName(),
trigger.getSourceSchemaName(),
trigger.isSourceTableNameWildCarded() ? table.getName() : trigger
.getSourceTableName());
trigger.getTriggerId(),
trigger.getSourceCatalogName(),
trigger.getSourceSchemaName(),
trigger.isSourceTableNameWildCarded() ? table.getName() : trigger
.getSourceTableName());

boolean forceRebuildOfTriggers = false;
if (latestHistoryBeforeRebuild == null) {
Expand Down

0 comments on commit cd63f88

Please sign in to comment.