Skip to content

Liquibase v4.24.0

Compare
Choose a tag to compare
@github-actions github-actions released this 03 Oct 13:53
· 504 commits to refs/heads/master since this release
44ad21c

Liquibase 4.24.0 is a major release

Important

For Liquibase Pro native executor users, if you've experienced checksum issues in Liquibase 4.19.0 through 4.23.1, please skip those releases and upgrade to this release, Liquibase 4.24.0.

Note

See the Liquibase 4.24.0 Release Notes for the complete set of release information.

Notable Changes

[PRO]

Liquibase Flows

  • Flow file variables are now shared across "nested" flow files and can be passed through multiple flow files.
  • Flow files running quality checks will now exit with a return code from the highest return code triggered by any check.

Structured Logging (Observability)

  • You can now add custom (user-defined) tags to your structured logs. These tags can be used later to segment your reporting. For instance, you can add tags that indicate the team, pipeline, or environment (and any other attributes that are meaningful to your organization) when reporting on Liquibase events.
  • Custom data is now included in every log message. This enables you to use dashboard queries and reports, which depend on these custom key:value pairs.

Security Improvement

  • Sensitive information is now obfuscated for people using passwords in their JDBC URL strings in structured logging.

[OSS and PRO]

  • Database platform improvements for: SQL Anywhere, MySQL, MariaDB, Oracle, DB2 LUW, DB2 z/OS, PostgreSQL, H2, and HSQLDB.
  • Performance improvements
  • JAVA API improvements
  • General Enhancements
    • The generate-changelog and diff-changelog commands now support the --labels and --contextFilter arguments. The specified values will be included as attributes for each generated changeset.
    • The diff, diff-changelog, and snapshot-reference commands now allow you to specify the referenceLiquibaseCatalogName and referenceLiquibaseSchemaName arguments.
    • The update command summary reports that you can enable with the --show-summary argument can now be selectively sent to the console, log, or all with the --show-summary-output argument (prior to this release, they went to both the console and log).
    • The includeAll tag now supports an optional endsWithFilter attribute that directs Liquibase to only include files ending with the value specified by the new attribute. All other files located by the specified path attribute will be skipped and will not be included as deployable changes.
    • The Maven integration now supports the logLevel property. This gives Maven integration users control over the severity level of log messages sent to the Liquibase log file.

🚀 Changelog

[PRO]

[OSS]

🐛 Bug Fixes 🛠

[OSS]

  • (#4827) Handle XML data types for DB2 DAT-12878 @wwillard7800
  • (#4812) More consistent message when included file is empty DAT-15551 @wwillard7800
  • (#4670) Fixed: Fails to detect LONG VARCHAR as CLOB and LONG BINARY as BLOB @mkarg
  • (#4648) Fixed: SQL Anywhere reports fancy precision with LONG NVARCHAR @mkarg
  • (#4845) Fix liquibase.bat java home handling under Windows @filipelautert
  • (#4726) Allow update command to handle additional properties that are passed on the command line DAT-15769 @wwillard7800
  • (#4841) Update README link to contribution docs @nwcm
  • (#4589) Fixes JdbcExecutor's uses of RawParameterizedSqlStatement @andrew-simmons
  • (#4683) Fixed: #4682 - MSSQL: Doesn't support (n CHAR) syntax, but only (n) syntax @mkarg
  • (#4798) Fix poor performance of listunrunchangesets @filipelautert
  • (#4803) Fix liquibase 4.23.1 won't work on windows if there is no JAVA_HOME system variable set @filipelautert
  • (#4502) Fixed: generateChangelog creates invalid changelog @mkarg
  • (#4772) Make sure that the correct argument name is displayed in help for commands with aliases DAT-15681 @wwillard7800
  • (#4441) Fix primaryKeyTablespace when attribute value is an empty string @delayk
  • (#4651) Fixing issue #4650 @mkarg
  • (#4404) enable REPLACE OR EXISTS for procedures on DB2 @MichaelKern-IVV
  • (#4541) remove dependency on javax.activation @filipelautert
  • (#4520) Fixed: SQL Anywhere reports fancy precision with DOUBLE, SMALLINT and TINYINT @mkarg
  • (#4609) fix standardlockservice when changelog-lock-wait-time-in-minutes is set to 0 and lock does not exist in database @jgarec
  • (#4591) Added changelog parameters to rollback commands @blaghed
  • (#4531) SQL Anywhere does not support "NO ACTION", but reports it for "SET DEFAULT" foreign keys @mkarg
  • (#4653) Allow DatabaseChangelog object to be passed as a parameter to DatabaseChangelogCommandStep @filipelautert
  • (#4613) Fix sequence from serial pre-condition validation for Postgresql @filipelautert
  • (#4507) Fixing Issue #4429: SQL Anywhere: generateChangeLog fails when column's default value is an expression (e. g. Unexpected error running Liquibase: Unknown boolean value: if "mycol" is null then 0 else 1 endif) @mkarg
  • (#4090) Fixes MySQL BIT / TINYINT(1) Boolean Behaviours @nwcm
  • (#4052) Fix H2 database case-sensitive identifier issues + upgrades JUnit tests cases to version 5 @mches
  • (#4709) Fix Regression in 4.23.1 where Log table is created multiple times for H2 and HSQLDB @filipelautert
  • (#4480) not to use class field for thread safe. @Wenkee
  • (#4515) Fixed: LONG VARCHAR DEFAULT NULL instead of LONG VARCHAR DEFAULT 'NULL' @mkarg
  • (#4534) Fix database test system external driver load. @filipelautert
  • (#4702) DAT-15602 @sayaliM0412
  • (#4689) Make operation start time be UTC DAT-15593 @wwillard7800
  • (#4585) DAT-15470 @sayaliM0412
  • (#4611) [DAT-15439] Fix adding redundant semicolon character for generateChangelog for MSSQL @vitaliimak
  • (#4625) Handle leading spaces in formatted SQL changelog DAT-15221 @wwillard7800
  • (#4672) DAT-15602 @sayaliM0412
  • (#4654) Correctly escape spaces in table name when it is used in a query DAT-11529 @wwillard7800
  • (#4956) Fix typo in SqlGeneratorFactory @asashour
  • (#4937) [DAT-15924] Handle AbstractSQLChange runWith checksum v8 variants @filipelautert
  • (#4900) Enable scoped value to be looked up from Java properties loaded from the command line -D properties DAT-15668 @wwillard7800
  • (#4725) Change type of RowCountPrecondition#expectedRows from Integer to Long (#1549) @kzander91
  • (#4762) Fetch ran change sets before updating check sums @hpoettker
  • (#4598) SQL Anywhere allows two foreign keys to differ only by name @mkarg
  • (#4621) Fixed: Issue #4620 - "SQL Anywhere DOES support CREATE OR REPLACE VIEW, despite what the source code says!" @mkarg
  • (#4705) DAT-15338 Refactor connection string patterns to allow extensions to extend they @vitaliimak
  • (#4902) obfuscate user/pass in urls entered in MDC (DAT-15860) @StevenMassaro
  • (#4862) DAT-15821 :: OperationOutcomeErrorMsg field added to Operation Info @MalloD12
  • (#4909) Rollbacks Oracle Driver to LTS series 19.x @filipelautert
  • (#4853) update truelicense text @suryaaki2
  • (#4854) Fix LabelExpression constructors when using array or collection @MalloD12
  • (#4859) Fix regression in recognizing formatted SQL file DAT-15865 @wwillard7800
  • (#4846) do not attempt to recreate DBCL when it is specified with mixed case (DAT-15570) @StevenMassaro
  • (#4722) Moved ValueHandlerTest to OSS @wwillard7800
  • (#4936) Added FDHUT license information DAT-15915 @wwillard7800

💥 API Change (Non-Breaking)

  • (#4785) change MdcManager API to accept Map<String, Object> instead of Map<String, String> (DAT-15799) @StevenMassaro

🤖 Security, Driver and Other Updates

22 changes

Full Changelog: v4.23.2...v4.24.0

Get Certified

Learn all the Liquibase fundamentals from free online courses by Liquibase experts and see how to apply them in the real world at https://learn.liquibase.com/.

Read the Documentation

Please check out and contribute to the continually improving docs, now at https://docs.liquibase.com/.

Meet the Community

Our community has built a lot. From extensions to integrations, you’ve helped make Liquibase the amazing open source project that it is today. Keep contributing to making it stronger:

Contribute code
Make doc updates
Help by asking and answering questions
Set up a chat with the Product team

Thanks to everyone who helps make the Liquibase community strong!

File Descriptions

  • Liquibase CLI -- Includes open source + commercial functionality
  • liquibase-x.y.z.tar.gz -- Archive in tar.gz format
  • liquibase-x.y.z.zip -- Archive in zip format
  • liquibase-windows-x64-installer-x.y.z.exe -- Installer for Windows
  • liquibase-macos-installer-x.y.z.dmg -- Installer for MacOS
  • Primary Libraries - For embedding in other software
    • liquibase-core-x.y.z.jar – Base Liquibase library (open source)
    • liquibase-commerical-x.y.z.jar – Additional commercial functionality
  • liquibase-additional-x.y.z.zip – Contains additional, less commonly used files
    • Additional libraries such as liquibase-maven-plugin.jar and liquibase-cdi.jar
    • Javadocs for all the libraries
    • Source archives for all the open source libraries
    • ASC/MD5/SHA1 verification hashes for all files