From e192581510f58a653633c024764156b963a26e94 Mon Sep 17 00:00:00 2001 From: Eric Long Date: Fri, 25 Jun 2021 12:34:33 -0400 Subject: [PATCH] 0005041: Upgrade from 3.7 to 3.11 fails to upgrade schema --- .../symmetric/db/DatabaseUpgradeListener.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/db/DatabaseUpgradeListener.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/db/DatabaseUpgradeListener.java index 50474741ce..6f8f5ae82a 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/db/DatabaseUpgradeListener.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/db/DatabaseUpgradeListener.java @@ -55,7 +55,6 @@ import org.jumpmind.symmetric.ext.IDatabaseUpgradeListener; import org.jumpmind.symmetric.ext.ISymmetricEngineAware; import org.jumpmind.symmetric.model.TriggerHistory; -import org.jumpmind.symmetric.model.TriggerRouter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -94,7 +93,7 @@ public String beforeUpgrade(ISymmetricDialect symmetricDialect, String tablePref } } - if (isUpgradeFromPre311(tablePrefix, currentModel, desiredModel) && shouldFixDataEvent311()) { + if (isUpgradeFromPre311(tablePrefix, currentModel, desiredModel) && shouldFixDataEvent311(tablePrefix)) { fixDataEvent311(tablePrefix); } @@ -256,14 +255,16 @@ protected boolean isUpgradeFromPre311(String tablePrefix, Database currentModel, } } - protected boolean shouldFixDataEvent311() { - List triggerRouters = engine.getTriggerRouterService().getAllTriggerRoutersForCurrentNode( - engine.getParameterService().getNodeGroupId()); - HashSet set = new HashSet(); + protected boolean shouldFixDataEvent311(String tablePrefix) { boolean shouldFix = engine.getParameterService().is("upgrade.force.fix.data.event"); if (!shouldFix && !engine.getParameterService().is("upgrade.skip.fix.data.event")) { - for (TriggerRouter triggerRouter : triggerRouters) { - String key = triggerRouter.getTriggerId() + "-" + triggerRouter.getRouter().getNodeGroupLink().getTargetNodeGroupId(); + HashSet set = new HashSet(); + String sql = "select t.trigger_id, r.target_node_group_id from " + tablePrefix + "_trigger t inner join " + tablePrefix + + "_trigger_router tr on tr.trigger_id = t.trigger_id inner join " + tablePrefix + + "_router r on r.router_id = tr.router_id where r.source_node_group_id = ?"; + List rows = engine.getSqlTemplate().query(sql, new Object[] { engine.getParameterService().getNodeGroupId() }); + for (Row row : rows) { + String key = row.getString("trigger_id") + "-" + row.getString("target_node_group_id"); if (set.contains(key)) { shouldFix = true; break;