Release Notes

To see the release notes for Liquibase 3.0.7 and earlier, refer to Liquibase releases.

Liquibase 4.5.0 Release

Liquibase 4.5.0 is now available on the Download Liquibase page.

This release includes community-contributed pull requests, Liquibase Community and Liquibase Pro bug fixes, and support for Quality Checks.

Quality checks allow you to run checks against SQL, XML, JSON, and YAML changelogs for conditions and configurations important to your organization. More quality checks are forthcoming in future releases; provide feedback on what checks matter most to you.

Here is a closer look at what we improved in the latest release.

Notable Changes

There is a new family of commands to use to run quality checks:

  • liquibase checks show to list the available quality checks
  • liquibase checks run to run the available quality checks

along with enable, disable, customize, copy, reset, and delete options, and liquibase checks --help to learn more.

The following is a list of changes related to quality checks:

  • Implement checks enable/disable subcommands [DAT-7794]
  • Implement checks run subcommand for dynamic rules [DAT-7796]
  • Implement checks customize subcommand [DAT-7797]
  • Implement checks copy subcommand [DAT-7798]
  • Implement checks reset subcommand [DAT-7800]
  • Implement checks show subcommand for dynamic rules [DAT-7801]
  • Implement checks delete subcommand [DAT-7803]
  • >STATIC CHECK :: Changeset Must Have A Label [DAT-7924]
  • STATIC CHECK :: Changeset Must Have A Context [DAT-7925]
  • STATIC CHECK :: Changeset Must Have A Comment [DAT-7926]
  • STATIC CHECK :: Warn When "DROP TABLE" Detected [DAT-7928]
  • STATIC CHECK :: Warn When "DROP COLUMN" Detected [DAT-7930]
  • STATIC CHECK :: Warn When Data Type Modification is Detected [DAT-7934]
  • STATIC CHECK :: Warn when 'GRANT' Statement Detected [DAT-7953]
  • STATIC CHECK :: Warn when 'REVOKE' Statement Detected [DAT-7954]
  • DYNAMIC CHECK :: Warn when Tables have more than n columns [DAT-7983]
  • Check for License & Limit gate [DAT-7802]

Resolved Liquibase Issues

  • Fail when creating a Scope with a null-parent #1354. #1377 Treehopper
  • Fixes Postgresql bit column support #1468 nderwin
  • Fix OSGiResourceAccessor failing due to javax.activation #1534 CMoH
  • fixed usage of computed values in prepared insert/update changes #1590 Plunts
  • Ensure that the root scope is initialized correctly regardless of whether a scope manager has been configured yet or not #1768 rudolfv
  • Fix UniqueConstraint snapshot query on db2z #1771 dileepan91
  • GenerateChangeLog on an Oracle db ignores diffIncludeTablespace when creating MissingTableChange #1812 briar354
  • Get Set deleteCascade for serializer mapping #1837 smith-xyz
  • Add support for changeset ids and authors with spaces in formattedsql changelogs. #1845 jpz
  • More efficient XML resource loading #1860
  • Postgresql: Preserve existing search_path when setting the defaultSchemaName #1864
  • Fixed postgresql addPrimaryKey cluster handling #1880
  • CLI no longer reading defaultsFile from classpath #1893
  • Manage parent directory relative to changelog in IncludeAll #1968 Cubid
  • Improve synchronization of LockServiceFactory reset #1991
  • Fix createSequence for h2 when dataType is specified #1992
  • [PRO] Pro Enhancement Request: set 'splitStatements' to 'false' for Stored Logic changesets when generating a Formatted SQL changelog [DAT-7391]
  • [PRO] Allow users to indicate names and location of their spool files when using runWith:sqlplus [DAT-7580]
  • [PRO] Cannot update MariaDB expand based storage after first liquibase update [DAT-7879]
  • [PRO] Liquibase PRO generateChangeLog error on Postgresql functions that have long signatures containing any '()' characters [DAT-7894]


Our community has built a lot. Thanks to everyone who contributes and helps make the Liquibase community strong, including the following first-time contributors: