Liquibase 4.9.0 Release Notes

Liquibase v4.9.0 is a major release.

See GitHub formatted release notes for more information. Full changelog: 4.8.0–4.9.0 (March 17, 2022)

Liquibase 4.9.0 is now available on the Download Liquibase page.

This release includes the checks.run and checks.show Maven goals, quality checks JSON object, community-contributed pull requests, Liquibase Open Source and Liquibase Pro bug fixes, and other notable changes.

Notable Changes

Liquibase 4.9.0 introduces the following functionality:

  • Quality checks for Maven – checks.run and checks.show goals [DAT-9033] [DAT-9034]
  • Note: For more information, see Maven checks.run and Maven checks.show.

  • [PR#2558] [kavya-shastri] [Breaking Change] The change in the usage of the Liquibase global configuration for the secureParsing parameter to prevent the entity resolver from scanning the network for missing XSDs. If you reference an XSD other than one of Liquibase and have never stored them in your classpath, Liquibase will no longer automatically download and use the XSD from the internet for security reasons. The default value for secureParsing is true, but you can set it to false in any of the Liquibase configuration locations.

    Note: For more information, see Example Changelogs: XML Format.

  • [PR#2529] [Krzysztof Sierszeń] [LB-1781] The uniqueConstraintExists precondition to check for the existence of unique constraints before running the update. You can check the constraint by constraint name or columns:
  • <preConditions>
    <uniqueConstraintExists constraintName="uq_constraint_name" tableName="test_table"/>
    </preConditions>
    
        <preConditions>
    <uniqueConstraintExists tableName="test_table" columnNames="first_name, last_name"/>
    </preConditions>
  • [PR#2339] [nvoxland] [Toukite] The support for running the Liquibase Servlet listener in application servers built on the Jakarta Servlet specification and not the Java Servlet specification. To use the new listener, specify the following tag:
  • <listener>
    <listener-class>liquibase.integration.servlet.LiquibaseJakartaServletListener</listener-class>
    </listener>

    The PR fixes issue #2298.

  • [PRO] Quality checks JSON object so that your application can easily parse through the Liquibase output [DAT-9094]
  • Note: For more information, see Policy Checks JSON Object.

Enhancements

  • [PR#2434] [Balázs Dési] Added the Maven validate goal to maven-liquibase-plugin to provide access to the existing Liquibase validate command and be available not only in CLI, but also in Maven

    Note: For more information, see Maven validate.

  • Added the ability to use sqlcmd on an instance with multiple databases [DAT-9513]

    Note: For more information, see Use Native Executors with Microsoft SQL Server.

  • Added support for Liquibase, Spring Boot, and SQL Plus run with Kerberos [DAT-9409]

    Note: For more information, see Using Liquibase and Spring Boot with SQL Plus and Kerberos Authentication.

  • [PR#2561] [Wesley Willard] Added the --schemas argument to the snapshot command to be able to compare a multi-schema database to its snapshot [DAT-9433]
  • [PR#2606] [Wesley Willard] Added a best practice message for the generate-changelog command so that you can check if the splitStatementsattribute works for your environment when generating formatted SQL changelogs [DAT-9327]
  • Added the StripCommentsattribute for the SQLUserDefinedPatternCheck quality check to choose the code that the SQLUserDefinedPatternCheck searches, including the option for the commented code. The StripCommentsattribute strips comments from SQL before searching for the string. The default value is N (no). [DAT-9098]
  • [PR#2273] [Tsvi Zandany] Added the autocomplete option for quality checks commands running on macOS

Fixes

  • [PR#2542] [nvoxland] Fixed the --should-snapshot-data CLI parameter to be preserved when the --data-output-directory property is not specified in the command
  • [PR#2330] [Inane Mohammed] Fixed the issue with checking the referenceSnapshot parameter instead of referenceDatabase for the potential null value
  • [PR#2521] [Steven Massaro] Added a label, context, and comment to the example-changelog.sql file that comes with the Liquibase installation package [DAT-9325]
  • [PR#2556] [nvoxland] Fixed the CockroachDB processes so that Liquibase checks the URL first rather than proceeding with SQL calls
  • [PR#2569] [Clarence Dimitri CHARLES] Made FormattedSqlChangeLogParser to be reusable for extensions
  • [PR#2377] [devorgpl] Fixed the issue with updating statements when the onlyUpdateattribute is false in the loadUpdateDataChange Type for HSQL
  • [PR#1908] [Emiliano Capoccia] Fixed the issue with retrieving the CockroachDB version. As part of the fix, Liquibase generates version-specific autoincrement SQL statements for CockroachDB identity columns:
    • SMALLSERIAL, SERIAL, and BIGSERIAL for versions earlier than 21.2
    • GENERATED BY DEFAULT AS IDENTITY for version 21.2 or later
  • [PR#2135] [PR#2133] [Saucistophe] [mkobylarz] Fixed the issue with the endDelimiterattribute not being respected during the Liquibase update. The fix for endDelimiter does not break the handling of trailing comments in SQL statements. [LB-2186]
  • [PR#2573] [nvoxland] Fixed the quoting for the MANIFEST.MF file for correct versioning
  • [PR#2572] [Steven Massaro] Fixed the issue with generating changelogs for PostgreSQL columns that use SET DEFAULT [DAT-8779]
  • [PR#2589] [nvoxland] [Marcel Blonk] Fixed the MD5 checksums generated by older versions of Liquibase to be correctly updated in the DATABASECHANGELOG table when a more recent version of Liquibase executes against the database. The PR fixes issue #2580.
  • [PR#2592] [nvoxland] Added support for the double precision type in MySQL. The PR fixes issue #2337.
  • [PR#1894] [KushnirykOleh] Fixed the time data type to be precise for PostgreSQL. The PR fixes issue #1774.
  • [PR#2387] [Jenson3210] Fixed the handling of date and time in the loadDataChange Type
  • [PR#2566] [nvoxland] Updated OpenCSV from 5.5.2 to 5.6

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: