Releases: liquibase/liquibase
Liquibase v4.30.0
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.
- Learn more https://docs.liquibase.com/analytics
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
- DAT-18202 Implement wildcard check name argument for enable/disable in liquibase/liquibase-pro#2000 by @wwillard7800
- DAT-17058: Add analytics in liquibase/liquibase-pro#1995 by @liquibot
- DAT-17568 Added exit command action in liquibase/liquibase-pro#1689 by @wwillard7800
- DAT-18689: Add extra information to failed changesets summary in liquibase/liquibase-pro#1996 by @filipelautert
- DAT-18114 Added more logging for formatted SQL parsing in liquibase/liquibase-pro#1994 by @wwillard7800
- DAT-18455 Add SQL file path to policy checks output in liquibase/liquibase-pro#1944 by @wwillard7800
Changes
- DAT-17581 Exit with a non-zero if the changelog did not validate in liquibase/liquibase-pro#1870 by @wwillard7800
- DAT-18540 Create new ReportWriter.open(String path) method that default to no-op in liquibase/liquibase-pro#1962 by @wwillard7800
- DAT-18092: Use xdg-open to open reports in browser on linux operating systems in liquibase/liquibase-pro#1948 by @abrackx
- DAT-18531 Clear out DBCL fast check cache before each Flow action in liquibase/liquibase-pro#1933 by @wwillard7800
- DAT-18362 Handle comments when parsing include/includeAll statements in liquibase/liquibase-pro#1959 by @wwillard7800
- DAT-18463 Implement a class to be used to capture the start/end positions of a regex check for line number output in liquibase/liquibase-pro#1979 by @wwillard7800
- DAT-18869: Obfuscate IO arguments in liquibase/liquibase-pro#1999 by @abrackx
🐛 [PRO] Bug Fixes 🛠
- DAT-18819: Fix dropall behavior with snowflake in liquibase/liquibase-pro#1987 by @abrackx
- DAT-18517 Handle expansion of variables when default values are involved in liquibase/liquibase-pro#1969 by @wwillard7800
- DAT-18327: improve startup performance in liquibase/liquibase-pro#1972 by @StevenMassaro
- Fix tests to use new CommandFactory.reset() method in liquibase/liquibase-pro#1952 by @wwillard7800
🤖 [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 inloadData
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
andincludeAll
to supportlogicalFilePath
(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
- (#6263) Fix generated column value for Databricks (DAT-18148). Thanks, @filipelautert
- Maven
- (#6129) Support Hashicorp Vault settings in the Maven Plugin POM. Thanks, @wwillard7800
- MSSQL
- (#6138) Added support for
include
columns in indexes. Thanks, @stephenatwell
- (#6138) Added support for
- PostgreSQL
- (#6402) Added
pg_stat_statements
andpg_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
- (#6402) Added
🐛 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...
Liquibase v4.29.2
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
- DAT-18013: optionally suppress Liquibase SQL for *-sql commands in liquibase/liquibase-pro#1877 by @StevenMassaro
- DAT-17659: tagDatabase changes in formatted sql files in liquibase/liquibase-pro#1833 by @StevenMassaro
- DAT-18310: update CustomCheckDefaultValuesTest to check all parameters in liquibase/liquibase-pro#1887 by @StevenMassaro
- Now that report files are enabled by default, suppress them with git in liquibase/liquibase-pro#1886 by @wwillard7800
- DAT-17390: global setting for stripComments option in liquibase/liquibase-pro#1879 by @StevenMassaro
- DAT-18111: add "Report" word to title of update reports in liquibase/liquibase-pro#1890 by @StevenMassaro
- DAT-18182: show correct message when license expires on same day in liquibase/liquibase-pro#1885 by @StevenMassaro
- DAT-18342: Store Pro License Key in AWS Secrets Manager in liquibase/liquibase-pro#1896 by @sayaliM0412
- DAT-18063 Release lock after SQLPLUS timeout error in liquibase/liquibase-pro#1892 by @wwillard7800
- DAT-18360: only show expiration date message in checks run if expiration date is not null in liquibase/liquibase-pro#1895 by @StevenMassaro
- fix: expected output for help in liquibase/liquibase-pro#1900 by @filipelautert
- DAT-18396 - fix scripts resource caching in liquibase/liquibase-pro#1899 by @filipelautert
- DAT-18420 Change check that controls database checks to make sure they don't run just because we took a snapshot for a custom check in liquibase/liquibase-pro#1902 by @wwillard7800
- DAT-18440 Handle strict mode setting when doing auto rollback in liquibase/liquibase-pro#1909 by @wwillard7800
- DAT-18196: add method to LicenseService to allow custom invalid license message in liquibase/liquibase-pro#1917 by @StevenMassaro
- DAT-18389 Changing Quality Checks -> Policy Checks in liquibase/liquibase-pro#1906 by @wwillard7800
[OSS] Changelog
💥 Breaking Changes
- None
Changes
- 4.29.1 release in #6141 by @filipelautert
- DAT-17914 in #6158 by @sayaliM0412
- optionally suppress Liquibase SQL for *-sql commands (DAT-18013) in #6132 by @StevenMassaro
- changes in support of globally setting stripComments option (DAT-1739) in #6137 by @StevenMassaro
- Handle reporting of changes which are skipped due to license issues (DAT-17659) in #6114 by @wwillard7800
- DAT-17993 Improve diffChangelog between MSSQL and Oracle in #6094 by @filipelautert
- DAT-18250 DevOps :: Clean up branch build not working in #6162 by @jandroav
- compare contents of zip file against baseline (DAT-18324) in #6166 by @StevenMassaro
- maven flag for suppressLiquibaseSql (DAT-18273) in #6163 by @StevenMassaro
- Append included labels to the changeset labels when matching (DAT-16636) in #6159 by @wwillard7800
- chore: upgrade installer jdk version to 21.0.4+7 in #6119 by @filipelautert
- Fix serialization of DatabaseChangeLog with 'preConditions' for yaml in #6118 by @MalloD12
- Add additional duplicateFileMode options in #6067 by @k4pran
- Do not show update summary when using update-sql via maven plugin (DAT-18323) in #6168 by @abrackx
- Bump org.mariadb.jdbc:mariadb-java-client from 3.3.3 to 3.4.1 in #6113 by @dependabot
- fix case where expiration date is null in --version output (DAT-18360) in #6170 by @StevenMassaro
- Make Scope ID RNG no longer use SecureRandom (fix #6178 in #6179 by @danielthegray
- Use correct method for Maven updateSQL (DAT-18142) in #6198 by @wwillard7800
- DAT-18398 - Do not add version to shipped extensions + ignore current ones in #6197 by @filipelautert
- Fixes issue 6054: incorrect system table query on DB2 AS/400 platform in #6185 by @AlexCoolen
- Do not throw exception if data type is not supported by database in #6226 by @wwillard7800
- Do not release lock if not locked by this update * DAT-18370 in #6218 by @wwillard7800
- add method to LicenseService to allow custom invalid license message( DAT-18196) in #6232 by @StevenMassaro
- fix: EndDelimiter not working as expected since 4.29 in #6157 by @filipelautert
- Changing Quality Checks -> Policy Checks in #6204 by @wwillard7800
- fix release workflows in #6260 by @jandroav
- chore: restore DAT-18398 changes by @filipelautert
🤖 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
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 🛠
- DAT-18294: Correctly default check scope parameter in liquibase/liquibase-pro#1880 by @wwillard7800
- DAT-18308: DevOps :: Extensions are built against liquibase 0-SNAPSHOT https://github.com/liquibase/liquibase-pro/pull6144
🤖 [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
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
- DAT-16671: Custom policy checks in liquibase/liquibase-pro#1671 by @wwillard7800
- DAT-17725: Enable reporting by default, swallow all report generation exceptions in liquibase/liquibase-pro#1763 by @abrackx
- DAT-17871: allow multiple checks to be specified in checks enable/disable commands in liquibase/liquibase-pro#1814 by @StevenMassaro
- DAT-17490: Enhance up* DATe report to split skipped changesets into their own collapsible section in liquibase/liquibase-pro#1752 by @abrackx
- DAT-17635: add wildcard support for check-name param for checks run, show, bulkset in liquibase/liquibase-pro#1787 by @StevenMassaro
Changes
- DAT-17988: PRO: checks run --checks-output=nonapplicablechecks is broken in liquibase/liquibase-pro#1792 by @wwillard7800
- DAT-17870: add aliases for parameters in checks run, show, and create commands in liquibase/liquibase-pro#1799 by @StevenMassaro
- DAT-17972: abstract report writing to interface for IO in liquibase/liquibase-pro#1795 by @StevenMassaro
- DAT-18086: update minor versions for Azure Uber Jar in liquibase/liquibase-pro#1868 by @filipelautert
- DAT-17654: add test for starting and stopping H2 in detached mode in liquibase/liquibase-pro#1735 by @StevenMassaro
- DAT-17883 Actually expand java and defaults file properties when using --property-substitution-enabled flag in liquibase/liquibase-pro#1782 by @abrackx
- DAT-15723: include arguments in generated drop function changes for Postgres in liquibase/liquibase-pro#1765 by @StevenMassaro
- DAT-17621: add ChangesetAttributesSetTrueOrFalse check in liquibase/liquibase-pro#1754 by @StevenMassaro
- DAT-17657 Handle non-String arguments in Flow in liquibase/liquibase-pro#1721 by wwillard7800
- DAT-16603 Do not append to open stream in flow in liquibase/liquibase-pro#1738 by @wwillard7800
- DAT-8223: add split statements option to SqlUserDefinedPatternCheck in liquibase/liquibase-pro#1744 by @StevenMassaro
- DAT-17535: up* DATe parameters for regex helper checks in liquibase/liquibase-pro#1716 by @StevenMassaro
- DAT-15916 Give each SQLCMD log file a unique name by adding the change set author and id in liquibase/liquibase-pro#1732 by @wwillard7800
- DAT-16597: fully qualify names when loading DDL of sprocs and funcs in Snowflake in liquibase/liquibase-pro#1724 by @StevenMassaro
🐛 [PRO] Bug Fixes 🛠
- DAT-18207: Do not open report when headless is true in liquibase/liquibase-pro#1843 by @abrackx
- DAT-18052: make check-name case-insensitive for checks bulk-set in liquibase/liquibase-pro#1815 by @StevenMassaro
🤖 [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
- (#6089) refactor history command to use command framework (DAT-17970) @StevenMassaro
Changes
- (#6042) Fix/windows value DAT-17704 @sayaliM0412
- (#5704) Fix SQL execution issue with endDelimiter '/' and splitStatements @MalloD12
- (#6037) DAT-17939 fix java version to 17 @jandroav
- (#6032) DAT-17939 Add ability to generate Liquibase zip with extensions for any PR @jandroav
- (#6017) Fix issue 5944 @MalloD12
- (#5925) feat: FastCheck refactoring @filipelautert
- (#5802) refactored data clumps @compf
- (#6022) Changed condition to trigger tests @rberezen
- (#5988) High Level API (aka undeprecate Liquibase class) @filipelautert
- (#5929) add detached mode for running H2 (DAT-17654) @StevenMassaro
- (#5993) Move ChangeLogParameters helper methods to ChangeLogParameters class (DAT-17883) @abrackx
- (#5766) Use lombok getter and setter. @asashour
- (#5982) DAT-17770 Package BQ commercial jar inside liquibase tar ball & zip @jandroav
- (#5985) DAT-16264 DevOps :: liquibase build fails on Publish to Maven Central - Nexus @jandroav
- (#5986) fix incorrect line breaks and wrapping when generating table output (DAT-17891 and DAT-17288) @StevenMassaro
- (#5911) Fix sequenceExists check that became case sensitive for Postgresql @davidecavestro
- (#5598) Changeset execution information properties @jasonlyle88
- (#5774) Prevent spurious SET SEARCH_PATH SQL statements for Postgres during update-sql command. Fixes #5316 @mpvvliet
- (#5875) GH issue #5872 improve regex for endDelimiter and rollbackEndDelimiter @wwillard7800
- (#5957) retain original dbms string (DAT-17621) @StevenMassaro
- (#5980) DAT-17768 - Add new directory internal/ext to classpath @filipelautert
- (#5977) fully qualify names of tables when snapshotting unique constraints in Snowflake (DAT-17880) @StevenMassaro
- (#5950) add default constructor + setters to
DatabaseChangeLogLock
@rursprung - (#5961) Make the message be more accurate when an exception occurs during database close @wwillard7800
- (#5967) DAT-17842 @suryaaki2
- (#5898) Do not log stack trace if isExpected flag is true for CommandFailedException @wwillard7800
- (#1826) Prevent silent failures when two "databaseChangeLog" tags are present @danielthegray
- (#5953)
CheckSum
: add getter forstoredCheckSum
@rursprung - (#901) Microsoft SQL Server doesn't support ORDER in sequences @danielthegray
- (#5915) Added connect command to Maven DAT-17411 @wwillard7800
- (#5932) use Commons-IO where possible (DAT-17634) @StevenMassaro
- (#5812) DAT-16825 ...
v4.28.0
Liquibase 4.28.0 is a major release
Important
Liquibase 4.28.0 contains several New Capabilities and Notable Enhancements for Liquibase Pro users: DATABASECHANGELOGHISTORY with Big Query, Flow file enhancements, Formatted SQL changelog enhancements, and a new --pro-strict flag
Note
See the Liquibase 4.28.0 Release Notes for the complete set of release information.
Notable Changes
[PRO]
DATABASECHANGELOGHISTORY table with Big Query: See all changes that have been applied with Big Query
- Liquibase uses the DATABASECHANGELOGHISTORY (DBCLH) table to record a history of all changes made to the database. Unlike the DATABASECHANGELOG table that only shows active changes, the DBCLH shows all historical changes, including those that have been rolled back, dropped, or cleared. The DBCLH is now available for Big Query users.
- Learn more https://docs.liquibase.com/databasechangeloghistory
Flow file usage enhancements: Full strings as single variable values, and nested variables for "double-expansion"
- Flow files have been enhanced to allow multi-part args to be expanded from a single variable. Think
cmdArgs: { "${COMMAND_ARGS}" }
, which allows for more dynamic customization in the flowfile operations. Similarly, variables can include variables when expanded, which will in turn be expanded before processing. - Learn more https://docs.liquibase.com/flow
Formatted SQL changelog enhanced with include/includeAll functionality
- Bringing parity to formatted sql users, we are happy to announce
include
andincludeAll
capabilities from within formatted sql changelogs. - Learn more https://docs.liquibase.com/change-types/home.html#miscellaneous
New --pro-strict flag: Catch missing Pro resource files early!
- A new optional pro parameter which alerts users when specified paths to Pro resource files (flow files, checks settings files, native executor conf files, etc) or rollback scripts are missing or empty.
- Learn more https://docs.liquibase.com/parameters/pro-strict.html
[PRO] Changelog
- DAT-17543: Handle chained checks which have been skipped because of a scope mismatch in liquibase/liquibase-pro#1697 by wwillard7800
- DAT-16275: automatically open generated reports in browser in liquibase/liquibase-pro#1703 by StevenMassaro
- DAT-17485: always show update summary message in update report in liquibase/liquibase-pro#1708 by StevenMassaro
- DAT-17096: Turn on reports by default in liquibase/liquibase-pro#1675 by @abrackx
- DAT-17630: Rework logic for checking for database connection in liquibase/liquibase-pro#1706 by wwillard7800
- DAT-17400: add Snowflake integration tests in liquibase/liquibase-pro#1693 by StevenMassaro
- DAT-17540: Rename MaxRowsAllowed and added two more checks for update and delete in liquibase/liquibase-pro#1686 by wwillard7800
- DAT-17348: add condition evaluation details to conditions which evaluate to true in liquibase/liquibase-pro#1688 by StevenMassaro
- DAT-15920: error if native executor conf file or rollback file is not found and pro-strict is true in liquibase/liquibase-pro#1663 by StevenMassaro
- DAT-17601 Expand variables that are included in flow files liquibase/liquibase-pro#1694 by wwillard7800
🤖 [PRO] Security, Driver and Other Updates
15 changes
(#1652) Bump org.apache.groovy:groovy-all from 4.0.20 to 4.0.21 @dependabot
(#1673) Bump org.apache.maven.plugins:maven-shade-plugin from 3.5.2 to 3.5.3 @dependabot
(#1700) Bump com.fasterxml.jackson.module:jackson-module-jaxb-annotations from 2.17.0 to 2.17.1 @dependabot
(#1701) Bump com.fasterxml.jackson.core:jackson-databind from 2.17.0 to 2.17.1 @dependabot
(#1710) Bump info.picocli:picocli from 4.7.5 to 4.7.6 @dependabot
(#1702) Bump liquibase/build-logic from 0.7.5 to 0.7.7 @dependabot
(#1699) Bump com.fasterxml.jackson.core:jackson-annotations from 2.17.0 to 2.17.1 @dependabot
(#1698) Bump com.fasterxml.jackson.core:jackson-core from 2.17.0 to 2.17.1 @dependabot
(#1684) Bump commons-codec:commons-codec from 1.16.1 to 1.17.0 @dependabot
(#1668) Bump org.apache.maven.plugins:maven-jar-plugin from 3.3.0 to 3.4.1 @dependabot
(#1707) Bump net.snowflake:snowflake-jdbc from 3.15.1 to 3.16.0 @dependabot
(#1695) Bump com.github.spullara.mustache.java:compiler from 0.9.11 to 0.9.13 @dependabot
(#1690) Bump liquibase/build-logic from 0.7.2 to 0.7.5 @dependabot
(#1680) Bump liquibase/build-logic from 0.7.2 to 0.7.5 AI Generated Code @dependabot
(#1666) Bump actions/upload-artifact from 2 to 3 @dependabot
[OSS] Changelog
💥 Breaking Changes
- (#5619) Improve snapshot extensibility for NoSQL databases @fbiville
- (#5729) remove ValueHandlerUtil and improve CLI argument parsing (DAT-15398) @StevenMassaro
Changes
- (#5822) test PR for azure uber @sayaliM0412
🚀 New Features
- (#5899) H2 tests may end up with an incorrect list of the standard DatabaseObject types, so we need to reset the factory @wwillard7800
- (#5897) chore: invoke deprecated methods in default supports method for backwards compatibility @filipelautert
- (#5870) only run drop all if database was used in the test @StevenMassaro
- (#5848) do not allow arguments with default values to be required (DAT-17436) @StevenMassaro
- (#5833) Use Java 8 features @asashour
- (#5767) Ensure a new-line at the end of text files. @asashour
- (#5814) refactor ValidatingVisitor to use factory pattern, error if strict is set and defaults file does not exist (DAT-15920) @StevenMassaro
- (#5716) Fix typos @asashour
- (#5782) Update ChangeSetService to handle new ModifyChangeset creation (DAT-17322) @wwillard7800
- (#5715) Add
@Deprecated
annotation. @asashour - (#5828) Improve diffChangelog error message @filipelautert
- (#5799) Add new lifecycle methods for UpdateTestingRollbackCommandStep (DAT-15641) @abrackx
- (#5780) Deprecate ThreadLocalScopeManager as it is no longer required @filipelautert
- (#5714) Introduce a method with a correct name of
StringUtil.randomIdentifer()
. @asashour - (#5793) move output file handling into factory pattern (DAT-17290) @StevenMassaro
- (#5741) Implement Customizer for SpringLiquibase. @asashour
- (#5777) Prevent error when unlocking the changelog in MySQL affects zero rows and useAffectedRows is true. Fixes #5502 @mpvvliet
- (#5619) Improve snapshot extensibility for NoSQL databases @fbiville
- (#5658) User lombok Getter and Setter. @asashour
- (#5532) Record current Liquibase version on a RERUN changeset (#5529) @jdvorak001
- (#5745) Add method that can be used to verify database connection (DAT-16600) @vitaliimak
- (#5705) upgrade groovy, spock and mockito to later versions (DAT-10403) @StevenMassaro
- (#5861) Update db2 docker location by @filipelautert
- (#5860) chore: increasing test coverage by @filipelautert
- (#5853) use Apache Commons where possible, instead of homegrown solutions (DAT-17303) by @StevenMassaro
- (#5867) cleanup weekly-integration-tests.yml (DAT-17400) by @StevenMassaro
- (#4240) PD-3241: failOnError syntax by @adrian-velonis1
- (#5871) load shared database fields in tests by @StevenMassaro
🐛 Bug Fixes 🛠
- (#5908) BUGFIX Azure jar wrong suffix @jandroav
- (#5795) Fixes issue with incorrect schema in column exists precondition when checking using a snapshot @mpvvliet
- (#5783) Fixed issue that unique constraint precondition does not honor schemaName attribute on MySQL @mpvvliet
- (#5874) refactor cached prepared statement to become ThreadLocal (#5635) @adaryin
- (#5888) normalize paths in DatabaseChangeLog using commons-io (DAT-17592) @StevenMassaro
- (#5887) Fix ordering of clause for Oracle global temporary tables SQL generation @wwillard7800
- (#5869) Update diff summary results in mdc to not be recalculated (DAT-17096) @abrackx
- (#5756) Fix (MSSQL): end delimiter logic broken by BEGIN DIALOG/BEGIN CONVERSATION @MalloD12
- (#5781) Fix (MSSQL): default end delimiter applied when there is an endDelimiter applied for a given chanset @MalloD12
- (#5883) Issue 5654 includeall min max depth fixes @jasonlyle88
- (#5842) optimize DBCL checksum query and set fetch size on all statements (DAT-17267) @StevenMassaro
- (#5846) DAT-17566 @sayaliM0412
- (#5794) fix calculation of total change sets in update summary (DAT-17262) @StevenMassaro
- (#5792) fix: keep indexes list in the order returned by database @filipelautert
- (#5703) Also replace '@' character in temporary file names DAT-17292 @wwillard7800
- (#5727) fixes #5724: compare normalized file paths @jgarec
- (#5755) detect duplicate jars that do not have a version (DAT-16044) @StevenMassaro
- (#5687) fix: addColumn changes are not respecting Datatypes definitions @filipelautert
- (#5580) Support to generate a ChangeSetStatus with setting all its attributes when a changeset will be skipped @MalloD12
- (#5751) New boolean input logic allows 'off' to be valid, so fix test @wwillard7800
- (#5881) Update codeql.yml by @sayaliM0412
- (#5891)DAT-17618: Update fossa_ai.yml to use authorize by @sayaliM0412
🤖 Security, Driver and Other Updates
33 changes
- (#5864) Bump net.snowflake:snowflake-jdbc from 3.15.1 to 3.16.0 @dependabot
- (#5797) Bump org.slf4j:slf4j-jdk14 from 2.0.12 to 2.0.13 @dependabot
- (#5884) Bump org.objenesis:objenesis from 3.3 to 3.4 @dependabot
- (#5863) Bump org.apache.maven.plugins:maven-install-plugin from 3.1.1 to 3.1.2 @dependabot
- (#5839) Bump org.ap...
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...