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 the checks 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
  • 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.

  • 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

Java API Changes

  • Added missing changeLogParameters argument to generateChangeLog, calculateCheckSum, doChangeLogSyncSql, and changeLogSync

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 to liquibase-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 with slf4j-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 in modifyChangeSets 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 for dry_run by @sayaliM0412
  • (#6498) Change automated release file version to main by @tati-qalified
  • (#6497) DAT-18995: default dry_run value to false 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 with slf4j-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 in FilesystemProjectCopier (DAT-18890) by @abrackx
  • (#6328) Add stub attribute to CommandStep 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 in drop-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 to ConfiguredValueModifierFactory.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 includes logicalFilePath 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 for loadData 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 if md5sum column is null 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