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
andchecks.show
goals [DAT-9033] [DAT-9034] - [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 yourclasspath
, Liquibase will no longer automatically download and use the XSD from the internet for security reasons. The default value forsecureParsing
istrue
, but you can set it tofalse
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:
Note: For more information, see Maven checks.run and Maven checks.show.
<preConditions>
<uniqueConstraintExists constraintName="uq_constraint_name" tableName="test_table"/>
</preConditions>
<preConditions>
<uniqueConstraintExists tableName="test_table" columnNames="first_name, last_name"/>
</preConditions>
<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 tomaven-liquibase-plugin
to provide access to the existing Liquibasevalidate
command and be available not only in CLI, but also in MavenNote: 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 thesnapshot
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 thesplitStatements
attribute works for your environment when generating formatted SQL changelogs [DAT-9327] - Added the
StripComments
attribute for theSQLUserDefinedPatternCheck
quality check to choose the code that theSQLUserDefinedPatternCheck
searches, including the option for the commented code. TheStripComments
attribute strips comments from SQL before searching for the string. The default value isN
(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 ofreferenceDatabase
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
onlyUpdate
attribute isfalse
in theloadUpdateData
Change 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
, andBIGSERIAL
for versions earlier than 21.2GENERATED BY DEFAULT AS IDENTITY
for version 21.2 or later
- [PR#2135] [PR#2133] [Saucistophe] [mkobylarz] Fixed the issue with the
endDelimiter
attribute not being respected during the Liquibase update. The fix forendDelimiter
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
loadData
Change 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: