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.

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

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 and viewExists preconditions in Formatted SQL changelogs. (#5456)
  • Added showSummary and showSummaryOutput to the Maven updateSql and updateTestingRollback 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 for createTable. (#3581)
  • Checksum calculation now occurs before property substitution. (#5391)
  • The addColumn change type now supports the deleteCascade=true attribute. (#5398)
  • Various performance improvements (#5670, #5530, #5530)

Database platform improvements

SQL Anywhere
  • --run-on-change-types=createView,createProcedure will set runOnChange="true" for each changeset which contains solely createView and createProcedure changes. (#4635)
  • --replace-if-exists=createView,createProcedure will set replaceIfExists="true" for each createView and createProcedure 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 to TINYINT(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
  • 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. The AbstractJdbcDatabase 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)