Liquibase v4.26.0
Liquibase 4.26.0 is a major release
Important
Liquibase 4.26.0 contains several Notable Changes for Liquibase Pro users: Advanced IF conditionals, Simpler Regex-based pattern checks, and Checks Run Reports.
Note
See the Liquibase 4.26.0 Release Notes for the complete set of release information.
Notable Changes
Liquibase Pro
Liquibase Flow: Advanced IF conditionals
- In Liquibase flow files, use AND (&&), OR (||), and NOT (!) logic options, in single or grouped conditions, as well as substring matching and checking if a key or file exists.
- Learn more https://docs.liquibase.com/flow
Quality Checks: Simpler Regex-based pattern checks
- Check four advanced patterns without having to figure out the complicated regex needed to do it—just supply the patterns and Quality Checks will link and execute them.
- Learn more https://docs.liquibase.com/quality-checks
Observability: Checks Run Reports
- Understand and share the data on the execution of Quality Checks with a new Checks Run Report. Easily scan and understand your results with the summary section, Analyze your checks by viewing details by ChangeSet, by check, and by database. And collaborate with your team with shareable report.
- Learn more https://docs.liquibase.com/observability
Formatted SQL changelogs can use rollback scripts
- Previously, Formatted SQL ChangeLogs could only run in-line rollback commands. But, sometimes you need something more complex, like a full rollbackSqlFile. This functionality has been available for XML, JSON, and YAML formatted changelogs.
- Learn more https://docs.liquibase.com/concepts/changelogs/sql-format.html
Liquibase Open Source and Liquibase Pro
Liquibase capability enhancements
- The
diffChangeLog
command has been updated only to create a changelog when changes are detected. This is a change from the previous behavior of creating an empty changelog. - Adds new
generateChangelog
options:--run-on-change-types=createView,createProcedure
will setrunOnChange="true"
for each changeSet which contains solelycreateView
andcreateProcedure
changes. For backward compatibility, the default is an empty list.--replace-if-exists=createView,createProcedure
will setreplaceIfExists="true"
for eachcreateView
andcreateProcedure
changes. For backward compatibility, the default is an empty list.
- Fix a bug that previously included substituted properties in the checksum calculation for SQLFile change types
JDBC driver updates
- MariaDB JDBC driver updated from 3.2.0 to 3.3.2
- Snowflake JDBC driver updated from 3.14.3 to 3.14.4
- Firebird SQL JDBC driver updated from 5.0.2.java8 to 5.0.3.java8
- SQLite JDBC driver updated from 3.43.2.2 to 3.44.1.0
Database platform improvements
General
- Adds
create table if not exists
support for the following databases: CockroachDB, DB2 LUW, H2, HSQL, Informix, Ingres9, MariaDB, MySQL, Postgres, and SQLite. - Fix the generated default column value in PostgreSQL and Oracle for char/clob data types.
Maria DB
- Adds Liquibase support for Maria DB 10.10.6 and later's new UUID data type.
- For boolean columns on MariaDB, revert the change made in Liquibase 4.25.1. It has been returned from TINYINT back to TINYINT(1).
DB2 z/OS
- Improves support for the empty table precondition.
Java API Changes
- AbstractJdbcDatabase now delegates the execution of Changes to the executor, which allows the executor more control over how Changes are executed. This gives executors access to Changes and ChangeSets which enables the management of transaction commits.
- Failure exceptions in ChangeSet.execute are now logged as a SEVERE level for easier access to a concise error message.
Changelog
[PRO] Changelog
- DAT-16531 Add labels, contexts, rollback-on-error to update reports runtime info in liquibase/liquibase-pro#1499 by @abrackx
- DAT-15455 Refactor ChangelogRewriters to follow general Factory approach in liquibase/liquibase-pro#1195 by @vitaliimak
- DAT-16675 add aliases for init copy and project in liquibase/liquibase-pro#1488 by @StevenMassaro
- DAT-16640 add rollbackSqlFile to formatted SQL changelog parsingin liquibase/liquibase-pro#1501 by @StevenMassaro
- DAT-16054 Implement filters for snapshot command in liquibase/liquibase-pro#1440 by @wwillard7800
- DAT-16282 Implement MVEL expression and added tests in liquibase/liquibase-pro#1382 by @wwillard7800
- DAT-16684 Checks run report tweaks, add check packages info in liquibase/liquibase-pro#1491 by @abrackx
- DAT-16273 Show fully qualified path in console when generating report in liquibase/liquibase-pro#1483 by @abrackx
- DAT-13042 Parse LDAP-style URL to create SQLPLUS connection string in liquibase/liquibase-pro#1473 by @wwillard7800
- DAT-16237 Styled checks run report in liquibase/liquibase-pro#1481 by @abrackx
- DAT-16349 Make sure diffChangelog respects drift arguments in liquibase/liquibase-pro#1461 by @wwillard7800
- DAT-16110 Implementation of regex helper checks in liquibase/liquibase-pro#1330 by @wwillard7800
- DAT-16500 do not clear a subset of MDC keys when scope exits in liquibase/liquibase-pro#1447 by @StevenMassaro
- DAT-16477 Append command name to default report name in liquibase/liquibase-pro#1456 by @abrackx
- DAT-16482 Correctly set logLevel on the Liquibase logger in liquibase/liquibase-pro#1433 by @wwillard7800
- DAT-16397 add changeset identifier to exceptions thrown from LiquibaseSqlParser in liquibase/liquibase-pro#1443 by @StevenMassaro
- DAT-16534 Fix issue with generateChangelog and diffChangelog in liquibase/liquibase-pro#1446 by @wwillard7800
- DAT-16330 Remove drift report mode parameter in liquibase/liquibase-pro#1423 by @wwillard7800
- DAT-13864 New pending changeset filter for checks run in liquibase/liquibase-pro#1419 by @wwillard7800
- DAT-16332 Add pending changes to update report in liquibase/liquibase-pro#1438 by @abrackx
🤖 [PRO] Security, Driver and Other Updates
1 change
* Bump com.oracle.database.jdbc:ojdbc8 from 19.20.0.0 to 19.21.0.0 #1339 by dependabot bot[OSS] Changelog
🚀 New Features
- (#5525) Add labels, context and rollback on error info to report (DAT-16531) @abrackx
- (#5490) DAT-16675: add support for command aliases @StevenMassaro
- (#5406) Allow snapshot control creation to be overridden for snapshot filters DAT-16054 @wwillard7800
- (#5256) Added exclusion for MVEL DAT-16282 @wwillard7800
- (#5336) add default constructor + setters to
RanChangeSet
& related classes @rursprung - (#5340) Fixes #2352 by adding support for loading embedded jar files @hayeskl
- (#5164) Write changelog only if changes exist @brachi-wernick
- (#5360) Introduce support for primitive types in new changes @fbiville
- (#5274) Use mariadb UUID when specify UUID type @mohamed-ahrrass-nw
- (#5413) add changeset identifier to exceptions thrown from LiquibaseSqlParser (DAT-16397) @StevenMassaro
- (#5402) Adds pending changesets to update report (DAT-16332) @abrackx
- (#3581) Support create table if not exists @taeyeon-Kim
- (#4635) generateChangelog optionally creates runOnChange=true and replaceIfExists=true for createView changes @mkarg
Changes
- (#5329) Support runWith executors committing after the change set completes @dzeigler
- (#5452) Log the exception in case of failure in ChangeSet.execute @bignoncedric
- (#5043) Improve support for DB2[z] empty table precondition @MichaelKern-IVV
- (#5424) Moved saved_state/compareGenerateSql.. directory from java source to resources bundle @MalloD12
- (#5462) map testcontainers to random available host port @StevenMassaro
- (#5457) prevent multiple databases in test classes @StevenMassaro
- (#5416) do not clear a subset of MDC keys when scope exits (DAT-16500) @StevenMassaro
- (#5417) switch integration tests to use h2 where possible (DAT-16015) @StevenMassaro
- (#5347) Added extra space for command help arguments display DAT-13864 @wwillard7800
🐛 Bug Fixes 🛠
- (#5522) MariaDB boolean: back to TINYINT(1) instead of TINYINT (MySQL) @famod
- (#5524) Don't execute CustomSqlChanges to generate logs @Alf-Melmac
- (#5498) Add missing OSGI settings @filipelautert
- (#5391) fix SQLFileChange.generateCheckSum() to calculate checksum without property substitution @jglass524
- (#5398) Fix issue #3516 addColumn ignores deleteCascade=true @andreiyusupau
- (#5479) do not skip over duplicate tags when doing rollback (DAT-16277) @StevenMassaro
- (#5484) Workaround failing test containers startup for mysql by falling back to previous version. @abrackx
- (#5397) Fix DatabaseFactory db loading when Database implementation is specified (fix for Issues 5371 & 5396 ) @dhsmith1001
- (#5202) 4464 fix generated default column value using in PostgreSQL and Oracle for char/clob data types @LonwoLonwo
- (#5350) Fix getSerializableFieldValue when dealing with rollback object @MalloD12
- (#5414) Fix NPE in generateChangelog and diffChangelog DAT-16534 @wwillard7800
- (#5267) fix #5266: comma separated dbms-attribute for createProcedure-change triggers validation-check @jclohmann
🤖 Security, Driver and Other Updates
17 changes
- (#5447) Bump org.slf4j:slf4j-jdk14 from 2.0.9 to 2.0.11 @dependabot
- (#5454) Bump org.apache.maven.plugins:maven-plugin-plugin from 3.10.2 to 3.11.0 @dependabot
- (#5433) Bump org.firebirdsql:firebird-testcontainers-java from 1.3.0 to 1.4.0 @dependabot
- (#5432) Bump org.assertj:assertj-core from 3.24.2 to 3.25.1 @dependabot
- (#5418) Bump org.apache.maven.plugins:maven-compiler-plugin from 3.11.0 to 3.12.1 @dependabot
- (#5409) Bump org.mariadb.jdbc:mariadb-java-client from 3.2.0 to 3.3.2 @dependabot
- (#5333) Bump net.snowflake:snowflake-jdbc from 3.14.3 to 3.14.4 @dependabot
- (#5287) Bump org.firebirdsql.jdbc:jaybird from 5.0.2.java8 to 5.0.3.java8 @dependabot
- (#5289) Bump org.xerial:sqlite-jdbc from 3.43.2.2 to 3.44.1.0 @dependabot
- (#5393) Bump actions/upload-artifact from 3 to 4 @dependabot
- (#5392) Bump actions/download-artifact from 3 to 4 @dependabot
- (#5313) Bump org.liquibase.ext:liquibase-sdk-maven-plugin from 0.10.22 to 0.10.23 @dependabot
- (#5311) Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.6.0 to 3.6.3 @dependabot
- (#5306) Bump targetMavenVersion from 3.9.5 to 3.9.6 @dependabot
- (#5286) Bump org.codehaus.mojo:build-helper-maven-plugin from 3.4.0 to 3.5.0 @dependabot
- (#5275) Bump com.opencsv:opencsv from 5.8 to 5.9 @dependabot
- (#5269) Bump org.testcontainers:testcontainers-bom from 1.19.1 to 1.19.3 @dependabot
Participate in the Community
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