Liquibase 4.27.0 Release Notes
Liquibase 4.27.0 is a major release. Liquibase 4.27.0 contains several new capabilities and notable enhancements for Liquibase Pro users: DATABASECHANGELOGHISTORY table, Quality Checks Chains, and the Rollback Report.
See GitHub formatted release notes for more information. Full changelog: 4.26.0–4.27.0 (March 27, 2024)
Breaking Change
- (#5584) throw exception if drop all fails (DAT-16718) @StevenMassaro
Notable Changes
Liquibase Pro
Liquibase DATABASECHANGELOGHISTORY table: See all changes that have been applied to your database
- With the new DatabaseChangeLogHistory (DBCLH) Table, get a complete history of changes made to your database through Liquibase operations, including updates, rollbacks, dropAlls, tags, changelogSyncs, and repeated updates to the same changeset. The DBCLH table is disabled by default, so users must turn it on to start capturing historical data.
- Learn more: DATABASECHANGELOGHISTORY table
Quality Checks Chains: Perform multiple policy evaluations with a single Quality Check
- Chain multiple Quality Checks together with logic conditionals (AND, OR, and NOT) for more flexibility to perform multiple evaluations in a single check. Useful to confirm complex best practices or governance issues. Check Chains are run like traditional single-condition existing Quality Checks
- Learn more: Check Chains
Observability: Rollback Reports: Understand and share the data on the execution of rollback commands
- Easily scan and understand a high-level overview of the changesets rolled back. Get a detailed view of both successful and failed rollbacks. Improve team collaboration with a shareable report in PDF format.
- Learn more: Rollback Report
Liquibase Open Source and Liquibase Pro
Liquibase capability enhancements
- Added support for
tableExists
andviewExists
preconditions in Formatted SQL changelogs. (#5456) - Added
showSummary
andshowSummaryOutput
to the MavenupdateSql
andupdateTestingRollback
goals (#5592) - Expanded mapping of UTF-8 symbols to "anything between \u00A1-\uFF65 that wasn't specified as a letter before". This should prevent errors of unknown UTF-8. (#5506)
- When running
diffChangeLog
and no changes are detected, Liquibase no longer creates an empty changelog file. (#5164) - Added a new
ifNotExists
change type attribute forcreateTable
. (#3581) - Checksum calculation now occurs before property substitution. (#5391)
- The
addColumn
change type now supports thedeleteCascade=true
attribute. (#5398) - Various performance improvements (#5670, #5530, #5530)
Database platform improvements
SQL Anywhere
--run-on-change-types=createView,createProcedure
will setrunOnChange="true"
for each changeset which contains solelycreateView
andcreateProcedure
changes. (#4635)--replace-if-exists=createView,createProcedure
will setreplaceIfExists="true"
for eachcreateView
andcreateProcedure
change. (#4635)
Maria DB
- The Maria DB UUID type is returned for MariaDB version 10.7 or greater. (#5274)
- MariaDB boolean columns reverted from
TINYINT
toTINYINT(1)
, like it was before Liquibase 4.25.1. (#5522)
DB2 for z/OS
- Adds Empty Table precondition support for DB2[z]. (#5043)
JDBC driver updates
- Postgresql JDBC Driver to 42.7.3
- Oracle JDBC Driver updated to 19.22.0.0
- MariaDB JDBC driver updated to 3.3.3
- SqlServer JDBC driver updated to 12.6.1.jre8
Java API
- A new optional interface,
CustomChangeChecksum
, lets you override the default checksum calculation for a specific change. (#5649) - Adds support for
runWith
executors committing after the changeset completes. TheAbstractJdbcDatabase
delegates the execution of changes to the executor, which allows the executor more control over how changes are executed. This gives executors access to changes and changesets to manage their transaction commits. (#5329) - Change subclasses now support primitive types, particularly for custom change fields. (#5360)