diff --git a/liquibase-core/src/main/java/liquibase/changelog/ChangeLogParameters.java b/liquibase-core/src/main/java/liquibase/changelog/ChangeLogParameters.java index 97671e3c011..685814f0712 100644 --- a/liquibase-core/src/main/java/liquibase/changelog/ChangeLogParameters.java +++ b/liquibase-core/src/main/java/liquibase/changelog/ChangeLogParameters.java @@ -103,9 +103,10 @@ public void set(String parameter, Object value) { * #findParameter() is only catching the first one. So here we should eliminate duplicate entries */ ChangeLogParameter param = findParameter(parameter, null); - if (param == null) { - // okay add it - changeLogParameters.add(new ChangeLogParameter(parameter, value)); + // okay add it + changeLogParameters.add(new ChangeLogParameter(parameter, value)); + if (param != null) { + changeLogParameters.remove(param); } } @@ -121,15 +122,20 @@ public void set(String key, String value, ContextExpression contexts, Labels lab * #findParameter() is only catching the first one. So here we should eliminate duplicate entries **/ if (globalParam) { - // if it is global param ignore additional adds + // if it is global param remove duplicate ChangeLogParameter param = findParameter(key, null); - if (param == null) { - // okay add it - changeLogParameters.add(new ChangeLogParameter(key, value, contexts, labels, databases, globalParam, - changeLog)); + if (param != null) { + changeLogParameters.remove(param); } + // okay add it + changeLogParameters.add(new ChangeLogParameter(key, value, contexts, labels, databases, globalParam, + changeLog)); } else { - //this is a non-global param, just add it + ChangeLogParameter param = findParameter(key, changeLog); + if (param != null) { + changeLogParameters.remove(param); + } + //this is a non-global param, just add it changeLogParameters.add(new ChangeLogParameter(key, value, contexts, labels, databases, globalParam, changeLog)); } }