Releases: liquibase/liquibase
Liquibase v4.27.0
Liquibase 4.27.0 is a major release
Important
Liquibase 4.27.0 contains several New Capabilities and Notable Enhancements for Liquibase Pro users: DATABASECHANGELOGHISTORY table, Quality Checks Chains, Rollback Reports
Note
See the Liquibase 4.27.0 Release Notes for the complete set of release information.
Notable Changes
[PRO]
Liquibase DATABASECHANGELOGHISTORY table: See all changes that have been applied to your database
- With the new DatabaseChangeLogHistory (DBCLH) Table, get a complete history of changes made to your database through Liquibase operations, including updates, rollbacks, dropAlls, tags, changelogsyncs, and repeated updates to the same ChangeSet. The DBCLH table is disabled by default, so Users must turn it on to start capturing historical data.
- Learn more https://docs.liquibase.com/databasechangeloghistory
Quality Checks Chains: Perform multiple policy evaluations with a single Quality Check
- Chain multiple Quality Checks together with logic conditionals (AND, OR, and NOT) for more flexibility to perform multiple evaluations in a single check. Useful to confirm complex best practices or governance issues. Check Chains are run like traditional single-condition existing Quality Checks
- Learn more https://docs.liquibase.com/quality-checks
Observability: Rollback Reports: Understand and share the data on the execution of rollback commands
- Easily scan and understand a high-level overview of the ChangeSets rolled back. Get a detailed view of both successful and failed rollbacks. Collaborate with your team with shareable report in PDF format
- Learn more https://docs.liquibase.com/observability
Breaking Change
- (#5584) throw exception if drop all fails (DAT-16718) @StevenMassaro
[PRO] Changelog
- DAT-16798: Style rollback reports in liquibase/liquibase-pro#1534 by @abrackx
- DAT-16857: record operationOutcome in MDC in liquibase/liquibase-pro#1606 by StevenMassaro
- DAT-16853: Chained checks reports in liquibase/liquibase-pro#1580 by @abrackx
- DAT-16127 Checks chaining implementation in liquibase/liquibase-pro#1500 by wwillard7800
- DAT-16178: database changelog history record-keeping in liquibase/liquibase-pro#1334 by StevenMassaro
- DAT-16092 Implemented checkStatus argument for filtering by enabled/disabled status in liquibase/liquibase-pro#1577 by wwillard7800
- DAT-17187: Add check rollbacks to runtime metadata in https://github.com/liquibase/liquibase-pro/pull/ by @abrackx
- DAT-16920: add path filter option to SqlUserDefinedPatternCheck in liquibase/liquibase-pro#1575 by StevenMassaro
- DAT-17072 Added new autoEnableNewChecks option and fix bug with autoUpdate in liquibase/liquibase-pro#1566 by wwillard7800
- DAT-16420: add propertySubstitutionEnabled flag to checks run command in liquibase/liquibase-pro#1569 by StevenMassaro
- DAT-16845: exclude unnecessary directories/files from built jar in liquibase/liquibase-pro#1565 by StevenMassaro
- DAT-15170: add EndDelimiterExistsWhenPatternExists QC in liquibase/liquibase-pro#1517 by StevenMassaro
- DAT-16559: Add copy url button to checks run and update reports in liquibase/liquibase-pro#1521 by @abrackx
- DAT-16770: Fix table styling in details by check in liquibase/liquibase-pro#1531 by @abrackx
- DAT-16683 Implement snapshot filters for snapshotReference command in liquibase/liquibase-pro#1506 by wwillard7800
- DAT-15980 Added new CheckRunInTransactionValue rule in liquibase/liquibase-pro#1516 by wwillard7800
- DAT-16544 Fix issue with bad SQL generation in liquibase/liquibase-pro#1512 by wwillard7800
- DAT-14830: warn if running checks bulk-set without arguments in liquibase/liquibase-pro#1592 by StevenMassaro
- DAT-16105: improve interactive prompting through Powershell ISE in liquibase/liquibase-pro#1581 by StevenMassaro
- DAT-16765: throw exception when using init copy on non-s3 paths in liquibase/liquibase-pro#1539 by StevenMassaro
- PD-3246: init copy --source/--target descriptions in liquibase/liquibase-pro#946 by adrian-velonis1
- DAT-16271: properly handle creating procedure with no args and external name in liquibase/liquibase-pro#1494 by StevenMassaro
- DAT-16567 Handle logFormat when set in a flow file in liquibase/liquibase-pro#1522 by wwillard7800
- DAT-16306: wrap INITCOND of Postgres aggregate functions in single quotes in liquibase/liquibase-pro#1502 by StevenMassaro
🤖 [PRO] Security, Driver and Other Updates
39 change
* Bump liquibase/build-logic from 0.6.4 to 0.6.6 dependencies github_actions #1616 by dependabot bot-
Bump org.projectlombok:lombok from 1.18.30 to 1.18.32 #1614 by dependabot bot
-
Bump org.apache.maven.plugins:maven-assembly-plugin from 3.6.0 to 3.7.1 #1613 by dependabot bot
-
Bump org.apache.maven.plugins:maven-compiler-plugin from 3.12.1 to 3.13.0 #1612 by dependabot bot
-
Bump com.networknt:json-schema-validator from 1.3.3 to 1.4.0 #1610 by dependabot bot
-
Bump actions/delete-package-versions from 3 to 5 dependencies github_actions #1551 by dependabot bot
-
Bump org.postgresql:postgresql from 42.7.2 to 42.7.3 #1604 by dependabot bot
-
Bump com.fasterxml.jackson.core:jackson-core from 2.16.2 to 2.17.0 #1597 by dependabot bot
-
Bump com.fasterxml.jackson.module:jackson-module-jaxb-annotations from 2.16.2 to 2.17.0 #1595 by dependabot bot
-
Bump org.sonarsource.scanner.maven:sonar-maven-plugin from 3.10.0.2594 to 3.11.0.3922 #1599 by dependabot bot
-
Bump com.fasterxml.jackson.core:jackson-databind from 2.16.2 to 2.17.0 #1596 by dependabot bot
-
Bump com.fasterxml.jackson.core:jackson-annotations from 2.16.2 to 2.17.0 #1594 by dependabot bot
-
Bump com.github.jsqlparser:jsqlparser from 4.8 to 4.9 #1583 by dependabot bot
-
Bump com.fasterxml.jackson.core:jackson-annotations from 2.16.1 to 2.16.2 #1588 by dependabot bot
-
Bump com.fasterxml.jackson.core:jackson-core from 2.16.1 to 2.16.2 #1586 by dependabot bot
-
Bump com.fasterxml.jackson.module:jackson-module-jaxb-annotations from 2.16.1 to 2.16.2 #1584 by dependabot bot
-
Bump com.fasterxml.jackson.core:jackson-databind from 2.16.1 to 2.16.2 #1585 by dependabot bot
-
Bump ch.qos.logback:logback-classic from 1.5.1 to 1.5.2 #1568 by dependabot bot
-
Bump com.fasterxml.jackson.module:jackson-module-jaxb-annotations from 2.15.3 to 2.16.1 #1449 by dependabot bot
-
Bump com.fasterxml.jackson.core:jackson-annotations from 2.15.3 to 2.16.1 #1450 by dependabot bot
-
Bump com.oracle.database.jdbc:ojdbc8 from 19.21.0.0 to 19.22.0.0 #1563 by dependabot bot
-
Bump org.mariadb.jdbc:mariadb-java-client from 3.2.0 to 3.3.3 #1555 by dependabot bot
-
Bump com.fasterxml.jackson.core:jackson-core from 2.15.3 to 2.16.1 #1451 by dependabot bot
-
Bump com.fasterxml.jackson.core:jackson-databind from 2.15.3 to 2.16.1 #1452 by dependabot bot
-
Bump com.github.jsqlparser:jsqlparser from 4.7 to 4.8 #1558 by dependabot bot
-
Bump com.github.wvengen:proguard-maven-plugin from 2.6.0 to 2.6.1 #1557 by dependabot bot
-
Bump org.apache.maven.plugins:maven-shade-plugin from 3.5.1 to 3.5.2 #1559 by dependabot bot
-
Bump org.codehaus.mojo:flatten-maven-plugin from 1.5.0 to 1.6.0 #1560 by dependabot bot
-
Bump commons-codec:commons-codec from 1.16.0 to 1.16.1 #1561 by dependabot bot
-
Bump org.mvel:mvel2 from 2.5.0.Final to 2.5.2.Final #1562 by dependabot bot
-
Bump com.fasterxml.jackson.dataformat:jackson-dataformat-yaml from 2.15.3 to 2.16.1 #1453 by dependabot bot
-
Bump org.jacoco:jacoco-maven-plugin from 0.8.10 to 0.8.11 dependencies java #1309 by dependabot bot
-
Bump org.apache.maven.plugins:maven-compiler-plugin from 3.11.0 to 3.12.1 #1547 by dependabot bot
-
Bump org.assertj:assertj-core from 3.24.2 to 3.25.3 #1548 by dependabot bot
-
Bump ch.qos.logback:logback-classic from 1.4.11 to 1.5.1 #1543 by dependabot bot
-
Revert * Bump actions/delete-package-versions from 3 to 5 #1546 by StevenMassaro
-
Bump org.postgresql:postgresql from 42.6.0 to 42.7.2 #1530 by dependabot bot
-
Bump org.postgresql:postgresql from 42.6.0 to 42.6.1 in /pro dependencies java #1541 by dependabot bot
-
Bump org.postgresql:postgresql from 42.6.0 to 42.7.2 in /liquibase-pro-extension-testing dependencies java #1527 by dependabot bot
[OSS] Changelog
💥 Breaking Changes
- (#5584) throw exception if drop all fails (DAT-16718) @StevenMassaro
🚀 New Features
- (#5692) Add force option to dropAll DAT-16418 @wwillard7800
- (#5630) DAT-16798: Add new parameters to rollback report @abrackx
- (#5649) Add CustomChangeChecksum interface @robinjhector
- (#5147) database changelog history record-keeping (DAT-16178) @StevenMassaro
- (#5709) feat: add commons-lang3 as a required dependency for core @filipelautert
- (#5670) 5507-performance_improvements @filipelautert
- (#5667) Exception handler for when a service cannot be loaded @filipelautert
- (#5650) DAT-16513 - Upgrade installer Java version to 21 @filipelautert
- (#5456) Extended formatted sql preconditions by table-/viewExists @JulienMa94
- (#5597) Format spring package. @asashour
- (#5592) Bring update summary options to all update-relat...
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
- (#5...
Liquibase v4.25.1
Liquibase 4.25.1 is a patch release
Note
See the Liquibase 4.25.1 Release Notes for the complete set of release information.
Notable Changes
[PRO]
Observability: Update Reports
- These reports give you insights into the status of your database and enable you to quickly find and resolve errors in your automation pipeline. These reports can also help you detect patterns of failures that you can catch with Quality Checks or use to inform internal training and education for your teams.
- Learn more about Update Reports
Observability: Drift Report extended to diffchangelog command
- With our new HTML format, you can quickly see the differences between databases, including detailed object differences. This easy-to-read and shareable report makes it faster than ever to detect and fix database drift.
- Learn more Drift Reports
Observability: Structured Logging Enhancement
Thanks to your feedback, we’ve added a new set of keys that improves data analysis capabilities surrounding exceptions and Quality Checks.
Learn more at Structured Logging
Convenience: new liquibase connect
command
- A new command to test your database's url, username, and password are all configured correctly and that Liquibase can reach your database -- and no changelog required.
- Learn more liquibase connect command
Convenience: Global endDelimiters
- Global endDelimiters decrease the friction of incorporating work from different teams and save you time from the manual process of updating existing code.
- Learn more Global endDelimiters
[PRO]
Changes and Bug Fixes
- (#1417) DAT-16405: make report arguments visible on update-family commands by StevenMassaro
- (#1361) DAT-16064: Added test for exception details by wwillard7800
- (#1420) DAT-16429: Handle no license key in checks run command by wwillard7800
- (#1411) DAT-16063: include changeset identifier in log message for failing comment removal by StevenMassaro
- (#1408) DAT-15379: Updated pattern matching for 'USE DATABASE' statements by filipelautert
- (#1404) DAT-16157: do not upgrade checks file if autoUpdate is off by StevenMassaro
- (#1390) DAT-14570: add checks run results to MDC by StevenMassaro
- (#1401) DAT-16322: add liquibase connect command by StevenMassaro
- (#1398) DAT-16318: Handle rollback changes during modifyChangeSets logic by wwillard7800
- (#1389) DAT-16207: Styled update reports by abrackx
- (#1383) DAT-16136: expand TableMustHaveAComment check to check changelogs by StevenMassaro
- (#1366) DAT-15394: Generate report for diff-changelog by abrackx
- (#1387) Init checksSettingsFiles list to avoid NPE by wwillard7800
- (#1364) DAT-15404: Tweak endDelimiter name and remove hidden flag by wwillard7800
- (#1351) DAT-15640: Report for updateToTag by wwillard7800
- (#5366) add duplicatedChangesets to MDC (DAT-16452) @StevenMassaro
- (#1400) DAT-16268: Fix unexpected objects verbiage by abrackx
- (#1342) Fixes problematic V8 checksums for pro CreateFunctionChange by filipelautert
🤖 Security, Driver and Other Updates
- (#1410) upgrade liquibase.sdk.maven.plugin 0.10.23 by sayaliM0412
[OSS]
Changes
- (#567) Improve deferrable validation for AddForeignKey constraints generator @alero
- (#5101) Remove a forgotten
.
inREADME.md
@Benjamin-Loison - (#4959) Remove unnecessary conditions in IndexComparator @asashour
- (#5013) exclude compiler jar from dist (DAT-15636) @StevenMassaro
🚀 New Features
- (#5186) Adding exception details key and implementation DAT-16064 @wwillard7800
- (#5323) Updated PrimaryKeyExistsPrecondition to require table name for H2 databases @filipelautert
- (#5268) Rework update summary to support reporting, add new update report fields (DAT-16207) @abrackx
- (#5130) Update MySQL boolean behaviour from TinyInt(1) to TinyInt @MalloD12
- (#5300) output entire exception in StandardServiceLocator (DAT-16305) @StevenMassaro
- (#5131) Allows to set older checksum versions for testing purposes @filipelautert
- (#5151) Bump com.oracle.database.jdbc:ojdbc8 from 19.20.0.0 to 19.21.0.0 @dependabot
- (#5166) Exclude QUEUE tables from snapshoting @filipelautert
- (#5232) Show a better message if a boolean configuration argument has bad input DAT-16276 @wwillard7800
- (#5167) Added tag attribute to update report parameters DAT-15640 @wwillard7800
- (#4577) SQL Anywhere: Recompile all views after last change of update @mkarg
- (#5117) Implementing a ChangeSetService for modification of model objects DAT-16079 @wwillard7800
- (#4584) Allow changing default UI service + change Spring default UI service allowing log level control @filipelautert
- (#5087) Handles snapshot of Oracle temporary tables + ignore queue tables @filipelautert
- (#5077) showSummaryOutput property added for update command @MalloD12
- (#4991) Update MySQL default value handling to allow defaultValueComputed on MySQL 5.7 @Axel-1
- (#5042) Makes picocli dependency optional for core @filipelautert
- (#5041) add rollback-to-date report (DAT-15660) @StevenMassaro
- (#5045) add rollback-count report (DAT-15659) @StevenMassaro
- (#5047) show failed changesets in verbose show-summary output (DAT-15141) @StevenMassaro
- (#4301) Simplified expressions, removed redundant expressions, fixed javadocs @anton-erofeev
- (#4104) Support system properties as a way of providing configuration options to the CLI @jccampanero
- (#4919) Add '@deprecated' annotation to update() methods @tati-qalified
- (#4996) Check for other duplicate JAR files in classpath DAT-15963 @wwillard7800
- (#4463) Split calculate-checksum parameter changeSetIdentifier into changeSetPath / changesetId / changeSetAuthor @JulienMa94
- (#4904) add empty mdc values to all commands (DAT-15671) @StevenMassaro
🐛 Bug Fixes 🛠
- (#5305) DAT-16354: fix reading snapshots when columns array does not exist in an index @StevenMassaro
- (#5348) Make message grammar correct @wwillard7800
- (#5341) Don't execute CustomTaskChanges twice @filipelautert
- (#5283) [4.24 Regression] Checksum error while performing update and then rollback with a changelog parameter - Fix for issue #5278 @ebussieres
- (#5293) Disable Derby shutdown in Spring Boot context @tleipzig
- (#5296) Global flag to restore behaviour of not failing on duplicated changeset identifiers @filipelautert
- (#5315) Allow DiffResults to be reused in pipeline after running DiffChangelogCommandStep (DAT-16374) @abrackx
- (#5282) Fix #5271: ColumnExistsPrecondition throws error when table is missing @Januson
- (#5291) Run all Liquibase.rollback commands inside scope. @filipelautert
- (#5288) Add missing classes to osgi.serviceloader @filipelautert
- (#5108) Improve SQL parsing of character literals (quoted strings) @erasmussen-first
- (#5156) Decode encoded URLs from Spring resources @Ayrossi
- (#5166) Exclude QUEUE tables from snapshoting @filipelautert
- (#5249) Fixed query for actual data type for column @MalloD12
- (#5235) Fix calculateCheckSum issue when using Liquibase API method @MalloD12
- (#5172) Search ran changeset by key @n-13
- (#5150) Fixes problematic V8 checksums for pro CreateFunctionChange @filipelautert
- (#5165) Do not warn when env var matches argument alias (DAT-16117) @abrackx
- (#5099) Apply SQL visitors to prepared SQL @mches
- (#5141) Fix Liquibase changeset relative path check @filipelautert
- (#5134) Makes sure that precondition onErrorMessage and onFailMessage are logged when an error happens @filipelautert
- (#5143) load services using ServiceLocator if allInstances is empty @yairogen
- (#5087) Handles snapshot of Oracle temporary tables + ignore queue tables @filipelautert
- (#4801) CreateIndex associatedWith property deserialization issue @spacepost
- (#5127) 5126 fix extra column info for mariadb database @LonwoLonwo
- (#5122) Fix Liquibase.validate scope execution. @filipelautert
- (#5078) Fix Liquibase.rollback scope execution @filipelautert
- (#5090) Fixed changelog parsing performance issue @filipelautert
- (#4293) Fix DB2 integration tests DAT-13113 @wwillard7800
- (#4424) Fix custom SQL generation issue - Github issue 4369 @wwillard7800
- (#5062) Modify MSSQL query for when obtaining autoincrement column information GH-4719 @wwillard7800
- (#5054) Handle duplicates of the commercial JAR DAT-16059 @wwillard7800
- (#5039) Add changelog file path to upToDateFastCheck cache key (#4891) @ggwadera
- (#4994) execute-sql command logic updated to not display select columns sorted @MalloD12
- (#4664) Fixed: #4662 - PostgreSQL: Doesn't support (n CHAR) syntax, but only (n) syntax. @mkarg
- (#5064) Handle some potential NPEs @wwillard7800
- (#5028) Fix some typos. @asashour
- (#4754) Corrected determination of the DB2 version for the support of BOOLEAN columns. (patch for #4723) @haltenwe
- (#4549) generateChangelog creates crippled view definition SQL @mkarg
- (#4985) Fix liquibase bat @erasmussen-first
- (#4995) [DAT-16006] Fixing v8 Checksum calculation issue when using sql dbms attribute @filipelautert
- (#4988) Do not remove relation attribute for column if the relation object has a snapshot ID DAT-15709 @wwillard7800
- (#5007) Handle CREATE OR ALTER VIEW when replaceIfExists = true DAT-14147 @wwillard7800
- (#5009) Do not convert if global flag is false DAT-15745 @wwillard7800
- (#4945) Filter additional ...
Liquibase v4.25.0
Liquibase 4.25.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.25.0.
Note
See the Liquibase 4.25.0 Release Notes for the complete set of release information.
Note
In one Liquibase 4.25.0 file, the version was set as "release-SNAPSHOT" when it should have been "4.25.0". This file, liquibase-core-4.25.0.jar/pom.xml, has been updated. This text-only change contains no code or functional impact, but does result in a different checksum.
Notable Changes
[PRO]
Observability: Drift Reports
- With our new HTML format, you can quickly see the differences between databases, including detailed object differences. This easy-to-read and shareable report makes it faster than ever to detect and fix database drift.
- Learn more https://docs.liquibase.com/drift-reports
Quality Checks Packages
- You can now simplify Quality Checks deployment and management by creating Quality Checks Packages, which allow you to run multiple sets of checks with one command.
- Learn more https://docs.liquibase.com/commands/quality-checks/checks-packages/home.html
Observability: Structured Logging Enhancement
- Thanks to your feedback, we’ve added a new set of keys that will be included with every structured log to improve data analysis capabilities.
- Learn more at https://docs.liquibase.com/tools-integrations/observability/structured-logging-keys.html
[PRO] Changelog
- DAT-15455 Refactor ChangelogRewriters to follow general Factory approach by @vitaliimak in liquibase/liquibase-pro#1195
- DAT-15473: Better visibility for connection url in drift report by @abrackx in liquibase/liquibase-pro#1229
- Downgrades Oracle version by @filipelautert in liquibase/liquibase-pro#1237
- DAT-15740: Updates to drift report header formatting. by @abrackx in liquibase/liquibase-pro#1232
- DAT-15741: Add legend, improve spacing by @abrackx in liquibase/liquibase-pro#1236
- DAT-15860: obfuscate user/pass in urls entered in MDC by @StevenMassaro in liquibase/liquibase-pro#1233
- DAT-15717 Implement writing report to remote locations like S3 by @wwillard7800 in liquibase/liquibase-pro#1219
- DAT-15671: store MDC separately for each scope by @StevenMassaro in liquibase/liquibase-pro#1243
- move findKeyInMapIgnoreCase to CollectionUtil by @StevenMassaro in liquibase/liquibase-pro#1286
- DAT-15902: Avoid partial rollback for postgresql and mssql by @MalloD12 in liquibase/liquibase-pro#1261
- DAT-15870: include options for checks-scope in checks run help output by @StevenMassaro in liquibase/liquibase-pro#1298
- DAT-15871: Per object sql diffs by @abrackx in liquibase/liquibase-pro#1307
- DAT-15868: don't line wrap checks run output by @StevenMassaro in liquibase/liquibase-pro#1297
- DAT-15141: show update summary table when update fails by @StevenMassaro in liquibase/liquibase-pro#1299
- DAT-15949: Use command arguments not global arguments for drift detection. by @abrackx in liquibase/liquibase-pro#1308
- DAT-15679: gracefully handle situation where comments cannot be removed from sql while running checks by @StevenMassaro in liquibase/liquibase-pro#1322
- move file-replacer-maven-plugin definition to maven central by @StevenMassaro in liquibase/liquibase-pro#1329
- DAT-15960/DAT-7923: Add UserDefinedLabelCheck, UserDefinedContextCheck by @abrackx in liquibase/liquibase-pro#1321
- unregister DaticalTrueLicenseService after registering temporary license service by @StevenMassaro in liquibase/liquibase-pro#1341
- log license service exceptions by @StevenMassaro in liquibase/liquibase-pro#1338
- DAT-15553: Quality Checks Packages by @StevenMassaro in liquibase/liquibase-pro#1179
- DAT-16099: update checks file validation message by @StevenMassaro in liquibase/liquibase-pro#1345
- DAT-16196: show report arguments for diff command by @StevenMassaro in liquibase/liquibase-pro#1344
- DAT-16114: Use new report design for drift report by @abrackx in liquibase/liquibase-pro#1336
- DAT-16079 Implementing ProChangeSetService by @wwillard7800 in liquibase/liquibase-pro#1323
- DAT-16117: Add aliases for report args by @abrackx in liquibase/liquibase-pro#1347
- Add label to dependabot prs so we don't need to do it manually by @abrackx in liquibase/liquibase-pro#1348
- Aggregate dependabot prs by @abrackx in liquibase/liquibase-pro#1349
🤖 [PRO] Security, Driver and Other Updates
17 changes
- Bump org.sonarsource.scanner.maven:sonar-maven-plugin from 3.9.1.2184 to 3.10.0.2594 by @dependabot in liquibase/liquibase-pro#1283
- Bump com.fasterxml.jackson.core:jackson-databind from 2.15.1 to 2.15.3 by @dependabot in liquibase/liquibase-pro#1303
- Bump com.fasterxml.jackson.core:jackson-annotations from 2.15.1 to 2.15.3 by @dependabot in liquibase/liquibase-pro#1302
- Bump com.fasterxml.jackson.dataformat:jackson-dataformat-yaml from 2.15.2 to 2.15.3 by @dependabot in liquibase/liquibase-pro#1304
- Bump com.fasterxml.jackson.core:jackson-core from 2.15.1 to 2.15.3 by @dependabot in liquibase/liquibase-pro#1300
- Bump com.fasterxml.jackson.module:jackson-module-jaxb-annotations from 2.15.1 to 2.15.3 by @dependabot in liquibase/liquibase-pro#1301
- Bump com.h2database:h2 from 2.2.222 to 2.2.224 by @dependabot in liquibase/liquibase-pro#1284
- Bump org.apache.maven.plugins:maven-shade-plugin from 3.4.1 to 3.5.1 by @dependabot in liquibase/liquibase-pro#1249
- Bump info.picocli:picocli from 4.7.3 to 4.7.5 by @dependabot in liquibase/liquibase-pro#1188
- Bump docker/login-action from 2 to 3 by @dependabot in liquibase/liquibase-pro#1230
- Bump commons-codec from 1.15 to 1.16.0 by @dependabot in liquibase/liquibase-pro#1058
- Bump jackson-dataformat-yaml from 2.15.1 to 2.15.2 by @dependabot in liquibase/liquibase-pro#1016
- Bump org.projectlombok:lombok from 1.18.28 to 1.18.30 by @dependabot in liquibase/liquibase-pro#1281
- Bump ch.qos.logback:logback-classic from 1.4.9 to 1.4.11 by @dependabot in liquibase/liquibase-pro#1282
- Bump liquibase/build-logic from 0.4.4 to 0.4.7 by @dependabot in liquibase/liquibase-pro#1290
- Bump liquibase/build-logic from 0.4.7 to 0.4.8 by @dependabot in liquibase/liquibase-pro#1291
- Bump com.github.spullara.mustache.java:compiler from 0.9.10 to 0.9.11 by @dependabot in liquibase/liquibase-pro#1294
[OSS] Changelog
🚀 New Features
- (#5182) Invoke database.commit only if needed (DAT-16225) @filipelautert
- (#4577) SQL Anywhere: Recompile all views after last change of update @mkarg
- (#5117) Implementing a ChangeSetService for modification of model objects DAT-16079 @wwillard7800
- (#5148) Implement global end delimiter prioritized flag DAT-16166 @wwillard7800
- (#4584) Allow changing default UI service + change Spring default UI service allowing log level control @filipelautert
- (#5087) Handles snapshot of Oracle temporary tables + ignore queue tables @filipelautert
- (#5077) showSummaryOutput property added for update command @MalloD12
- (#4991) Update MySQL default value handling to allow defaultValueComputed on MySQL 5.7 @Axel-1
- (#5042) Makes picocli dependency optional for core @filipelautert
- (#5047) show failed changesets in verbose show-summary output (DAT-15141) @StevenMassaro
- (#4301) Simplified expressions, removed redundant expressions, fixed javadocs @anton-erofeev
- (#4104) Support system properties as a way of providing configuration options to the CLI @jccampanero
- (#4919) Add '@deprecated' annotation to update() methods @tati-qalified
- (#4996) Check for other duplicate JAR files in classpath DAT-15963 @wwillard7800
- (#4463) Split calculate-checksum parameter changeSetIdentifier into changeSetPath / changesetId / changeSetAuthor @JulienMa94
- (#4893) Quality Checks Packages (DAT-15553) @StevenMassaro
Changes
- (#567) Improve deferrable validation for AddForeignKey constraints generator @alero
- (#5101) Remove a forgotten
.
inREADME.md
@Benjamin-Loison - (#4959) Remove unnecessary conditions in IndexComparator @asashour
- (#5037) chore(build-branch.yml): update workflow to only trigger on labeled p… @jandroav
OSS: Sonar Refactor @jandroav
- (#4904) add empty mdc values to all commands (DAT-15671) @StevenMassaro
- (#4984) DatabaseTestSystem: commit after executing statement @StevenMassaro
🐛 Bug Fixes 🛠
Liquibase v4.24.0
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
anddiff-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
, andsnapshot-reference
commands now allow you to specify thereferenceLiquibaseCatalogName
andreferenceLiquibaseSchemaName
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 optionalendsWithFilter
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.
- The
🚀 Changelog
[PRO]
- DAT-15343 Allow logFile and logLevel to be specified as globalArgs to Action by @wwillard7800 in liquibase/liquibase-pro#1172
- DAT-15799: show flow-specific userMetadata in all log messages executed as part of Flow command execution by @StevenMassaro in liquibase/liquibase-pro#1202
- DAT-15130 Make Flow variables available in called flows by @wwillard7800 in liquibase/liquibase-pro#1178
- Add an explicit FlowFile constructor by @wwillard7800 in liquibase/liquibase-pro#1207
- DAT-15753 Handle flow exit code when both drift and QC checks are run by @wwillard7800 in liquibase/liquibase-pro#1184
- DAT-15455 Refactor ChangelogRewriters to follow general Factory approach by @vitaliimak in liquibase/liquibase-pro#1195
- DAT-15860: obfuscate user/pass in urls entered in MDC by @StevenMassaro in liquibase/liquibase-pro#1233
- DAT-10223: use syntax which allows for parsing multiple SQL statements in a single changeset by @StevenMassaro in liquibase/liquibase-pro#1160
- DAT-12612: add Lombok by @StevenMassaro in liquibase/liquibase-pro#1166
- DAT-15572: custom log data key-value pairs are injected multiple times per operation by @StevenMassaro in liquibase/liquibase-pro#1150
- DAT-15214: custom log data property substitution using environment variables by @StevenMassaro in liquibase/liquibase-pro#1165
- DAT-15471 Implement a global severity for drift exit code by @wwillard7800 in liquibase/liquibase-pro#1163
- DAT-12827 Always honor end delimiter for SQLPLUS by @wwillard7800 in liquibase/liquibase-pro#1169
- DAT-15367 Added build directory for Azure dependencies by @wwillard7800 in liquibase/liquibase-pro#1121
- DAT-15749: do not serialize warningMessage to checks settings file by @StevenMassaro in liquibase/liquibase-pro#1180
- DAT-15511 Use the checks exit code when running in Flow by @wwillard7800 in liquibase/liquibase-pro#1173
- DAT-15774: add missing short name, name and description when upgrading checks settings config file by @StevenMassaro in liquibase/liquibase-pro#1190
- DAT-15845: Fix drift detection configuration key hierarchy by @abrackx in liquibase/liquibase-pro#1216
- DAT-14924 Set the default schema name before running by @wwillard7800 in liquibase/liquibase-pro#1206
- DAT-15857 Remember the original value of splitStatements for native executor change checksum by @wwillard7800 in liquibase/liquibase-pro#1223
- Downgrades Oracle version by @filipelautert in liquibase/liquibase-pro#1237
- Xsd and flow file for 4.24.0 by @filipelautert in liquibase/liquibase-pro#1266
[OSS]
- (#4574) Implement showSummaryOutput parameter @EvaristeGalois11
- (#4395) Improve update summary usability @EvaristeGalois11
- (#4697) Replacing special constants specific to SQL Anywhere by commonly supported JDBC Escape Functions @mkarg
- (#4805) include tag in history tabular output (DAT-15244) @StevenMassaro
- (#4692) add update report (DAT-15576) @StevenMassaro
- (#4352) Adding support to parameters referenceLiquibaseCatalogName and referenceLiquibaseSchemaName. @filipelautert
- (#3978) Introducing removeChangeSetProperty feature @kirangodishala
- (#4461) support concurrent build in maven plugin @piotrwielgolaski-tomtom
- (#4537) SQL Anywhere: Switching off view definition checks to allow creation of dependent views even if dependency does not yet exist. @mkarg
- (#4658) Upgrade installer version to 17.0.8+7 @filipelautert
- (#4387) Use more parameter markers for DB2z catalogue queries @MichaelKern-IVV
- (#4148) maven-plugin: Support increasing maven log level @mensinda
- (#4534) Fix database test system external driver load. @filipelautert
- (#4680) Allow both include and includeAll to appear in modifyChangeSets tag @wwillard7800
- (#4605) custom log data key-value pairs are injected multiple times per operation (DAT-15572) @StevenMassaro
- (#4628) DAT -15524 Clear-Checksums implementation using command scope @MalloD12
- (#4905) Check for duplicate core and commercial JARs DAT-15837 @wwillard7800
- (#4799) parameter binding for DB2luw to improve performance and other trifles @MichaelKern-IVV
- (#4926) Adding properties to the update report template to allow all the update family commands to use reports DAT-15638 @wwillard7800
- (#4688) MySQL/MariaDB add extra info for date/timestamp columns for the diffChangeLog @filipelautert
- (#4579) Use native oracle BOOLEAN for >=23c | fixes #4576 @mensinda
- (#4834) Optimise the logic for tableIsEmpty check constraint @filipelautert
- (#4729) DAT-15603 Attach Azure jar to liquibase release artifacts @jandroav
🐛 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...
Liquibase v4.23.2
Liquibase 4.23.2 is a patch release.
🐛 Bug Fixes 🛠
- (#4870) Tweaked exception message for invalid formatted SQL file @wwillard7800
- (#4874) DAT-15857 - Fix for checksum upgrade in runWith change sets @wwillard7800
Liquibase v4.23.1
Liquibase 4.23.1 is a patch release.
IMPORTANT NOTE: For Pro users of native executors, there are known issues deploying updates with this release. Please download and use the 4.23.2 release or newer
Notable Changes
[PRO]
- Introduce two new commands:
set-labels
andset-contexts
to batch update the labels or contexts on existing changesets. Use these to scale database DevOps by bulk updating your changesets with one command. Or consolidate changes from different teams with different coding standards to ensure adherence to current standards. Learn more at https://docs.liquibase.com
🚀 New Features
- (#4476) [DAT-15258] Ensure Mongo extension doesnt control createIndex/dropIndex checksums for non-Mongo DBs. @filipelautert
- (#4506) Add command line args to scope DAT-15396 @wwillard7800
- (#4539) DAT-15417 PR for setLabels/setContexts build @wwillard7800
- (#4599) run tests on any branch @sayaliM0412
- (#4538) add warning message about using catalogs in Postgres (DAT-14933) @StevenMassaro
- (#4361) [DAT-14970] FormattedSqlChangeLogParser refactoring @vitaliimak
- (#4197) Consume CORE and PRO packages from GitHub Package Manager (DAT-14615) @sayaliM0412
- (#4483) Add ability to set labels and contexts in included changelogs DAT-15202 @wwillard7800
- (#4485) DAT-14929: include rows affected in update command console output @StevenMassaro
- (#4321) DAT-6585 Apt-based Linux package @jandroav
- (#4317) Reworked rollback to tag logic to look for use first occurrence of tag DAT-13057 @wwillard7800
- (#4375) switch contexts argument to contextFilter (DAT-13423) @StevenMassaro
- (#4162) Allow whitespace within a foreign key statement @sideeffffect
- (#4407) improve error message when no sql generators can be found (DAT-14688) @StevenMassaro
- (#4420) add additional MDC properties to update and diff mojos (DAT-14672) @StevenMassaro
- (#4219) Fixed CommandLineUtilsTest for german locale @nvoxland
- (#4450) Fix deploymentId not populating after locking @wwillard7800
- (#4409) DAT-15030 @sayaliM0412
🐛 Changes and Bug Fixes 🛠
[PRO]
- DAT-14909: Add changelogFile back to rollback-one/rollback-on-error mdc success messages by @abrackx in liquibase/liquibase-pro#1024
- DAT-14751 fix issues with nested flow files and logging by @wwillard7800 in liquibase/liquibase-pro#1036
- DAT-13397: Respect rollback-script argument for rollback-one-update command by @abrackx in liquibase/liquibase-pro#1037
- DAT-13423: switch contexts argument to contextFilter by @StevenMassaro in liquibase/liquibase-pro#1043
- DAT-14694: Add Pro Tag and Pro Rollback commands by @wwillard7800 in liquibase/liquibase-pro#1013
- DAT-13398: Respect contexts/labels on update-one-changeset, add changelogFile required parameter. by @abrackx in liquibase/liquibase-pro#1042
- DAT-14448 Implemented user metadata for the Flow file and cleaned up tests by @wwillard7800 in liquibase/liquibase-pro#961
- DAT-9715: change sql parser exception log level to fine by @StevenMassaro in liquibase/liquibase-pro#1079
- DAT-14791 Implement ability to exec shell commands within variables by @wwillard7800 in liquibase/liquibase-pro#1059
- DAT-12252: remove unusable pro arguments by @StevenMassaro in liquibase/liquibase-pro#1081
- DAT-14455: customize checks run output with --checks-output arg by @StevenMassaro in liquibase/liquibase-pro#1078
- fix flow command test for windows by @StevenMassaro in liquibase/liquibase-pro#1098
- DAT-8278: replace JSqlParserException with custom exception class by @StevenMassaro in liquibase/liquibase-pro#1080
- DAT-15202 Implement ability to modify labels in included changelogs by @wwillard7800 in liquibase/liquibase-pro#1083
- DAT-14615: Consume CORE and PRO artifact from GPM by @sayaliM0412 in liquibase/liquibase-pro#963
- DAT-9678: set severity exit code for SQL parser fails by @StevenMassaro in liquibase/liquibase-pro#1100
- DAT-14615: move repositories block into profile activated only on GHA by @StevenMassaro in liquibase/liquibase-pro#1122
- DAT-15384: sort checks run console output by the severity order specified in checks-output arg by @StevenMassaro in liquibase/liquibase-pro#1101
- DAT-15414 Rework to allow bash exec on Windows by @wwillard7800 in liquibase/liquibase-pro#1086
- DAT-15417 Added DBMS argument and refactored by @wwillard7800 in liquibase/liquibase-pro#1104
- DAT-15610: resolve license generator build failure that occurs on both-repo PRs by @StevenMassaro in liquibase/liquibase-pro#1157
[OSS]
- (#4370) add liquibaseHostName MDC key (DAT-14956) @StevenMassaro
- (#4452) Fix checksum upgrade changes preventing useless updates and using AbstractChangeLogHistoryService for extensions compatibility @filipelautert
- (#4353) Add support for valueSequenceNext in Snowflake @jccampanero
- (#4308) Fix issue #3317 - StringIndexOutOfBoundsException if date is set to 1970-01-01 @Mika2147
- (#4400) Fix ordering problem in ShowSummaryUtil. fixes #4399 @mensinda
- (#4416) Normalize path using static function for Strings rather than Path.nor… @ffffionn
- (#4533) decode URL encoded path in DirectoryPathHandler (DAT-15154) @StevenMassaro
- (#4581) DAT-15208 :: Changeset object added back to "Update command completed successfully" JSON @MalloD12
- (#4540) [DAT-15489] Fixes changelog-sync-to-tag ignores the tag if it is already in database after 4.23.0 @filipelautert
- (#4499) Fixed #4489: SQL Anywhere incorrectly reports VARCHAR(n CHAR) as VARCHAR(n) @mkarg
- (#4089) Fix formatted SQL parse error when property has context, labels and global attributes @droy-sandbox
- (#4362) docs file fixes, link updates @adrian-velonis1
- (#4495) Do not throw exception when runWith is empty string (DAT-14316) @abrackx
- (#4496) throw validation error on missing sqlFile (DAT-14920) @StevenMassaro
- (#4490) fix format argument for history command (DAT-13382) @StevenMassaro
- (#4470) [DAT-15327] Fix dropAll clean up behavior. @filipelautert
- (#4508) [DAT-15383] Fix checksum upgrade changes preventing useless updates and using AbstractChangeLogHistoryService for extensions compatibility @filipelautert
- (#4452) Fix checksum upgrade changes preventing useless updates and using AbstractChangeLogHistoryService for extensions compatibility @filipelautert
- (#4422) Fixed #3971: "SAP SQL Anywhere 17.0.11: Liquibase incorrectly reports that TIMESTAMP requested precision is longer than TIMESTAMP supported precision" @mkarg
- (#4453) Implements equals method on AbstractChange to make sure that we can compare Changes correctly @filipelautert
- (#4444) Improvements after 4230 @filipelautert
- (#4307) Fixes #3661 @farion
- (#4454) Fix changelogsync no longer generating deployment id. @abrackx
- (#4414) Fixes issue #4413: Undocumented IT requirement: Username "liquibase" @mkarg
- (#4417) Fixes issue #4415: "Wrong DDL syntax CREATE SEQUENCE ... AS ..." @mkarg
- (#4306) Fixes #3625 JAVA_HOME Path when parenthesis are present @JulienMa94
- (#4450) Fix deploymentId not populating after locking @wwillard7800
- (#4228) #4227 fix for BOOLEAN with precision like BOOLEAN(1) @sfrevel
- (#4354) Make CreateTableStatement backward compatible @jccampanero
- (#4427) Fix update fast check behavior @MalloD12
🤖 Security, Driver and Other Updates
8 changes
- Bump ch.qos.logback:logback-classic from 1.4.7 to 1.4.9 by @dependabot in liquibase/liquibase-pro#1153
- (#4612) deprecate snyk in favor of github advanced security @jnewton03
- (#4378) Bump snowflake-jdbc from 3.13.32 to 3.13.33 @dependabot
- (#4368) Bump jaxb-runtime from 4.0.2 to 4.0.3 @dependabot
- (#4360) Bump jaybird from 5.0.1.java8 to 5.0.2.java8 @dependabot
- (#4334) Bump testcontainers-bom from 1.18.1 to 1.18.3 @dependabot
- (#4397) Bump maven-shade-plugin from 3.4.1 to 3.5.0 @dependabot
- (#4367) Bump jaxb-core from 4.0.2 to 4.0.3 @dependabot
v4.23.0
Liquibase 4.23.0 is a major release
IMPORTANT NOTE: For Pro users of native executors, there are known issues deploying updates with this release. Please download and use the 4.23.2 release or newer
Notable Changes
[PRO]
- Introduce custom and pipeline specific fields and data, and exclude private data, into Structured Logs and into your Liquibase operations data stream with new liquibase.customlogdata.yaml file.
- The flow, history, status, and version commands have Structured Logging enhancements for improved compatibility with automated monitoring and analysis tools.
- Learn more about Liquibase's Observability and Structured Logging capabilities to generate more meaningful reports and dashboards at https://docs.liquibase.com/observability
[OSS]
- Checksums upgraded to v9, which improves whitespace handling in views, procedures, Liquibase Pro stored logic objects, and more.
-- No action is required of users to benefit from this enhancement
-- This release is backwards compatible with v8 checksums (found in 3.5 to 4.21.1 releases)
-- Console message will inform you when your checksums have been updated - Liquibase Hub de-commissioned and de-coupled from Liquibase operations. From 4.23.0 forward, Liquibase will make no Hub reporting attempts.
Breaking Changes
-
FOR MONGO DB EXTENSION USERS
-- Liquibase 4.23.0+ is not backwards compatible with pre-Mongo Pro v1.1.1 or OSS MongoDB v4.23.0 extension versions. For users of Liquibase core versions between 4.19.0 and 4.21.1, please use the previous 4.x OSS Mongo extension or Mongo Pro v1.0 release.Note: if you receive the message
Unexpected error running Liquibase: Receiver class liquibase.ext.mongodb.changelog.MongoHistoryService does not define or inherit an implementation of the resolved method 'abstract boolean isDatabaseChecksumsCompatible()' of interface liquibase.changelog.ChangeLogHistoryService.
you have incompatible versions of the MongoDB extension and Liquibase Core. Please check https://docs.liquibase.com/start/release-notes/mongodb-extension-release-notes.html for more information. -
For Developers of community-supported extension: #4310
-- This implement new method in ChangeLogHistoryService interface which may requires updates to your extension code. -
For Pro users: a bug fix for users of BOTH update-one-changeset AND ignore=true in DAT-13516 (see below)
-- If you deploy with both these conditions, and have implemented a work-around, you should inspect your work-flow for potential changes.
[PRO] What's Changed
- Add or excluded custom user metadata to logs by @StevenMassaro in liquibase/liquibase-pro#956
- DAT-13292: Decomission hub by @abrackx in liquibase/liquibase-pro#898 and #3996
- DAT-14121: add failOnError MDC and always show changesetOutcome MDC by @StevenMassaro in liquibase/liquibase-pro#945
- DAT-12946 disable snapshot generation for PRO objects for Redshift by @vitaliimak in liquibase/liquibase-pro#933
- DAT-10024: show MDC when running --version by @StevenMassaro in liquibase/liquibase-pro#969
- DAT-14110 API ability to add user metadata to the Flow model by @wwillard7800 in liquibase/liquibase-pro#941
- Test with java 20 instead of 18 by @nvoxland in liquibase/liquibase-pro#964
- DAT-13124 Finished with implementation of MDC for Flow command by @wwillard7800 in liquibase/liquibase-pro#954
- DAT-14163: mdc for status command by @StevenMassaro in liquibase/liquibase-pro#979
- DAT-14162: MDC for history command by @StevenMassaro in liquibase/liquibase-pro#981
- DAT-6620: Refactors rollbackOneUpdate, rollbackOneUpdateSql, rollbackOneChangeset, rollbackOneChangesetSql to use command framework by @abrackx in liquibase/liquibase-pro#991
- DAT-13946 Fix issue with catalogName property not being honored by @wwillard7800 in liquibase/liquibase-pro#992
- DAT-14804: fix docs links by @StevenMassaro in liquibase/liquibase-pro#998
- fix/include_liquibase_version by @sayaliM0412 in liquibase/liquibase-pro#1010
- DAT-13516: update-one-changeset command should ignore changesets with ignore=true set by @StevenMassaro in liquibase/liquibase-pro#997
- DAT-13283: improve join for snapshotting check constraints in MySQL by @StevenMassaro in liquibase/liquibase-pro#994
- DAT-14807: case-insensitive matching on keys by @StevenMassaro in liquibase/liquibase-pro#999
- DAT-13037 For rollback not required changes, do not complain about EmptyChange by @wwillard7800 in liquibase/liquibase-pro#984
- DAT-14283 Add SEARCH_PATH setting to run script for PsqlRunner by @wwillard7800 in liquibase/liquibase-pro#995
- DAT-14897: add check settings file DTO hidden parameter by @StevenMassaro in liquibase/liquibase-pro#1033
- liquibase-pro changetype metadata by @adrian-velonis1 in liquibase/liquibase-pro#942
- DAT-14307: Append keep.path to psql logFile property to create log files in temp directory by @abrackx in liquibase/liquibase-pro#1031
- DAT-12478 by @sayaliM0412 in liquibase/liquibase-pro#1007
- DAT-15167 by @sayaliM0412 in liquibase/liquibase-pro#1045
[OSS] What's Changed
- Add binary, varbinary and longvarbinary support for Snowflake #4226
- Liquibase should not fail when change log has only databaseChangeLog tag #4273
- Add v8 and v9 checksum support (DAT-14872) @StevenMassaro #4310
- Fix index descending column snapshot test by @wwillard7800 in #4251
- add failOnError MDC and always show changesetOutcome MDC (DAT-14121) by @StevenMassaro in #4158
- DAT-12945: support JSON logging in the maven plugin by @StevenMassaro in #4152
- show MDC when running --version (DAT-10024) by @StevenMassaro in #4218
- For SQL Server, if a delimiter has not been specified, then add one. DAT-13998 by @wwillard7800 in #4202
- Log when no changesets have been rolled back (DAT-11575) by @abrackx in #4209
- [DAT-6608] Refactors DropAll command as CommandStep by @filipelautert in #4171
- Test with java 20 instead of 18, as 18 is no longer supported by oracle by @nvoxland in #4208
- SQL Anywhere was never owned by Siebel, but only by SAP, Sybase, Powersoft, Watcom. by @mkarg in #4178
- Remove not using imported classes and packages in the source file. by @arturobernalg in #3836
- Replace if statements with switch statements. by @arturobernalg in #3720
- Delete unused comment code. by @arturobernalg in #3666
- Code clean up around isUpToDateFastCheck by @MalloD12 in #4016
- Refactor db-doc command to use command framework (DAT-6605) by @abrackx in #4238
- Implement autorollback for and changes by @jccampanero in #4103
- execute-sql command refactor (DAT-6609) by @abrackx in #4217
- Fix "Running Changeset: " logs written directly to stdout instead of using the maven logger by @mensinda in #4157
- Improve Javadoc. by @arturobernalg in #3841
- Remove fields that are not used or unreachable from the entry points. by @arturobernalg in #3741
- Fix javadoc references, links and spaces. by @arturobernalg in #3768
- Implement "author" command argument for diffChangelog command by @vitaliyg2 in #3990
- Prefer
ThreadLocalScopeManager
when working with Maven by @rogierslag in #4037 - Code cleanup: avoid re-calling methods by @arturobernalg in #3721
- Replace with Collections.singletonList(), Collections.emptyList(), or… by @arturobernalg in #3837
- add support for the TRAN keyword (T-SQL) by @AlexGruebel in #4099
- Switch to distribute jars generated by Java 11 allowing Jakarta cdi 4 upgrade by @filipelautert in #4119
- refactor future-rollback-sql family of commands (DAT-6610, DAT-6611, DAT-6612) by @StevenMassaro in #4243
- refactor mark-next-changeset-ran command family (DAT-6615, DAT-6616) by @StevenMassaro in #4253
- Add serialVersionUID to classes that implement Serializable. by @arturobernalg in #3680
- mdc for status command (DAT-14163) by @StevenMassaro in https...
v4.22.0
We have removed the 4.22.0 release of Liquibase. This version contains an updated algorithm for determining which changes Liquibase needs to deploy to a database. In some situations, the conversion to this new algorithm could result in eligible changes not being deployed to a target database.
Specifically, currently undeployed changesets with the runOnChange=true attribute may not be deployed if they were present in the first execution of Liquibase 4.22.0 against a given target database. If you have not upgraded to Liquibase 4.22.0, you are not impacted by this issue, or if you do not rely on runOnChange changesets which have changed before your upgrade.
We will soon provide more guidance on how to assess and remedy any potential impact for users who have already upgraded to Liquibase 4.22.0. If you are a Liquibase customer and believe you may be impacted by this issue, please open a ticket in our support portal at https://support.liquibase.com/
v4.21.1
Liquibase 4.21.1 is a patch release
Notable Changes
[PRO] Observability Initiative - Structured Logging
Structured Logging makes Liquibase operation data easily available for automated monitoring and analysis tools to read, query, and act upon in automated workflows. This feature significantly improves the way Liquibase logs its actions and events to make records machine-readable, easily-ingested, and queryable by industry-standard observability and analysis tools. Learn more at https://docs.liquibase.com/structured-logging
What's Changed
- DAT-14365: unhide log-format parameter by @StevenMassaro in #4120
- updated changelog txt to 4.21 by @suryaaki2 in #4121
- remove Hub mention from readme by @mariochampion in #4127
- Add missing parameter changeLogFile to update command when running from Main by @filipelautert in #4126
New Contributors
- @mariochampion made their first contribution in #4127
Full Changelog: v4.21.0...v4.21.1