Finding Database Changes Between Releases

Starting with Platform 2.0, the changesets are split out into individual files, so for later versions you need to look somewhere like https://github.com/openmrs/openmrs-core/blob/2.1.x/api/src/main/resources/liquibase-update-to-2.1.xml and use a script like this:

version = '2.1.0-beta' file = 'liquibase-update-to-2.1.xml' def url = "https://raw.githubusercontent.com/openmrs/openmrs-core/${version}/api/src/main/resources/${file}" println "fetching ${url}" def xml = new URL(url).text println "fetched ${xml.substring(0,10)}" def trimWhitespace = { s -> s.toString().replaceAll(/\s+/,' ').trim() } def parser=new XmlSlurper() parser.setFeature("http://apache.org/xml/features/disallow-doctype-decl", false) parser.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); parser.parseText(xml).children().findAll({it.name() == 'changeSet'}).each { println trimWhitespace(it.comment); }

 

@Burke Mamlin wrote this Groovy script to determine the sql and changesets that were put into openmrs between any two revisions (prior to version 2.0.0).

from = '1.9.1' to = '1.9.2' def getUrl = { version -> MAJOR = 0; MINOR = 1; v = { v,part -> Integer.valueOf(v.split(/\./)[part]) } if (v(version,MAJOR) > 1 || v(version,MINOR) >= 8) // post-maven url = "https://raw.github.com/openmrs/openmrs-core/@VERSION@/api/src/main/resources/liquibase-update-to-latest.xml" else // pre-maven url = "https://raw.github.com/openmrs/openmrs-core/@VERSION@/metadata/model/liquibase-update-to-latest.xml" return url.replace('@VERSION@', version) } def trimWhitespace = { s -> s.toString().replaceAll(/\s+/,' ').trim() } priorChanges = new XmlSlurper().parseText(new URL(getUrl(from)).text).changeSet*.@id newChanges = new XmlSlurper().parseText(new URL(getUrl(to)).text) .changeSet.findAll{ !priorChanges.contains(it.@id) } println newChanges*.comment.collect{ "* " + trimWhitespace(it) }.join("\n")

The output of this should be publicized on the release notes page so users know what to expect.