Skip to content

Releases: liquibase/liquibase

v3.10.3

12 Oct 19:36
46fc9ce
Compare
Choose a tag to compare

Liquibase 3.10.3 is a bugfix release

Changes

This release merges many community-contributed pull requests. Thanks to everyone who helps make the Liquibase community strong!

  • Fixed issue with includeAll not working with some spring-packaged jars #1140
  • Fixed sequence snapshot in Postgresql #1372
  • Fixed SERIAL/BIGSERIAL handling in Postgreql #1010
  • SpringLiquibase bean can now take any ResourceAccessor implementation #936
  • Fixed snapshot of TEXT types in MSSQL #1327
  • Moved SQL logging from INFO to DEBUG #1258
  • Minor XSD cleanup #1239
  • Fixed handling of question marks in SQL for Postgresql #912
  • Fixed handling of includeAll in maven #1332
  • Do not expect access to v$session on Oracle #1422
  • Allow spaces after -- comments in formatted SQL #781
  • Fixed loadData support for enums in Postgresql #983
  • Fixed CSV handling when last column is empty #1431
  • Fixed SqlServer handling of computed columns in snapshot #1443
  • Avoid broken PostgreSQL batch logic #1447

Special 3.10.3 shout-outs

Mike Olivas, mrgrew, Robert Reeves, FrankHoellering, Steven C. Saliman, thomas, Ruud Welling, Sudipto Sarkar, alexander.schuetz, ningyu, Wes Willard and others!

v4.1.0

28 Sep 21:32
4cd5bcb
Compare
Choose a tag to compare

Liquibase 4.1 connects local Liquibase operations to Liquibase Hub

This release powers Liquibase Hub, now available in Beta. This free, secure SaaS portal provides status reporting, monitoring, and insights into your Liquibase database release automation. Learn more about Liquibase Hub Beta.

New Commands

  • registerchangelog — This interactive CLI command will register the specified changelog to a Project in your Liquibase Hub organization. You can create a Project from the CLI, or choose one already created.
  • synchub — Synchronizes your local DATABASECHANGELOG table with its Liquibase Hub counterpart.

New Concepts

  • Organizations — An Organization in Hub is the overall collection of all the elements used in the Liquibase Hub system. This includes Projects, changelogs and their changesets, connections, Operation reports, and your team members. A user can have more than one Organization and be in more than one Organization.

  • Projects — A Project in Liquibase Hub is the structured collection of the resources used by Liquibase Open Source or Liquibase Pro 4.1+. This includes changelogs, changesets, connections (e.g., JDBC URLs) and the commands run on these elements included in reports.

  • Operation reports — These reports include data sent from Liquibase Open Source or Liquibase Pro when it performs various commands on a registered changelog.

  • Users — A person who has an account in Liquibase Hub and owns one or more API Keys.

  • API Key — This key connects your Liquibase usage to specific Hub Organizations. A user can use one or more API keys in each organization. Users add the API key to their liquibase.properties or Maven POM.

Changes

  • Added support for hub.liquibase.com to CLI and Maven integrations
  • New registerChangeLog command
  • New syncHub command
  • Added hubApiKey argument
  • Added hubConnectionId argument
  • CLI commands and arguments are now case insensitive

v3.10.2

27 Jul 16:57
Compare
Choose a tag to compare

Liquibase 3.10.2 is a bugfix release

Changes

This release merges many community-contributed pull requests. Thanks to everyone who helps make the Liquibase community strong!

  • Dependency cycle error during generateChangeLog with --diffTypes=tables,columns,data
  • liquibase maven:: unable to run tests on java > 8
  • Add Banner in log out put that directs users to online resources.
  • GH PR#980 - fixed invalid carriage return coming from oracle ojdbc8 12.2.0.1
  • GH PR#976 - Changes databasechangelog sql to use legacy mode
  • Add support for java.sql.Types.TIMESTAMP_WITH_TIMEZONE (CORE-3525)
  • GH PR#929 - Fix #CORE-3493 Inconsistent resolution of ChangeLogParameters in liqu…
  • GH PR#744 - Informix data type generation with Default Value cause
  • GH PR#1176 - Add MariaDB sequence support to the 3.10.x branch
  • GH PR#1177 - CORE-3643: fixed the 'shouldValidateX' methods in the Constraints
  • GH PR#1201 - H2 unknown reserved word

v4.0.0

14 Jul 14:05
Compare
Choose a tag to compare

In this major version release, we are making Liquibase 4.0 available as a stable and production-ready release. This version contains the code previously released in 4.0 Beta and 4.0 Beta 2, as well as code released in 3.x versions, up to 3.10.1.

Improvements and Bugfixes

While Liquibase 4.0 contains code from all previous releases, please see these individual releases for detailed lists of the most recent and consequential improvements and bugfixes:

v4.0.0 Beta 2

02 Jul 18:45
Compare
Choose a tag to compare

Improvements and Bugfixes

In this second beta for the new major version release, we

  • Updated of all of the extensions to take advantage of Liquibase 4.0
  • Included a compatibility layer for any pre-4.0 community extensions
  • Stopped including root filesystem in default CLI search paths
  • Fix for --logLevel=debug/fine

How to be a Beta Tester

Please check out https://liquibase.jira.com/wiki/spaces/LB/pages/1274904689/Liquibase+Beta for details on how to get involved with the Liquibase 4.0beta2 test plan. Testing database extensions is the focus for Beta 2.

The goal is to uncover, document, and share all the issues that keep you from working how you want to work with Liquibase. Please test your setup and document any problems as new GitHub Issues or GitHub Code Contributions.

v3.10.1

02 Jul 18:51
Compare
Choose a tag to compare

Liquibase 3.10.1 is a bugfix release

Changes

  • GH PR#913 - [CORE-3471] Fixed NPE in LiquibaseUtil when MANIFEST.MF doesn't contain Bundle-Version or Build-Time
  • GH PR#917 - [Core 3463] Fix for validateX attributes of constraintsConfig
  • GH PR#919 - Fixed issued with bundling in shaded jars
  • GH PR#941 - [CORE-3520] Add support for ALWAYS generation type with PostgreSQL auto-increment column.
  • GH PR#946 - [CORE-3524] Prevent auto-increment column silently failing on Oracle.
  • GH PR#949 - [CORE-3526] TABLE is a reserved keyword in H2database since 1.4.197
  • GH PR#963 - [CORE-3556] No default values for changes' properties
  • GH PR#965 - [CORE-3558] Unique constraint name is ignored when using the addColumn change
  • GH PR#970 - Fix Java 1.9+ versions require jaxb as separate dependency
  • GH PR#971 - Add Class-Path entry to the manifest file to simplify command line execution
  • GH PR#975 - NULL date value in prepared statement requires type in MSSQL
  • GH PR#986 - XMLSerializer: Correct Map value serialization
  • GH PR#993 - Improve ChangeFactory initialization time
  • GH Issue#1035 - Change how Liquibase produces debug logs
  • GH Issue#1051 - Update liquibase-core.jar to exclude ServiceLoader files
  • GH PR#1053 - Update liquibase_autocomplete.shape
  • GH PR#1059 - Allow multiple column unique constraints on table creation.
  • GH Issue#1069 - Patch Liquibase Runner plugin for Jenkins
  • GH Issue#1070 - Enable --help without databse connection
  • GH PR#1082 - Correct include bash script
  • GH PR#1096 - Fix sequence statement generation for PostgreSQL <= 9.4
  • GH Issue#1104 - Fix maven-liquibase offline diff to prevent errors
  • GH Issue#1113 - Fix schema name using "--defaultSchemaName" on a non-default schema
  • GH PR#1120 - LiquibaseServletListener.contextInitialized() improved with Embedded Derby
  • GH Issue#1220 - Fix how JAVA_HOME env variable is handled

This release merges many community-contributed pull requests. Thanks to everyone who helps make the Liquibase community strong!

v3.10.0

12 Jun 15:33
Compare
Choose a tag to compare

Liquibase 3.10.0 offers SQL Plus integration, Custom Executor extensibility, Complementary Bash script

SQL Plus Integration and the new "runWith" attribute

There are occasions when the Liquibase in-built JDBC connector has trouble processing highly-specialized or variable-rich SQL, and a more purpose-built tool, like SQL Plus or other executor, is required.

For Liquibase Open Source and Pro users, we are introducing an optional changeset attribute, called runWith="<executor>" which allows you to specify an “executor” to run your SQL. This new capability works with changesets in Formatted SQL, XML, JSON or YAML changelogs which call inline SQL or sqlFile tagged changesets. For Pro users, there is also a new liquibase.sqlplus.conf file, which lives alongside your liquibase.properties or POM file, where you can optionally specify some useful key-value pairs for configuring your executor.

As a Liquibase Pro user, employ the new SQLPlus integration by simply adding runWith="sqlplus" to a changeset, and have SQL Plus in your PATH (or configure it in the accompanying liquibase.sqlplus.conf file). It’s now that easy to run your complex or specialized SQL changesets with SQL Plus.

Integrate your own executor

As exciting, and true to open-source and open-extensibility, Liquibase Open Source users can now write their own classes to integrate their own executor. Say, for example, you need an encrypted JDBC tool, which you want to call as “ejdbc” from your changeset? Simply follow the included example so you can take advantage of this new feature:

  • Write and configure the classes to call your tool
  • Add runWith="ejdbc" to select changesets to process them with your custom executor

New Auto-complete Bash Script

In the Liquibase 3.10 release, you will also find a new bash script for MacOS / and Git Bash for Windows users called .liquibase-completion-mac.bash. This script adds some ease of use to the CLI, including auto-complete of commands and and auto-rollout of parameters. This is a single bash script that will not affect any core Liquibase code, and can live alongside the existing bash script which has and will continue to ship with Liquibase.

v3.9.0

14 May 18:50
9cccc14
Compare
Choose a tag to compare

Liquibase 3.9.0 extends diff command with Pro capability

Liquibase Pro can help you automate drift detection at scale in your database schemas with a new structured and machine readable diff output as json. This additional capability is an Pro extension to the existing community command "diff", and is invoked with a new --format option
$> liquibase diff --format=json

This outputs a JSON structured object listing the differences between two databases (as configured in your liquibase.properties or Maven POM file under the "url" and "referenceUrl" keys.) By default, the result is output to STDOUT, which provides you with maximum flexibility to pipe the result into other tools or a processing pipeline. You can also have the output delivered to a file, using the "--outputFile=<filename>" global parameter, as in
$> liquibase --outputFile=myfile.json diff --format=json

Whether you choose STDOUT or a collection of files, you can then process this data to generate reports, to trigger actions, from alerts to diffChangeLogs, to updates, or whatever make sense for how you use Liquibase.

v4.0.0 Beta 1

20 Apr 19:26
Compare
Choose a tag to compare
v4.0.0 Beta 1 Pre-release
Pre-release

😎 Download Liquibase 4.0.0-beta1 in the Assets section at the bottom of this release note. 😎

Improvements and Bugfixes

In this major new version release, we have integrated dozens of community Pull Requests, addressing well over 100 bugs, in addition to the dozens of updates to the 3.8.x branches.

How to be a Beta Tester

Please check out https://liquibase.jira.com/wiki/spaces/LB/pages/1274904689/Liquibase+Beta for details on how to get involved with the Liquibase 4.0beta1 test plan, including code and integrations tested, not tested, and not ready for test, yet.

The underlying goal of Beta testing is to uncover, document, and share all the issues that keep you from working how you want to work with Liquibase. Please test your setup and document any problems as new GitHub Issues or GitHub Code Contributions.

What We Tested

This Major version Beta release comes with the risks of all Beta software! We have tested dozens of PRs across multiple environments interacting with multiple databases, but we cannot test all the wildly diverse ways the community uses Liquibase. But you can! In this Beta we are counting on valuable community members — like you — to put this Beta through your paces and then to file (and possibly fix) any issues which you encounter in your specific setup and use cases.

We covered the following broad categories:

  1. Where Liquibase Writes Output
  2. How Liquibase Finds Files
  3. How Liquibase Works in Integrations
  4. How Liquibase Interacts with the Database
  5. How Liquibase Pro interacts with the Database

Highlighted Changes and Bug Fixes

We made two major/breaking changes to the Liquibase Library API. These will affect anyone using extensions, but do NOT impact the main Liquibase functionality:

  • Extension classes are now loaded via the java.util.ServiceLoader system rather than the custom class finding logic we had before
  • Logging is now based on java.util.Logging with a cleaned up API

In addition to these two major changes, the following changes have been incorporated as well:

  • Fixes to ConstraintsConfig
  • ignoreLines command in formatted sql log
  • postgresql >= 10: use identity columns for autoincrement
  • Using proxy user for Oracle Connections
  • Capture table remarks on mysql
  • Add PERIOD to reserved words for MariaDB
  • Don't require columnDataType on H2 for addNotNullConstraint
  • Do not remove trailing /'s of comments like /* dsds */
  • Require type xsd:string to where element of update element/files
  • runOnChange change set runs every time even if there wasn't changed
  • Indexes with DESC sorting are not created for PostgreSQL
  • Added Ingress support
  • Support boolean in firebird 3.0
  • Change Log Parameters from Environment Variable
  • Adds clearCheckSums property in spring integration
  • Oracle datatype translation changes
  • Implement Sequence Support for MariaDB
  • Cleanup checksum classes
  • Fix Turkish uppercase column keys bug
  • Generate diff with onDelete and onUpdate
  • PrimaryKeySnapshotGenerator throws NPE for SQLite
  • Handle java.sql.Time when setting prepared statement parameter values in CSV filese
  • DB2 LUW supports boolean data type column from version 11.1.1.1
  • Offline history support not correctly closing files
  • Use computeIfAbsent to avoid Liquibase concurrency issues
  • Firebird does not support RESTRICT option on Foreign Keys
  • Liquibase was ignoring DatabaseFunction value and processing only SequenceNextValueFunction when creating tables and generating column default value.
  • Restore usage of DatabaseList.definitionMatches to match the dbms tag against the database type
  • DEPLOYMENT_ID column header not included in offline updateSql CSV
  • Can't set some parameters for snapshot & generate changelog
  • UUID type handling improvements
  • Correctly close yaml file in generateChagneLog
  • Adding restricted words for MSSQL Server Database
  • Getting a java.io.FileNotFoundException using Liquibase with Spring reactive web
  • FileSystemResourceAccessor fails with non-hierarchical URLS on classpath
  • fix oracle date literal without millis
  • fix nullPointerException when migrating RedShift
  • Prints the SQL error code on Exception
  • Fixed SetColumnRemarks for mysql
  • Allow “NOW” and “Today” literal capabilities in CSV filese
  • Add ability to disable running of Liquibase via CDILiquibaseConfig

v3.8.9

07 Apr 18:20
Compare
Choose a tag to compare

Bug Fixes & Improvements

For both Liquibase Open Source and Pro users, the following bugs were fixed in version 3.8.9:

  • Fixed an issue with how Liquibase handles SMALLINT on PostgreSQL when generating a changelog.
  • Improved generateChangeLog command to assume a diffTypes that includes "data" when the dataOutputDirectory parameter is used. Most users looking to export data as part of generateChangeLog can now simply use the dataOuputDirectory parameter without needing to specify diffTypes.
  • The --schemas parameter now works on either side of the snapshot command.
  • Enabled generatechangelog in PostgreSQL to correctly order create, function, and trigger statements.
  • Improved the use of dblink objects when using diff command.