ID and databasechangelog - LB does not check if the order changes

The full ‘unique identifier’ of a changeset is the changeset author, id, and file. In your example you have two different authors, so Liquibase considers them as two different changesets, and will try to apply each of them to any database that hasn’t had them applied previously. 

Steve Donie
Principal Software Engineer
Datical, Inc. http://www.datical.com/

So the original XML had only the id created by John Smith and LB executed it successfully.  We then found an issue and then recreated the XML and this time we added a new ID of mary doe before the previous id created by John  Smith.  LB ran Mary’s ID and also ran John’s one.  

Does this mean that, by design, LB checks only for the first match of the ID.  In this case, since the ID of Mary did not match in the databasechangelog table, it assumes rest of the IDs have also not run before.