Liquibase 4.5.0 Release Notes

Liquibase v4.5.0 is a major release.

See GitHub formatted release notes for more information. Full changelog: 4.4.3–4.5.0 (September 27, 2021)

This release includes community-contributed pull requests, Liquibase Open Source 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 show to list the available quality checks
  • liquibase 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 enable/disable subcommands [DAT-7794]
  • Implement run subcommand for dynamic rules [DAT-7796]
  • Implement customize subcommand [DAT-7797]
  • Implement copy subcommand [DAT-7798]
  • Implement reset subcommand [DAT-7800]
  • Implement show subcommand for dynamic rules [DAT-7801]
  • Implement 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. #1377Treehopper
  • Fixes Postgresql bit column support #1468nderwin
  • Fix OSGiResourceAccessor failing due to javax.activation#1534CMoH
  • fixed usage of computed values in prepared insert/update changes #1590Plunts
  • Ensure that the root scope is initialized correctly regardless of whether a scope manager has been configured yet or not #1768rudolfv
  • Fix UniqueConstraint snapshot query on db2z #1771dileepan91
  • generate-changelog on an Oracle db ignores diffIncludeTablespace when creating MissingTableChange#1812briar354
  • Get Set deleteCascade for serializer mapping #1837smith-xyz
  • Add support for changeset ids and authors with spaces in formatted SQL changelogs. #1845jpz
  • 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#1968Cubid
  • 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 Progenerate-changelog error on Postgresql functions that have long signatures containing any '()' characters [DAT-7894]

Contributions

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