Rollback to tag name is also incorrectly rolling back the specified tag
Description
Environment
Windows, H2, MSSQL via JTDS
Attachments
1
Activity
Show:
Greg Haase December 4, 2017 at 5:28 PM
Possibly related to https://liquibase.jira.com/browse/CORE-2815
Nathan Niesen July 26, 2017 at 7:13 PM
One workaround is after rolling back to a tag follow it up with an upgrade to the same tag. That requires adding code that should be removed later.
As of 3.5.2, the rollback to a tag name incorrectly rolls back the specified tag.
We haven't used the context attribute(s) anywhere in any or our change logs. I run a test using a single context and it was the same behavior.
Using the main changelog file: liquibaseTest-changelog-v4.xml
and logging with:
database.getRanChangeSetList().forEach((ranChangeSet) -> {
log.info("\tRanChangeSet {}, TAG: {}", ranChangeSet, ranChangeSet.getTag());
});
Versions 3.4.2, 3.5.0, and 3.5.1 work correctly in H2 (only 3.4.2 worked with MSSQL due to other errors with 3.5.0 and 3.5.1):
Liquibase.update((Contexts) null);
INFO [main]: RanChangeSet liquibaseTest-1.0.0::v1::1.0.0_1, TAG: null
INFO [main]: RanChangeSet liquibaseTest-1.0.0::v1-tag::1.0.0_2, TAG: 1.0.0
INFO [main]: RanChangeSet liquibaseTest-2.0.0::v2::2.0.0_1, TAG: null
INFO [main]: RanChangeSet liquibaseTest-2.0.0::v2-tag::2.0.0_2, TAG: 2.0.0
INFO [main]: RanChangeSet liquibaseTest-3.0.0::v3::3.0.0_1, TAG: null
INFO [main]: RanChangeSet liquibaseTest-3.0.0::v3-tag::3.0.0_2, TAG: 3.0.0
INFO [main]: RanChangeSet liquibaseTest-4.0.0::v4::4.0.0_1, TAG: null
INFO [main]: RanChangeSet liquibaseTest-4.0.0::v4-tag::4.0.0_2, TAG: 4.0.0
Liquibase.rollback("3.0.0", (Contexts) null);
INFO [main]: RanChangeSet liquibaseTest-1.0.0::v1::1.0.0_1, TAG: null
INFO [main]: RanChangeSet liquibaseTest-1.0.0::v1-tag::1.0.0_2, TAG: 1.0.0
INFO [main]: RanChangeSet liquibaseTest-2.0.0::v2::2.0.0_1, TAG: null
INFO [main]: RanChangeSet liquibaseTest-2.0.0::v2-tag::2.0.0_2, TAG: 2.0.0
INFO [main]: RanChangeSet liquibaseTest-3.0.0::v3::3.0.0_1, TAG: null
INFO [main]: RanChangeSet liquibaseTest-3.0.0::v3-tag::3.0.0_2, TAG: 3.0.0
Liquibase.rollback("2.0.0", (Contexts) null);
INFO [main]: RanChangeSet liquibaseTest-1.0.0::v1::1.0.0_1, TAG: null
INFO [main]: RanChangeSet liquibaseTest-1.0.0::v1-tag::1.0.0_2, TAG: 1.0.0
INFO [main]: RanChangeSet liquibaseTest-2.0.0::v2::2.0.0_1, TAG: null
INFO [main]: RanChangeSet liquibaseTest-2.0.0::v2-tag::2.0.0_2, TAG: 2.0.0
Liquibase.rollback("1.0.0", (Contexts) null);
INFO [main]: RanChangeSet liquibaseTest-1.0.0::v1::1.0.0_1, TAG: null
INFO [main]: RanChangeSet liquibaseTest-1.0.0::v1-tag::1.0.0_2, TAG: 1.0.0
Versions 3.5.2 and 3.5.3 don't work with H2 or MSSQL:
Liquibase.update((Contexts) null);
INFO [main]: RanChangeSet liquibaseTest-1.0.0::v1::1.0.0_1, TAG: null
INFO [main]: RanChangeSet liquibaseTest-1.0.0::v1-tag::1.0.0_2, TAG: 1.0.0
INFO [main]: RanChangeSet liquibaseTest-2.0.0::v2::2.0.0_1, TAG: null
INFO [main]: RanChangeSet liquibaseTest-2.0.0::v2-tag::2.0.0_2, TAG: 2.0.0
INFO [main]: RanChangeSet liquibaseTest-3.0.0::v3::3.0.0_1, TAG: null
INFO [main]: RanChangeSet liquibaseTest-3.0.0::v3-tag::3.0.0_2, TAG: 3.0.0
INFO [main]: RanChangeSet liquibaseTest-4.0.0::v4::4.0.0_1, TAG: null
INFO [main]: RanChangeSet liquibaseTest-4.0.0::v4-tag::4.0.0_2, TAG: 4.0.0
Liquibase.rollback("3.0.0", (Contexts) null);
INFO [main]: RanChangeSet liquibaseTest-1.0.0::v1::1.0.0_1, TAG: null
INFO [main]: RanChangeSet liquibaseTest-1.0.0::v1-tag::1.0.0_2, TAG: 1.0.0
INFO [main]: RanChangeSet liquibaseTest-2.0.0::v2::2.0.0_1, TAG: null
INFO [main]: RanChangeSet liquibaseTest-2.0.0::v2-tag::2.0.0_2, TAG: 2.0.0
INFO [main]: RanChangeSet liquibaseTest-3.0.0::v3::3.0.0_1, TAG: null
missing TAG: 3.0.0
Liquibase.rollback("2.0.0", (Contexts) null);
INFO [main]: RanChangeSet liquibaseTest-1.0.0::v1::1.0.0_1, TAG: null
INFO [main]: RanChangeSet liquibaseTest-1.0.0::v1-tag::1.0.0_2, TAG: 1.0.0
INFO [main]: RanChangeSet liquibaseTest-2.0.0::v2::2.0.0_1, TAG: null
missing TAG: 2.0.0
Liquibase.rollback("1.0.0", (Contexts) null);
INFO [main]: RanChangeSet liquibaseTest-1.0.0::v1::1.0.0_1, TAG: null
missing TAG: 1.0.0