Skip to content

Releases: liquibase/liquibase

Liquibase v5.0.1

03 Oct 18:28
06b9ef9

Choose a tag to compare

Liquibase Community 5.0.1 is a minor patch release

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

IMPORTANT

As of Liquibase 5.0, the Community releases on GitHub no longer include Pro/Secure features and do not support Liquibase Secure license keys. Liquibase Pro and Secure customers should download their releases from liquibase.com/download-secure.

Additional Information

License corrections for Maven

The license block for Maven users has been corrected to use the Functional Source License (FSL).

Changelog

-(#7350) Update licensing and documentation for OSS distribution by @filipelautert

Full Changelog: v5.0.0...v5.0.1

Liquibase v5.0.0

30 Sep 13:49
d6e2ccb

Choose a tag to compare

Liquibase Community 5.0 is a major release

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

⚠️ MAJOR CHANGES IN COMMUNITY AND COMMERCIAL DISTRIBUTIONS

Liquibase is evolving to better serve both open-source contributors and enterprise customers by introducing a clearer separation between its open source Community and the commercial Secure offering. This change is designed to ensure that each distribution is optimized for its respective users: providing open-source Community users with flexibility and control, while delivering scalability, reliability, and governance for Secure enterprise teams. The changes provide Liquibase Secure customers:

  • Developer Productivity. Enable developers with autonomy and guardrails built directly into their daily workflow.
  • Secure Automation. Embed governance, security, and compliance into every change automatically.
  • Change Insights. Deliver audit-ready visibility so every change is trusted, explainable, and observable.

The new structure enables Liquibase to more effectively support developers at all stages—from experimentation and community collaboration to mission-critical deployments. Therefore, starting with this Liquibase 5.0 release, only the open source Community distribution is available at the traditional Github, Docker, and Maven access channels.

If you need the Secure commercial offering, please visit Liquibase.com

Liquibase Community Licensing Change

Additionally, Liquibase Community is now licensed under the Functional Source License (FSL). See LICENSE file at the root of the distribution for details. Starting with Liquibase 5.0, contributors will be asked to sign a one-time Contributor License Agreement (CLA). This is handled automatically by CLA Assistant when you open your first pull request.

Liquibase 5.0 Community Release Notable Changes

Liquibase Package Manager (LPM) integrated to enable users to install, update, and manage their dependencies

  • The open source Liquibase Community 5.0 ships without extensions, drivers, and many other packages and dependencies. This change provides a much lighter, modular, and customizable Liquibase experience for Community users. Importantly, this flexibility both allows and requires users to manage their Liquibase dependencies for their specific needs.
  • Liquibase Package Manager is now integrated and available for use directly from within the Community CLI experience with a new liquibase lpm command as the preferred method for managing dependencies.
  • Learn more at the LPM README

Liquibase Community 5.0+ ships with the Functional Source License (FSL)

  • "The Functional Source License (FSL) is a Fair Source license that converts to Apache 2.0 or MIT after two years. It is designed for SaaS companies that value both user freedom and developer sustainability. FSL provides everything a developer needs to use and learn from your software without harmful free-riding."
  • Learn more at https://fsl.software/

SnowFlake JDBC Driver CVE Fix

  • Liquibase 5.0 patches a vulnerability found in Snowflake JDBC driver (CVE-2025-24789) and resolves issue with logicalfilepath reported in 4.31.0. Note: Neither open source Community nor the commercial Secure products were affected by this CVE.

Dropped support for Java 8 and Java 11

  • The minimal Java dependency for Liquibase 5.0+ is Java 17. This update enables Liquiabase to build, test, and ship with modern and more secure dependencies.

ValueDate Checksum bug fix

  • In the last release, an issue was introduced by a change in how valueDate was calculated and incorporated into the checksum calculations. This issue has been fixed by ensuring that rawDatevalue is excluded from checksum calculations.
  • (#7101) fix: prevent rawDateValue from being used for checksum calculations @filipelautert

Changelog of Community PRs

🚀 New Features

🐛 Bug Fixes 🛠

  • (#7187) Fixed: #7186 - Liquibase creates too short VARCHAR and CHAR fields on MS SQL databases using multi-byte encodings, effectively leading to data truncation eventually @mkarg
  • (#7289) INT-1480: add custom string escaping for SnowflakeDatabase by @HorbatenkoYehor
  • (#7306) Renamed GETTING_STARTED.TXT to GETTING_STARTED.txt by @rberezen
  • (#7287) Fix path inconsistency in JAR file resource resolution by @rberezen
  • (#7282) Fix OSS license validation to prevent NPEs and silent failures by @filipelautert
  • (#7269) INT-1392: add get/setArguments and get/setProcedureName methods into … @HorbatenkoYehor
  • (#7274) Fixed errors in tests on Windows 11 + git-bash cygwin @b-gyula
  • (#7264) Back out change to ignore nested objects in TableExistsPreCondition @wwillard7800
  • (#7257) INT-1416: Updated handling of complex UnwrappedLiquibaseSerializables @SvampX
  • (#7233) Comparator resoluition should work in non-flat classloaders @gastaldi
  • (#7227) #7220: Thread-safety issue when running Liquibase in a multithreaded and multitenant environment @galovics
  • (#7231) fix sqlite JDBC URL parsing failure when tracking licenses (DAT-20124) @StevenMassaro
  • (#7187) Fixed: #7186 - Liquibase creates too short VARCHAR and CHAR fields on MS SQL databases using multi-byte encodings, effectively leading to data truncation eventually @mkarg
  • (#7154) Only mark changeset as SKIPPED if all changes are skipped GH issue 7153 @wwillard7800
  • (#7200) Remove duplicate header check for formatted SQL and add log message @wwillard7800
  • (#7208) Handle overwrite flag for formatted SQL correctly in generateChangelog @wwillard7800
  • (#7155) Option to allow snapshot to continue after finding null snapshot ID DAT-20436 @wwillard7800
  • (#7182) Fix OAuth2Secret credential exposure in update-sql command @filipelautert
  • (#7192) Fixes for regressions in DAT-20619, DAT-20620, and DAT-20621 @wwillard7800
  • (#7178) Throw exception if a change type has a namespace and cannot be found @wwillard7800
  • (#7168) Use missing objects instead of changed objects in test DAT-20536 @wwillard7800
  • (#7158) Handle situation that occurs when generateChangeLog is run with diffTypes=data @wwillard7800
  • (#7165) Fix rename column generator test @wwillard7800
  • (#6920) fix: Change the rename column query for mysql v8 and later using rename column to @quangdutran
  • (#7141) Rollback OpenCSV version to 5.10 and address CSV loading issue @filipelautert
  • (#7140) NullPointerException in SpringLiquibase.toString() @tweimer
  • (#7152) fix updateSQL command ignoring endDelimiter for some statements #7148 @ponziani
  • (#7108) Fix the version check for the MySQL FILTER_CONDITION to handle minor version > 0 DAT-20441 @wwillard7800
  • (#7101) fix: prevent rawDateValue from being used for checksum calculations @filipelautert
  • (#7079) feat: add logic to exclude resources from liquibaseHomeUri/internal in resource processing for includeAll @filipelautert

DevOps

  • (#7084) DAT-20288: fill in details for root's liquibase.build.properties file @sayaliM0412
  • (#7219) DAT-20673 Secure: Create new package locations @jandroav

🤖 Security, Driver and Other Updates

44 changes - (#7301) chore(deps): bump org.apache.commons:commons-lang3 from 3.18.0 to 3.19.0 in the production-deps group by dependabot - (#7302) chore(deps-dev): bump the build-tools group with 2 updates by dependabot bot - (#7297) chore(deps-dev): bump the production-deps group with 2 updates by dependabot bot - (#7294) chore(deps-dev): bump org.assertj:assertj-core from 3.27.5 to 3.27.6 in the test-deps group by dependabot bot - (#7291) chore(deps): bump the build-tools group with 3 updates by dependabot bot - (#7292) Remove update-docs-oss-pro-version job @sayaliM0412 - (#7291) chore(deps): bump the build-tools group with 3 updates @dependabot[bot] - (#7284) chore(deps-dev): bump org.postgresql:postgresql from 42.7.7 to 42.7.8 in the build-tools group @dependabot[bot] - (#7283) chore(deps-dev): bump org.assertj:assertj-core from 3.27.4 to 3.27.5 in the test-deps group @dependabot[bot] - (#7281) chore(deps): bump org.projectlombok:lombok from 1.18.40 to 1.18.42 @dependabot[bot] - (#7277) chore(deps): bump the build-tools group with 3 updates @dependabot[bot] - (#7266) chore(deps-dev): bump ...
Read more

Liquibase v4.33.0

09 Jul 14:38
75773ed

Choose a tag to compare

Liquibase 4.33.0 is a minor release

Liquibase 4.33.0 delivers important updates across Policy Checks, Change Automation, and other areas of platform enhancement, along with critical bug fixes and improvements to MongoDB, PostgreSQL, and DB2 on Z/OS support. See the Liquibase 4.33.0 Release Notes for the complete set of release information.

UPDATE

The bug fix introduced in #7036 flags multiple Formatted SQL headers in one changelog. Removing these multiple Formatted SQL headers from your changelog can lead to checksum errors for previously deployed changelogs. And while there is a workaround by specifying a validCheckSum attribute, in the next release we will introduce a new global argument (--fail-on-multiple-formatted-sql-headers=[true (default) | false]) as a user option to decide when to fail an operation in which multiple formatted SQL headers are detected.

Notable Changes

[PRO]

Change Automation

  • PostgreSQL Composite TYPE Support in Database Inspection. Liquibase Pro now includes support for inspecting PostgreSQL Composite TYPE objects during database inspection operations such as snapshot and diff. This enhancement ensures Composite TYPEs appear in inspection outputs, helping users manage and track changes to complex data structures more effectively. [INT-1249] [INT-135]

  • PostgreSQL Composite TYPE Support in generate-changelog and diff-changelog. Liquibase Pro now includes support for detecting PostgreSQL composite TYPE objects during generate-changelog and diff-changelog operations. This enhancement ensures that composite TYPE definitions—used to group multiple fields into a custom data structure—are captured and modeled alongside other schema elements, helping users manage and track changes more comprehensively. [INT-1251]

  • PostgreSQL Password Escaping Enhancement. Liquibase now escapes special characters in PostgreSQL passwords when using the psql native executor. Previously, if a password included characters requiring percent-encoding (such as @, %, or #), the executor would fail with a psql: error: invalid percent-encoded token message. [DAT-20254]

  • Db2 on Z/OS JCL Executor. Liquibase Pro now includes the ability to submit JCL jobs to the mainframe via Db2 DSNUTILU stored procedure. This enables users to automate more sophisticated procedures by integrating system level activities and database activities in a standard changelog format. This feature is enabled by a runwith:JCL decoration on applicable changesets containing properly formatted JCL.[INT-573, INT-1217]

  • Improved Persistent Spool File Behavior for SQLPlus Executor. The SQLPlus executor ensures that spool files are always retained when --sqlplus-create-spool=true, giving users consistent access to output files. Previously, spool file retention was tied to the --sqlplus-keep-temp setting; now, this setting applies only to temporary SQL files, not spool files. This decoupling improves clarity and gives users more control—if a spool file is created, it will remain unless users opt out by setting --sqlplus-create-spool=false. [DAT-18983]

Policy Checks

  • MongoChangetypeAttributes Policy Check. Introduced a new quality check named MongoChangetypeAttributes that allows users to enforce specific values or patterns for attributes within MongoDB-specific changetypes. Users can select a single Mongo changetype (e.g., createIndex, dropCollection) and specify expected values or patterns for its attributes. The check triggers if a specified attribute is present but does not match the defined value or regex—ensuring consistent standards across Mongo changesets. This supports validation across key changetypes attributes like adminCommand, createCollection, insertOne, and more, and enhances control and quality enforcement in MongoDB deployment pipelines. [DAT-18275]

[OSS]

Important dependency updates

⚠️[PRO] and [OSS] Upcoming Change in Distributions

Liquibase is evolving to better serve both open-source contributors and enterprise customers by introducing a clearer separation between its Open Source (OSS) and PRO offerings. This change is designed to ensure that each distribution is optimized for its respective users—providing open-source users with flexibility and control, while delivering scalability, reliability, and governance for enterprise teams.

The new structure enables Liquibase to more effectively support developers at all stages—from experimentation and community collaboration to mission-critical deployments. Liquibase 4.32.0 introduced the first general availability (GA) release of independently packaged Pro distributions, along with dedicated distribution channels and key-based access enforcement for Pro capabilities. This marks a significant step toward delivering a curated, enterprise-grade experience for Pro users.

The OSS distribution and its delivery channels remain unchanged in this phase.

PRO PRs

🆕New Features

🐛Bug Fixes 🐛

  • [DAT-20176] [DAT-20202] Liquibase displays SQL compiler errors if they occur. liquibase/liquibase-pro#2410 by @wwillard7800
  • [INT-1362]: Fix of empty generated changelog in case when only type attributes order is different liquibase/liquibase-pro#2435 by @SvampX
  • [DAT-20175] Correctly determine if stored logic is valid for Oracle liquibase/liquibase-pro#2366 by @wwillard7800
  • [DAT-20193] Correctly labeled the AWS and RDS documentation to reflect that it is available to OSS users. liquibase/liquibase-docs@f104c3e by @AMBERMW13
  • [DAT-20244] When a formatted SQL changelog is parsed and is found to have multiple header lines, the message will display: Duplicate formatted SQL header at line X #7036 by @wwillard7800
  • [DAT-20282] The deployment summary no longer includes internal DATABASECHANGELOG updates in the "Rows affected" count. This prevents inconsistencies when no customer data is changed but the summary previously showed rows affected due to internal tracking. #7063 by @StevenMassaro
  • [DAT-18983] SQLPlus Spool file saves if you set –sqlplus-create-spool: true or –sql-plus-keep-temp=true. Learn more here: [runWithSpoolFile](https://docs.liquibase.com/conc...
Read more

Liquibase v4.32.0

21 May 20:41
7e70496

Choose a tag to compare

Liquibase 4.32.0 is a major release

Note

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

Important

⚠️ [PRO] and [OSS] Upcoming Change in Distributions
Liquibase is evolving to better serve both open-source contributors and enterprise customers by introducing a clearer separation between its Open Source (OSS) and PRO offerings. This change is designed to ensure that each distribution is optimized for its respective users—providing open-source users with flexibility and control, while delivering scalability, reliability, and governance for enterprise teams. The new structure enables Liquibase to more effectively support developers at all stages—from experimentation and community collaboration to mission-critical deployments.
Liquibase 4.32.0 introduces the first general availability (GA) release of independently packaged Pro distributions, along with dedicated distribution channels and key-based access enforcement for Pro capabilities. This marks a significant step toward delivering a curated, enterprise-grade experience for Pro users.
The OSS distribution and its delivery channels remain unchanged in this phase.
Learn more

Notable Changes

[PRO]

Policy Checks

Formatted SQL Header Policy Check. Introduced a new policy check named FormattedSqlHeaderRequired to ensure that.sql files included in changelogs begin with the required --liquibase formatted sql header. This check helps prevent improperly formatted SQL changes that could bypass Liquibase’s change tracking, auditing, and rollback features. This new policy check supports changelogs of any format (SQL, XML, YAML, JSON) and includes an EXCEPTIONS_LIST customization option to exclude specific files. When triggered, it lists all offending .sql files missing the required header, helping maintain the integrity and reliability of database change management. [DAT-19042]

Get Config Value Helper Function for Python Checks. Added a new helper function, liquibase_utilities.get_config_value(), for custom Python checks. This function enables easy access to standard Liquibase configuration properties—including those set via environment variables, CLI arguments, or defaults files. This enhancement simplifies scripting by allowing users to retrieve values such as url, loglevel, changelogfile, and custom properties like dbplatform or contexts directly within their Python checks, without manually resolving property names or sources. [DAT-19486]

Property Substitution in Python Check Script Arguments. Enhanced support for custom Python checks by allowing the use of Liquibase properties in the SCRIPT_ARGS section. Users can now reference properties—such as environment variables, CLI arguments, or values from the defaults file—using standard substitution syntax (e.g., ${liquibase.command.url} or ${PIPELINE_NAME}). This enables dynamic and context-aware scripting, such as configuring behavior based on runtime attributes like the current Git branch or target environment. [DAT-19377]

Absolute Path for Custom Python Policy Checks. Updated custom policy check support to allow Python script paths to be specified using absolute paths, in addition to relative paths. This enhancement enables users to store and reference custom check scripts from centralized or shared directories outside the local project repository, eliminating the need to duplicate scripts across multiple projects. This improves flexibility and promotes better reuse and maintenance of custom policy checks across teams and environments. [DAT-19408]

Audit and History

DBCLH History Command for MongoDB and DynamoDB. Added support for the liquibase dbcl-history command for MongoDB and DynamoDB users, enabling access to the DatabaseChangeLogHistory (DBCLH) table. This Liquibase Pro command outputs each DBCLH row as a JSON object, making it easy to integrate with BI and analytics tools. Users can customize output with --format=json|JSON_PRETTY and --verbose to control the level of detail in capturedsql and extensions fields. Output defaults to console but can be redirected to a file using --outputfile. [DAT-17162], [DAT-17164]

Observability and Reports

Drift Report Support for MongoDB Family. Liquibase Pro now supports Drift Report generation for the MongoDB database family, including MongoDB Atlas and AWS DocumentDB. This enhancement allows DevOps and SRE teams to detect schema drift and compare MongoDB instances using the same familiar workflow as relational databases. Drift Reports now include MongoDB-specific snapshot and diff outputs, while omitting or clearly marking relational-only fields as "Not Applicable for Mongo-type Databases." This feature enables consistent configuration checks across distributed NoSQL environments and helps ensure alignment between instances of application data stores. [INT-871]

Enhanced Drift Report Connection Detail. Improved drift reports generated by the liquibase diff command by including complete connection details. Source and target URLs now display full catalog and schema names—particularly valuable for platforms like Databricks—allowing users to accurately identify and distinguish the environments being compared. This enhancement provides greater clarity and helps streamline the process of reviewing and resolving discrepancies. [DAT-18910]

Sensitive SQL Content Suppression in Operational Reports. Added a new global --reports-suppress-sql option to prevent sensitive SQL content—such as passwords—from appearing in operational reports and CLI output (e.g., during update-sql or drift report generation). This setting helps improve security and reduce noise in reports, especially in CI/CD pipelines like Jenkins. When enabled, SQL output is replaced with a placeholder message (SQL suppressed). An optional companion flag, --reports-suppress-exceptions, controls whether SQL appears in error messages. It is automatically set to true when --reports-suppress-sql is enabled, unless explicitly overridden. Both flags are configurable via CLI, environment variables, or properties files. [DAT-19076]

Security

Kerberos Passwordless Authentication for runWith:psql. Liquibase Pro now supports Kerberos passwordless authentication with the runWith:psql native executor, enabling secure, credential-free connections in environments where plain user/password secrets are restricted. This enhancement ensures compatibility with Active Directory/Kerberos authentication workflows while preserving full functionality, including the generation of log spool files as configured in liquibase.psql.conf. Both Kerberos and non-Kerberos environments continue to be supported, ensuring seamless transitions and enhanced security compliance. [DAT-19525]

Simplified Snowflake OAUTH and PKI Authentication Support. Liquibase Pro now supports Snowflake OAUTH and Private Key Infrastructure (PKI) authentication through new dedicated properties, eliminating the need for manual JDBC URL customization in most cases. This enhancement ensures compliance with Snowflake’s upcoming requirement for token-based authentication (effective November 2025) and simplifies secure connectivity for all Snowflake users. Sensitive authentication details—such as tokens, private key paths, and passphrases—can now be provided via Liquibase properties with standard handling for logging and reporting, helping users adopt modern authentication methods with less complexity and greater security. [INT-190], [INT-182]

Workflow Automation

Conditional Flow File Logic Based on Action Exit Codes. Liquibase Pro now supports conditional flow file logic based on action exit codes, enabling more flexible and resilient automation. A new continueOnError property (default: false) allows flows to proceed even when an individual action fails. Additionally, the new exitCode value captures the exit code of the previous action. This allows users to write conditional logic (e.g., if: "exitCode <= 1") directly within flow files. This enhancement empowers users to handle errors and successes gracefully within a single flow, rather than halting execution entirely. [DAT-19490]

Change Automation

Composite Type Objects in PostgreSQL Support. Liquibase now supports Composite TYPE objects in PostgreSQL, enabling users to manage these objects more effectively. This feature allows users to create and drop Composite Types using Liquibase change types, with support for XML, YAML, and JSON formats. Auto-rollback functionality is also included for these change types, ensuring smooth execution and rollback. This enhancement fills the gap in PostgreSQL object support and provides a valuable tool to manage complex PostgreSQL data types with Liquibase. [INT-173], [INT-175]

PostgreSQL Composite Type Schema Change Support. Liquibase Pro now supports the changeCompositeTypeSchema change type for PostgreSQL, enabling users to manage schema changes for composite Type objects. This enhancement fills a gap in Postgres object support by allowing ALTER operations to move a Type between schemas. The change type is available in all modeled formats (XML, YAML, JSON) and includes auto-rollback functionality. [INT-1268]

PostgreSQL Composite Type Ownership Change Support. Liquibase Pro now supports altering the ownership of Composite Type objects in PostgreSQL through a new changeCompositeTypeOwner change type. This feature allows users to manage ownership changes using modeled formats (XML, YAML, and JSON), expanding Liquibase’s support for advanced PostgreSQL object types. Auto-rollback is not supported because the current owner cannot be determined. [INT-1266]

PostgreSQL Composite Type Rename Support. Liquibase Pro now supports renaming PostgreSQL Composi...

Read more

v4.31.1

17 Feb 16:27

Choose a tag to compare

Liquibase 4.31.1 is a patch release

Important

Liquibase 4.31.1 patches vulnerability found in Snowlake driver (CVE-2025-24789) and resolves issue with logicalfilepath reported in 4.31.0 (see 4.31.0 Release Notes)

Note

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

Notable Changes

[OSS]

logicalfilepath bug: in 4.31.0, the parent logicalfilepath value will be used in DBCL/DBCLH as the changelogfilepath value, as a result the changesets from the included changelogs that were deployed with the changelog level logicalFilePath in version 4.31.0 will be considered new and will be redeployed in the latest versions. 4.31.1 fixes this behavior and deployed changesets will not be redeployed.

[PRO] Changelog

🐛 Bug Fixes 🛠

  • DAT-19579: The changesets from the included changelogs that were deployed with the changelog level logicalFilePath in version 4.31.0 will be considered new and will be redeployed in the latest versions #6716 @filipelautert

[OSS] Changelog

🐛 Bug Fixes 🛠

🤖 [OSS] Security, Driver and Other Updates

Snowflake vulnerability update CVE-2025-24789

  • Snowflake discovered and remediated a vulnerability in the Snowflake JDBC Driver. Liquibase now includes a version with the fixed issue 3.22.0.

Full Changelog: v4.31.0...v4.31.1

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/.

Join 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
Join our Discord server
Sign up to provide feedback to the product team

Thanks to everyone who helps make Liquibase better!

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
  • 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

Liquibase v4.31.0

16 Jan 15:39
11ef37b

Choose a tag to compare

Liquibase 4.31.0 is a major release

Important

Liquibase 4.31.0 contains an expanded Checks Extension, and so the artifact size has increased.

Note

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

⚠️ Breaking Change

Changesets with entirely blank IDs will now fail validation. This change improves the reliability and diagnosability of database changes, and enforces the best-practices set forth in documentation and training.

This validation does not apply to changesets that have already been deployed. However, any changesets marked as runOnChange or runAlways will fail validation if they have an empty changeset ID.

UPDATE: Reported Problems with LogicalFilePath

A few OSS users have reported a logicalfilepath bug, described below. This update aims to highlight potential trouble for users who meet three specific conditions:

  1. Use Liquibase 4.31.0
  2. Use the logicalfilepath attribute with different values at changelog and changeset levels
  3. Use include/includeAll to nest changelogs

The Bug
The standard Liquibase practice is to accept the attribute closest to the changeset. But in 4.31.0, the parent logicalfilepath value will be used in DBCL/DBCLH as the changelogfilepath value.

What Next?
If your workflow meets the conditions mentioned above, please avoid upgrading to version 4.31.0. The issue will be resolved in the upcoming 4.31.1 release.

Notable Changes

[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 Liquibase. Not any more! With this new checks extension, you can deploy the latest Policy Checks powers by optionally upgrading just the Check Extension on your 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 https://docs.liquibase.com/pro-extensions

Other Checks Enhancements

  • Pro users can suppress sql in reports with the new global property: --reports-suppress-sql=true
  • New checks-settings files can be created without CLI prompts by adding --force to 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 https://docs.liquibase.com/policy-checks

[OSS]

Liquibase capability enhancements

  • Changesets with entirely blank IDs will fail validation. This is a breaking change.
    • 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.
  • Added changeset execution time to output and logs
  • Added calculated checksum to output of calculate-checksum command
  • Added two new command parameters to 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
  • If an XML changelog is generate-changelog and fails to validate, Liquibase will indicate where the codepoint where the XML failure is located.
  • Added new Spring properties for Pro license key and to disable analytics

Java API Changes

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

[PRO] Changelog

🚀 New Features

🐛 Bug Fixes 🛠

🤖 Security, Driver and Other Updates

[OSS] Changelog

💥 Breaking Changes

  • (#6472) Fail validation for blank changeset IDs (DAT-18773) by @abrackx

🚀 New Features

Read more

Liquibase v4.30.0

06 Jan 18:29
38cc3e9

Choose a tag to compare

Liquibase 4.30.0 is a major release

Important

Liquibase 4.30.0 contains new capabilities and notable enhancements for Liquibase OSS and Pro users including:

  • Flow enhancements
  • Validation improvements
  • Clearer error messaging for thrown exceptions
  • Addition of Anonymous Analytics
  • Deprecation of the MacOS dmg installer in favor of installation via homebrew

Note

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

Notable Changes

[PRO]

Anonymous Analytics:

  • Liquibase can now gather anonymous usage analytics when commands are run. No user-specific data will be gathered.

For Liquibase OSS users, this functionality is enabled by default, but can be opted-out of before any data is sent. For Liquibase Pro users, this is disabled by default with the ability to opt-in.

Gathering anonymous usage analytics allows us to better understand how Liquibase is actually being used by a very wide, diverse set of millions of users.

Flow Enhancements: Detect pending changesets, and variable-variables

  • There are two exciting Flow enhancements: the ability to condition action on presence of pending changesets, and the ability to use a global variable inside other global or stage variables, enabling variable-variables within flows.
  • Learn more https://docs.liquibase.com/flow

[OSS]

Usability Improvements:

  • Avoid ignoring caught exceptions, and instead return the exception and append the reason for better debugging.
  • When using failOnError=false, changesets that failed will now show up in the default output.
  • When using STRICT mode, update-to-tag will now throw an error when there is no tag specified or the tag specified does not exist.
  • Added a Customizer that allows discovery of changesets that are not known to an application. This can be used to prevent an application's startup when discovering new, unexpected changesets before an update is made.

Deprecated: MacOS .dmg installer

  • The MacOS dmg installer no longer ships with release artifacts. Please use the tar.gz or .zip release artifacts, or install via homebrew by running brew install liquibase

For a full list of improvements and bug fixes, see the [OSS] Changelog section.

[PRO] Changelog

🚀 New Features

Changes

🐛 [PRO] Bug Fixes 🛠

🤖 [PRO] Security, Driver and Other Updates

12 changes

(#1973) Bump com.fasterxml.jackson.module:jackson-module-jaxb-annotations from 2.17.2 to 2.18.0 by dependabot
(#1974) Bump com.fasterxml.jackson.core:jackson-annotations from 2.17.2 to 2.18.0 by dependabot
(#1976) Bump com.fasterxml.jackson.core:jackson-databind from 2.17.2 to 2.18.0 by dependabot
(#1975) Bump com.fasterxml.jackson.core:jackson-core from 2.17.2 to 2.18.0 by dependabot
(#1988) Bump org.apache.maven.plugins:maven-failsafe-plugin from 2.22.2 to 3.5.1 by dependabot
(#1991) Bump org.apache.maven.plugins:maven-surefire-plugin from 2.22.2 to 3.5.1 by dependabot
(#2003) Bump org.junit.vintage:junit-vintage-engine from 5.10.3 to 5.11.3 by dependabot
(#2002) Bump org.junit:junit-bom from 5.10.3 to 5.11.3 by dependabot
(#1963) Bump com.networknt:json-schema-validator from 1.5.0 to 1.5.2 by dependabot
(#1947) Bump org.yaml:snakeyaml from 2.2 to 2.3 by dependabot
(#1984) Bump org.codehaus.gmavenplus:gmavenplus-plugin from 1.13.1 to 4.0.1 by dependabot
(#2005) Bump org.nanohttpd:nanohttpd from 2.2.0 to 2.3.1 by dependabot

[OSS] Changelog

🚀 New Features

  • (#6414) When using failOnError=false, changesets that failed will now show up in the default output. Thanks, @filipelautert
  • (#6413) Ensure all failed changesets show in the exceptionChangesets. Previously, output summaries did not include changesets that failed when running failOnError=false (DAT-18689). Thanks, @filipelautert
  • (#6169) When using STRICT mode, update-to-tag will now throw an error when there is no tag specified or the tag specified does not exist. Thanks, @MalloD12
  • (#6410) Modified clob handling in loadData by checking the string passed to a CLOB type column. Thanks, @tati-qalified
    • By default this value will be interpreted as a path. If the file at that path exists, the file's contents will be inserted into the column. If not, the passed value will be inserted as-is.
  • (#6067) Added additional modes for duplicateFileMode. Thanks, @k4pran
    • INFO - Logs when duplicate changelog files are found at the INFO level
    • DEBUG - Logs when duplicate changelog files are found at the FINE level
    • SILENT - Does not log when duplicate changelog files are detected
  • (#6432) Added a Customizer that allows discovery of changesets that are not known to an application. This can be used to prevent an application's startup when discovering new, unexpected changesets before an update is made. Thanks, @raphw
  • (#6288) Avoid ignoring caught exceptions, and instead return the exception and append the reason for better debugging. Thanks, @asolntsev
  • (#6265) Enhanced include and includeAll to support logicalFilePath (DAT-18350). Thanks, @wwillard7800
  • (#6300) Added method to reset command definitions cache in CommandFactory for testing. Thanks, @wwillard7800
  • (#6280) Undeprecated StringUtil class (DAT-18538). Thanks, @MalloD12
  • (#5223) Improved empty check style by using isEmpty String method. Thanks, @MalloD12
  • BigQuery
    • (#6294) Suppress UnsupportedClassVersionErrors for Bigquery at info level (DAT-18534). Thanks, @filipelautert
  • Databricks
  • Maven
  • MSSQL
  • PostgreSQL
    • (#6402) Added pg_stat_statements and pg_stat_statements_info views to the list of system tables and views to prevent them from being dropped. Thank you, @rozenshteyn
    • (#6211) Updated PostgreSQL database major and minor versions. Thanks, @MalloD12

🐛 Bug Fixes 🛠

  • (#6266) Fix CustomTaskRollback rollback bug where it was being called twice. Thanks, @momosetkn
  • (#6205) Removed usage of the deprecated isEmpty() method. Thanks, @anton-erofeev
  • (#6366) Improve startup performance (DAT-18327). Thanks, @StevenMassaro
  • (#6407) Added filterable flag to ChangeLogParameter class (DAT-18811). Thanks, @abrackx
    • This enables users to use label filters such as @some-filter and still have values replaced from global changelog parameters like environment variables.
  • (#6416) When determining the schema name make sure a value was found (DAT-18673). Thanks, @abrackx
  • (#6418) Fix issue where context filters with @ symbols were not being executed properly (DAT-18843). Thanks, @abrackx
  • (#6406) Test assertion code modification. (DAT-17568). Thanks, @wwillard7800
  • (#6429) Check that getPriority method is correct for snapshot generators (DAT-18730). Thanks, @StevenMassaro
  • (#6417) Revert "Remove unneeded inclusion of commons-io in liquibase-core pom.xml". Thanks, @catull
  • (#6385) Do not check for nested database objects when using foreignKeyConstraintExists precondition (DAT-18624). Thanks, @abrackx
  • (#5894) Do not strip "classpath:" when normalizing the path. Thanks, @andrus
  • (#6359) Fix issue...
Read more

Liquibase v4.29.2

04 Sep 14:06
fd04dbd

Choose a tag to compare

Liquibase 4.29.2 is a patch release

Important

Liquibase 4.29.2 patches minor issues found in Liquibase 4.29.1 release.

Note

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

Notable Changes

[PRO]

Custom Policy Checks updates: Create and run Python-based checks which fit your specific needs.

  • Liquibase checks have been opened to the world of Python development! This release fixes some minor issues so you can use your custom Python scripts as policy checks to solve your nuanced and techstack specific conditions for better risk mitigation, compliance, code quality, security, and more.
  • Learn more https://docs.liquibase.com/custom-policy-checks
  • Get the Checks extension to enable this capability: https://docs.liquibase.com/pro-extensions

Deprecation Notice

MacOS .dmg Installer to be removed in next release.

  • This is the final Liquibase release in which the MacOS installer will be shipped. Both the tarball (the liquibase-x.y.z.tar.gz) and the .zip (liquibase-x.y.x.zip) are the preferred replaced options for MacOS users.
  • Questions or comments? https://www.liquibase.com/contact-us

[PRO] Changelog

💥 Breaking Changes

  • None

Changes

[OSS] Changelog

💥 Breaking Changes

  • None

Changes

🤖 Security, Driver and Other Updates

3 changes
  • Bump org.testcontainers:testcontainers-bom from 1.19.8 to 1.20.1 in #6155
    by @dependabot
  • Bump org.apache.commons:commons-lang3 from 3.14.0 to 3.15.0 in #6112
    by @dependabot
  • Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.7.0 to 3.8.0 in #6116
    by @dependabot

New Contributors

Full Changelog: v4.29.1...v4.29.2

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

Liquibase v4.29.1

31 Jul 19:15
e0c7137

Choose a tag to compare

Liquibase 4.29.1 is a patch release

Important

Liquibase 4.29.1 patches minor structure and pom issues found in Liquibase 4.29.0 release.

Note

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

Notable Changes

[PRO]

Liquibase 4.29.1 .zip files: Restored to standard directory structure

  • This release correctly places Liquibase .zip files inside liquibase-4.29.1 directory to match Pre-4.29.0 directory structure.

Big Query Extension: using Liquibase Pro with Google Big Query

  • With Liquibase 4.29.1, Google BigQuery is now supported as an ‘out of the box’ database enabling users to more quickly achieve value. Also included is support for Liquibase Pro features such as Flows, Policy Checks, and Reports with Google BigQuery so that users will have the efficiency and productivity benefits of Liquibase Pro when working with the platform.

  • Learn more https://docs.liquibase.com/bigquery

[PRO] Changelog

🐛 [PRO] Bug Fixes 🛠

🤖 [PRO] Security, Driver and Other Updates

  • None

Full Changelog: v4.29.0...v4.29.1

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

v4.29.0

25 Jul 15:04
7e83bbc

Choose a tag to compare

Liquibase 4.29.0 is a major release

Important

Liquibase 4.29.0 contains several new capabilities and notable enhancements for Liquibase Pro users: Python-based Custom Policy Checks, a new Google BigQuery extension, and Operation Reports being enabled by default in certain conditions.

Note

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

Notable Changes

[PRO]

Big Query Extension: using Liquibase Pro with Google Big Query

  • With Liquibase 4.29.0, Google BigQuery is now supported as an ‘out of the box’ database enabling users to more quickly achieve value. Also included is support for Liquibase Pro features such as Flows, Policy Checks, and Reports with Google BigQuery so that users will have the efficiency and productivity benefits of Liquibase Pro when working with the platform.
  • Learn more https://docs.liquibase.com/bigquery

Operation Reports: Enabled by default

  • With Liquibase 4.29.0, Operation reports for key Liquibase commands are generated and presented to users who meet the following conditions: running Liquibase commands which generate reports, on systems with read/write permissions, which are not "headless" in automation, and who have not explicitly set LIQUIBASE_REPORTS_ENABLED=false.
  • Learn more at https://docs.liquibase.com/operation-reports

Custom Policy Checks: Create and run Python-based checks which fit your specific needs.

  • Liquibase checks have been opened to the world of Python development! With this release, you can point your custom checks to your custom Python scripts to solve your nuanced conditions for better risk mitigation, compliance, code quality, security, and more. (Extension release: 29 July 2024)
  • Learn more https://docs.liquibase.com/custom-policy-checks

[PRO] Changelog

🚀 New Features

Changes

🐛 [PRO] Bug Fixes 🛠

🤖 [PRO] Security, Driver and Other Updates

25 changes

(#1825) Bump org.assertj:assertj-core from 3.26.0 to 3.26.3 by @dependabot
(#1824) Bump net.snowflake:snowflake-jdbc from 3.16.1 to 3.17.0 by @dependabot
(#1819) Bump com.fasterxml.jackson.module:jackson-module-jaxb-annotations from 2.17.1 to 2.17.2 by @dependabot
(#1820) Bump com.fasterxml.jackson.core:jackson-* DATabind from 2.17.1 to 2.17.2 by @dependabot
(#1818) Bump com.fasterxml.jackson.core:jackson-annotations from 2.17.1 to 2.17.2 by @dependabot
(#1807) Bump org.apache.groovy:groovy-all from 4.0.21 to 4.0.22 by @dependabot
(#1804) Bump org.junit.vintage:junit-vintage-engine from 5.10.2 to 5.10.3 by @dependabot
(#1803) Bump org.junit:junit-bom from 5.10.2 to 5.10.3 by @dependabot
(#1805) Bump org.projectlombok:lombok from 1.18.32 to 1.18.34 by @dependabot
(#1791) Bump org.apache.maven.plugins:maven-jar-plugin from 3.4.1 to 3.4.2 by @dependabot
(#1817) Bump com.fasterxml.jackson.core:jackson-core from 2.17.1 to 2.17.2 by @dependabot
(#1816) Bump com.networknt:json-schema-vali* DATor from 1.4.2 to 1.5.0 by @dependabot
(#1786) Bump com.github.xmlet:xsdParser from 1.2.14 to 1.2.15 by @dependabot
(#1794) Bump com.networknt:json-schema-vali* DATor from 1.4.0 to 1.4.2 by @dependabot
(#1783) Bump com.azure:azure-identity from 1.8.1 to 1.12.2 in /liquibase-azure-deps by @dependabot
(#1781) Bump com.microsoft.azure:msal4j from 1.13.8 to 1.15.1 in /liquibase-azure-deps by @dependabot
(#1746) Bump net.snowflake:snowflake-jdbc from 3.16.0 to 3.16.1 by @dependabot
(#1737) Bump org.mariadb.jdbc:mariadb-java-client from 3.3.3 to 3.4.0 by @dependabot
(#1760) Bump org.hsqldb:hsqldb from 2.7.2 to 2.7.3 by @dependabot
(#1758) Bump liquibase/build-logic from 0.7.7 to 0.7.8 by @dependabot
(#1718) Bump org.mockito:mockito-core from 5.11.0 to 5.12.0 by @dependabot
(#1717) Bump com.oracle.* DATabase.jdbc:ojdbc8 from 19.22.0.0 to 19.23.0.0 by @dependabot
(#1736) Bump org.codehaus.mojo:build-helper-maven-plugin from 3.5.0 to 3.6.0 by @dependabot
(#1745) Bump org.assertj:assertj-core from 3.25.3 to 3.26.0 by @dependabot
(#1762) Bump org.apache.maven.plugins:maven-shade-plugin from 3.5.3 to 3.6.0 by @dependabot

[OSS] Changelog

💥 Breaking Changes

Changes

Read more