From f30d134c826400f73e49e88d4a4de52c4962e825 Mon Sep 17 00:00:00 2001 From: erilong Date: Mon, 3 Feb 2014 15:00:17 +0000 Subject: [PATCH] 0001556: Wildcard triggers for tables with same name in different catalog/schema. Fixes 0001556. --- .../symmetric/service/impl/TriggerRouterService.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/TriggerRouterService.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/TriggerRouterService.java index b22be656f3..08217cf19f 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/TriggerRouterService.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/TriggerRouterService.java @@ -1202,7 +1202,7 @@ protected Set getTablesForTrigger(Trigger trigger, List triggers for (Table table : tableArray) { if (trigger.matches(table, platform.getDefaultCatalog(), platform.getDefaultSchema(), ignoreCase) - && !containsExactMatchForSourceTableName(table.getName(), triggers, + && !containsExactMatchForSourceTableName(table, triggers, ignoreCase) && !table.getName().toLowerCase().startsWith(tablePrefix)) { tables.add(table); @@ -1222,12 +1222,16 @@ protected Set
getTablesForTrigger(Trigger trigger, List triggers return tables; } - private boolean containsExactMatchForSourceTableName(String tableName, List triggers, + private boolean containsExactMatchForSourceTableName(Table table, List triggers, boolean ignoreCase) { for (Trigger trigger : triggers) { - if (trigger.getSourceTableName().equals(tableName)) { + String sourceCatalogName = trigger.getSourceCatalogName() != null ? trigger.getSourceCatalogName() : platform.getDefaultCatalog(); + String sourceSchemaName = trigger.getSourceSchemaName() != null ? trigger.getSourceSchemaName() : platform.getDefaultSchema(); + if (trigger.getSourceTableName().equals(table.getName()) + && sourceCatalogName.equals(table.getCatalog()) && sourceSchemaName.equals(table.getSchema())) { return true; - } else if (ignoreCase && trigger.getSourceTableName().equalsIgnoreCase(tableName)) { + } else if (ignoreCase && trigger.getSourceTableName().equalsIgnoreCase(table.getName()) + && sourceCatalogName.equalsIgnoreCase(table.getCatalog()) && sourceSchemaName.equalsIgnoreCase(table.getSchema())) { return true; } }