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, Policy 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) Throws an 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.

Policy Checks Chains: Perform multiple policy evaluations with a single policy check

  • Chain multiple policy checks with logic conditionals (AND, OR, and NOT) for more flexibility in performing multiple evaluations in a single check. Useful to confirm complex best practices or governance issues. Check chains are run like traditional single-condition existing policy 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 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 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. 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)