Given a scenario such as:
- changeSet 1: create table A
- changeSet 2: populate table A
- changeSet 3: create package B referencing table A
- changeSet 4: update data in table A using procedure in package B
- changeSet 5: add column to table A
- changeSet 6: revise package B to consume new column
If I was developing and applying these changes to the DB serially over time as they were committed, it should work fine.
However, if a new developer came along and tried to roll the changes from the beginning wouldn't it fail? Since liquibase is looking only at the present state of the files, wouldn't changeSet 3 fail because the latest version of package B contains a reference to a column in table A that doesn't exist yet?
How can this be addressed? Is there a way to get Liquibase to pull changeSets based on repo commit or tag? Or would you have to write a wrapper to serially check out all your release tags and apply liquibase to each one?
The only thing I can think of is to prevent developers from writing DDL/DML that references the packages, and not worry about interim package state. But things would also fail if a developer wanted to use updateCount 3 from the beginning.