Liquibase 4.31.0 Release Notes
Liquibase 4.31.0 is a major release. Liquibase 4.31.0 contains new capabilities and notable enhancements for Liquibase Open Source and Liquibase Pro users including in-the-box support for Policy Checks, usability improvements to the policy checks and Custom Policy Checks creation flow, enhancements for Operation Reports, new parameters for the history
command, and more.
See GitHub formatted release notes for more information. Full changelog: 4.30.0–4.31.0 (January 16, 2024)
Note: Liquibase 4.31.0 contains an expanded Checks Extension, and so the artifact size has increased.
Notable Changes
Liquibase Pro
New Checks extension delivered in the box
- Policy Checks are undoubtedly one of Liquibase Pro's stickiest capabilities, for which we continually add database platforms, new checks, and customizations. But to get these developments, users would need to download and upgrade to the latest version of Liquibase. Not any more! With this new checks extension, you can deploy the latest Policy Checks powers by optionally upgrading just the Check Extension at your own cadence. Conveniently, this extension is delivered "in the box" at
/internal/extensions
, so you do not have to change anything about your current Policy Checks workflow. - Learn more: Liquibase Pro Extensions
Other Checks Enhancements
- Pro users can suppress SQL in reports with the new global parameters
--reports-suppress-exception
and--reports-suppress-sql
. - New checks settings files can be created without CLI prompts by adding
--force
to thechecks show
command. - By popular demand, checks reports now show all checks run, including those not triggered.
- We simplified the custom python check creation flow by removing the single-answer prompts.
- Learn more: Policy Checks
Liquibase Open Source and Liquibase Pro
Liquibase capability enhancements
- Added changeset execution time to output and logs
- Added calculated checksum to output of the
calculate-checksum
command - Added two new command parameters to the
history
command so users can better see tagged deployments without having to directly examine the DATABASECHANGELOG table--show-tags
will return only tagged deployment history--tag-filter
will return deployment history for a specific tag or group of tags
- Changesets with entirely blank IDs will fail validation
- If an XML changelog is generated with the
generate-changelog
command and fails to validate according to XML syntax, Liquibase will indicate where the codepoint where the XML failure is located. - Added new Spring properties for Liquibase Pro license key and to disable analytics
Note: Validation should not fail for changes that have already been ran. Changes that have been ran with an empty changeset ID that are marked as runOnChange
or runAlways
will fail validation.
Java API Changes
-
Added missing
changeLogParameters
argument togenerateChangeLog
,calculateCheckSum
,doChangeLogSyncSql
, andchangeLogSync
Liquibase Pro Changelog
New Features
- DAT-19367: undo UUID-ing of deployment ID in #2108 by @StevenMassaro
- DAT-18519: Reverting
cloneTable
generic changeType in #2068 by @SvampX - DAT-19302: combined dependabot PRs in #2093 by @StevenMassaro
- feat: light build script to be triggered by liquibase oss builds in #2082 by @filipelautert
- DAT-19242: Update error messaging for stub checks commands in #2081 by @abrackx
- Fixed
dbclh-deployment_id
column size in #2078 by @rberezen - DAT-19049 Complete work to move all checks-related code to a new extension in #2066 by @wwillard7800
- DAT-19000: added '
cloneTable
' changetype with no supported databases in #2064 by @SvampX - DAT-17940: optionally suppress SQL in reports in #2036 by @StevenMassaro
- add
PRO_LICENSE_KEY
toliquibase-aws-extension
in #2058 by @sayaliM0412 - DAT-18892: create
checks show
files without prompting in #2050 by @StevenMassaro - DAT-18129: update
checks run
output for checks that are disabled but requested to be run in #2049 by @StevenMassaro - DAT-18777 Add a snippet of the matching SQL to the console output in #2020 by @wwillard7800
- DAT-18868: Include successful checks in checks run report "Details by Check" section in #2048 by @abrackx
- DAT-17901 Pass the database instance in the scope for changelog parsing in #2042 by @wwillard7800
- DAT-18780: Add messaging for scripts that cannot execute when using
MaxAffected
checks in #2039 by @abrackx - DAT-18793: replace
slf4j-simple
withslf4j-nop
in #2038 by @StevenMassaro - [PRO license rotation] Fixed typo for yugabyte repo in #2047 by @jandroav
- DAT-18836 - CPC: database scope checks should not ask "requires snapshot" in #2041 by @filipelautert
- DAT-15504: Migrate
init project
to core in #2004 by @abrackx - DAT-18328 Update to match core for
stripComments
inmodifyChangeSets
in #1981 by @wwillard7800 - DAT-18841 Do not prompt for script type with CPC in #2027 by @wwillard7800
- DAT-10610 Added a flag to help trim down exception logging in #1997 by @wwillard7800
Bug Fixes
- DAT-19045: fix string wrapping when it contains newlines in #2104 by @StevenMassaro
- DAT-19241 Help fixes for the stubs in #2077 by @wwillard7800
- DAT-18842 Fix issue where we were passing the wrong argument to the executor in #2006 by @wwillard7800
Security, Driver, and Other Updates
- Bump
actions/setup-python
from 5.1.0 to 5.3.0 in #2008 by @dependabot bot - Bump
com.github.jsqlparser:jsqlparser
from 4.9 to 5.0 in #1866 by @dependabot bot - Revert "Bump
com.github.jsqlparser:jsqlparser
from 4.9 to 5.0" in #2044 by @StevenMassaro
Liquibase Open Source and Liquibase Pro Changelog
- (#6371) Implement logic to selectively include/exclude columns in
generate-changelog
"data" export (Issue #3371, #6310) @catull - (#6486) Update
release-published.yml
to get the previous version by @sayaliM0412 - (#6490) DAT-18995: populate proper
client_payload
fordry_run
by @sayaliM0412 - (#6498) Change automated release file version to main by @tati-qalified
- (#6497) DAT-18995: default
dry_run
value tofalse
by @sayaliM0412 - (#6415) Add flag to top-level
Scope
to suppress logging of exceptions in certain cases by @wwillard7800 - (#6472) Fail validation for blank changeset IDs (DAT-18773) by @abrackx
- (#6451) Migrate
init project
command to core (DAT-15504) by @abrackx - (#6514) DAT-18995 by @sayaliM0412
- (#6515) Recognize
isIO
environment variable for analytics (DAT-18906) by @StevenMassaro - (#6509) Replace
slf4j-simple
withslf4j-nop
(DAT-18793) by @StevenMassaro - (#6373) Report which
codePoint
is illegal for XML data export by @catull - (#6512) Liquibase API: Add missing
changeLogParameters
argument by @MalloD12 - (#6436) Check if the next character is out of string length by @fntz
- (#6494) Make changelog and changeset logical file path settings override
includeAll
setting (Issue #6493) by @wwillard7800 - (#6511) SQLFile: Add DBMS validation check by @MalloD12
- (#6528) Revert refactoring that broke structured logging by @StevenMassaro
- (#6516) Add new properties to Spring configuration (analytics enabled and pro license) by @filipelautert
- (#6553) Add
liquibase-checks
property by @wwillard7800 - (#6529) Do not propagate logical file path to included changesets from raw SQL changelogs (DAT-19040) by @wwillard7800
- (#6499) Optionally suppress SQL in reports (DAT-17940) by @StevenMassaro
- (#6557) Avoid retrieving ran changesets without a database connection (DAT-19095) by @wwillard7800
- (#6378) Ensure
GenerateChangelogCommandStep
only reports writing a changelog file if it actually did by @catull - (#6555) Generate zip file via Maven, add zip and tar integration tests (DAT-18855) by @abrackx
- (#6254) Output calculated checksum to
stdout
by @Ishad-M-I-M - (#5595) Add changeset execution time to output by @jasonlyle88
- (#6563) Revert "Add changeset execution time to output" by @filipelautert
- (#6556) Enhance history command to filter changesets by tags (DAT-19013) by @filipelautert
- (#6565) Update changeset execution time to follow better practices by @jasonlyle88
- (#6536) Implement
copy
method inFilesystemProjectCopier
(DAT-18890) by @abrackx - (#6328) Add
stub
attribute toCommandStep
interface to recognize stub commands by @wwillard7800 - (#6558) Handle duplicates in sub-commands with
stub
method (DAT-19049) by @wwillard7800 - (#6575) Add flag to turn off compatibility check for
liquibase-checks
indrop-all
by @wwillard7800 - (#5653) Deployment ID enhancements and execution property by @jasonlyle88
- (#6570) Recognize flag to prevent exceptions for unsupported change types (DAT-19074) by @wwillard7800
- (#6591) Remove stubs; now trap checks command in
Main
(DAT-19268) by @wwillard7800 - (#6586) Build and test pro master branch with label
Build&TestPro
by @filipelautert - (#6572) Ignore individual AWS extension jars if combined jar is present (DAT-19091) by @StevenMassaro
- (#6593) Expire analytics cache after 60 minutes (DAT-19278) by @StevenMassaro
- (#6597) Handle absence or older version of
checks
JAR (DAT-19289) by @wwillard7800 - (#6617) Verify test count only if base branch is
master
(DAT-19258) by @filipelautert - (#6630) Handle @ symbol when executing PostgreSQL
SET SEARCH_PATH
@wwillard7800 - (#6629) undo UUID-ing of deployment ID (DAT-19367) @StevenMassaro
Bug Fixes
- (#6628) Fix
liquibase-maven-plugin
: Allow null arguments toConfiguredValueModifierFactory.override(String)
@facboy - (#6540) Fix null value handling when loading resources @sapo-di
- (#6621) DAT-19082: Fix issue with losing changed datatype attributes when one datatype is an int and the other is not @abrackx
- (#6439) Fix issue with fail on error changeset accounting by @wwillard7800
- (#6535) Fix only set Spring analytics scope parameter if it's defined by @filipelautert
- (#6547) Fix build - remove empty space from string by @filipelautert
- (#6542) Fix always set column properties before calculating checksum by @filipelautert
- (#6523) Fix Sequence generator - cache size, data type - for various DBs by @Alienmario
- (#6469) Fix README workflow status by @abrackx
- (#6571) Fix breaking changes introduced in #6565 by @StevenMassaro
- (#6524) Fix
NetUtilTest
when dealing with IPv4/IPv6 addresses by @MalloD12 - (#6495) Fix Maven issue that produces an exception when it finds a .pom file. by @wwillard7800
- (#6453) Fix
FormattedSqlChangeLogSerializer
so it includeslogicalFilePath
in change-set info comments by @benjamin-bader - (#6405) Fix ignore int sizes when diffing MSSQL by @filipelautert
- (#6492) Fix (DAT-18813): classloader configuration in
LiquibaseCommandLine
by @filipelautert - (#6343) Fix #6342 - Liquibase Output changeset executes twice by @jasonlyle88
- (#6519) Fix the XSD adding the
nullPlaceholder
attribute forloadData
column by @davidecavestro - (#6578) Fix fossa ai execution for contributed PRs by @filipelautert
- (#6590) Fix Checksum for SQL changes containing
dbms
attributes can get different values ifmd5sum
column isnull
by @filipelautert - (#6540) Fix null value handling when loading resources by @sapo-di
- (#6623) Fix test counts in master by @filipelautert
- (#6616) Fix "Attach Artifacts to Draft Release" failures (DAT-19292) by @sayaliM0412
- (#6621) Fix issue with losing changed datatype attributes when one datatype is an int and the other is not (DAT-19082) by @abrackx
- (#6481) Chore: bump
upload-artifacts
to v4 by @filipelautert - (#6306) Chore: refactor build scripts to remove duplication by @filipelautert
- (#6595) Chore: update deprecated action across all locations by @filipelautert
- (#6598) Chore: remove references to branch DAT-19069 by @filipelautert
- (#6599) Chore: remove duplicated fossa config file by @filipelautert
- (#6600) Chore: bump download actions versions by @filipelautert
- (#6601) Chore: use target to get access to tokens by @filipelautert
- (#6602) Chore: use target to get access to tokens by @filipelautert
- (#6624) Chore: rollback test count changes as they are failing for master by @filipelautert
Security, Driver, and Other Updates
- (#6626) DAT-18331 PRO: integrate checks extension into tarball/zip, not mac os dmg installer @jandroav
- (#6582) Bump
org.junit.platform:junit-platform-suite
from 1.11.3 to 1.11.4 @dependabot - (#6433) Bump
org.firebirdsql.jdbc:jaybird
from 5.0.5.java8 to 5.0.6.java8 by @dependabot - (#6477) Bump
org.apache.maven.plugins:maven-javadoc-plugin
from 3.10.1 to 3.11.1 by @dependabot - (#6468) Bump
wangyucode/sftp-upload-action
from 2.0.2 to 2.0.3 by @dependabot - (#6467) Bump
org.apache.maven.plugins:maven-plugin-plugin
from 3.15.0 to 3.15.1 by @dependabot - (#6460) Bump
actions/setup-python
from 5.2.0 to 5.3.0 by @dependabot - (#6455) Bump
org.nanohttpd:nanohttpd
from 2.2.0 to 2.3.1 by @dependabot - (#6448) Bump
org.testcontainers:testcontainers-bom
from 1.20.2 to 1.20.3 by @dependabot - (#6449) Bump
actions/cache
from 4.1.1 to 4.1.2 by @dependabot - (#6479) Bump
org.apache.maven.plugins:maven-failsafe-plugin
from 3.5.1 to 3.5.2 by @dependabot - (#6478) Bump
org.apache.maven.plugins:maven-surefire-plugin
from 3.5.1 to 3.5.2 by @dependabot - (#6500) Bump
groovy.version
from 4.0.23 to 4.0.24 by @dependabot - (#6454) Bump
org.xerial:sqlite-jdbc
from 3.46.1.3 to 3.47.0.0 by @dependabot - (#6480) Bump
org.hsqldb:hsqldb
from 2.7.3 to 2.7.4 by @dependabot - (#6475) Bump
net.snowflake:snowflake-jdbc
from 3.16.1 to 3.20.0 by @dependabot - (#6496) Bump
org.sonarsource.scanner.maven:sonar-maven-plugin
from 4.0.0.4121 to 5.0.0.4389 by @dependabot - (#6522) Bump
org.projectlombok:lombok
from 1.18.34 to 1.18.36 by @dependabot - (#6531) Bump
org.testcontainers:testcontainers-bom
from 1.20.3 to 1.20.4 by @dependabot - (#6527) Bump
commons-io:commons-io
from 2.17.0 to 2.18.0 by @dependabot - (#6603) Bump
org.liquibase.ext:liquibase-sdk-maven-plugin
from 0.10.23 to 0.10.25 by @dependabot - (#6594) Bump
org.assertj:assertj-core
from 3.26.3 to 3.27.0 by @dependabot - (#6584) Bump
org.junit.jupiter:junit-jupiter
from 5.11.3 to 5.11.4 by @dependabot - (#6581) Bump
junit-jupiter.version
from 5.11.3 to 5.11.4 by @dependabot - (#6577) Bump
org.apache.commons:commons-text
from 1.12.0 to 1.13.0 by @dependabot - (#6568) Bump
org.apache.maven.plugins:maven-javadoc-plugin
from 3.11.1 to 3.11.2 by @dependabot - (#6561) Bump
org.apache.commons:commons-compress
from 1.26.2 to 1.27.1 by @dependabot - (#6614) Bump
org.xerial:sqlite-jdbc
from 3.47.0.0 to 3.47.2.0 by @dependabot - (#6582) Bump
org.junit.platform:junit-platform-suite
from 1.11.3 to 1.11.4 by @dependabot