Issue related to tagging


I tag the database for every release. So in the changelog once I have run all the changesets, the last changeset has the tag

However what I have observed is that this causes an update statement to be issued which updates the last run changeset with the tag number and then puts the entry for the tag in the databasechangelog table. This is a little strange behaviour. Either it should tag all changesets in that changelog with the tag version or none of them tagging only the changeset where the <tag is defined for example

      – This file contains multiple change sets




It causes a little bit of confusion when I look at the databasechangelog table where a changeset from the schema.xml is also tagged but others are left out. Is there something which I am not doing correctly?



Like you said, the current implementation of tagging just marks the last changeset with the tag. We can’t overwrite the tag value in other rows because we don’t want to erase previous tags. Ideally we’d have a separate table to manage tags so we can better track what is in each tag and that is something I’m looking at with 3.2, but for now we went with the simpler implementation that is designed around the existing table and supporting the rollback command without worrying about listing changeSets that were part of a tag.

The row that gets inserted after the tag is more a side effect of the liquibase execution process. The contents of the changeSet is ran (in this case, tag the database) before the changeSet is marked as executed.


Hi Nathan, 

Thanks. This explains the current process