Well it looks like this year, Christmas came early! Here is our next version: Flyway 3.1.

The hightlights of this release are:

Redshift, Vertica and DB2 z/OS support

SQL-based callbacks

JDBC drivers shipping with the command-line tool

Renamed init into baseline

Feature / bug fix sponsoring

Redshift, Vertica and DB2 z/OS support

While Flyway 3.0 focused on the small with SQLite and Android support, this releases focuses on the big. We are expanding the large list of supported databases to three new ones in the big data and the big iron space:

Amazon Redshift

HP Vertica

DB2 z/OS

Special thanks to Nathan Vick and Christine Teig for contributing these integrations.

SQL-based callbacks

Building upon the Lifecycle Callback foundation we laid in Flyway 3.0, we now made Callbacks even more accessible to a wider audience.

You now have the option to simply drop a SQL file with the name of the callback in one of the configured locations and it will be executed at the appropriate point in the lifecycle.

Example

Suppose you are using Oracle and you regularly write migrations that perform DDL operations that invalidate objects in the MYSCHEMA schema.

With Flyway's default command-line client settings, all you need to automatically trigger a recompile of all objects after a migration run, is add a file called afterMigrate.sql to the /sql directory of your installation:

BEGIN DBMS_UTILITY.COMPILE_SCHEMA(SCHEMA => 'MYSCHEMA'); END;

And voila! It will automatically run every time after migrate completes.

JDBC drivers shipping with the command-line tool

Flyway Command-line client download numbers have been growing very rapidly (chart from Maven Central):

In fact, the command-line client has now even surpassed the Java API by number of downloads as the most popular way to use Flyway. This is primarily due to many non-JVM users, looking for a simple, polished and powerful solution to their database migration challenges.

And so we decided to take a hard look at the adoption barriers. Not surprisingly having to hunt for JDBC drivers and figuring out JDBC URL syntax turned out to be the two biggest hurdles. So we decided to tackle them.

Effective as of Flyway 3.1, the Flyway Command-line distribution now ships out of the box with JDBC drivers for the following databases:

MySQL

MariaDB

PostgreSQL

Redshift

H2

Hsql

Derby

SQLite

Additionally the config file now also contains examples for JDBC URLs for all supported databases.

No more hunting and no more guessing. Non-JVM users, welcome to Flyway.

Renamed init into baseline

We like to pride ourselves with having created the easiest and most intuitive tool to work with databases migrations. Yet sometimes, when users make the same mistakes over and over again, maybe RTFM is not the answer. And this is exactly what happened with our support for baselining existing databases: init.

Even though the docs clearly described the intended use, the name was simply poorly chosen. Users would intuitively run init against new databases, only to subsequently wonder why the migrations up to the init version would be ignored.

To eliminate this confusion once and for all, we decided to admit we made a poor choice and bite the bullet. init has now be renamed to baseline . We believe this is a more accurate and less misleading name.

To make the transition as smooth as possible, init and all associated properties have been deprecated for the remainder of the 3.x timeframe to give you sufficient time to adjust. They will then be removed as part of the next major release.

Feature / bug fix sponsoring

We strive to make Flyway as rock solid as possible and gradually evolve the feature set in a direction that makes the most sense for the project. But sometimes our schedule doesn't match yours.

To give you the opportunity to get the bug fix or feature you require when you need it, we now offer you the possibility to sponsor its development. Besides avoiding the costs and hassles of doing it yourself, these are the benefits you get:

Fast turnaround

Immediate access to pre-release binaries upon completion

Formal invoice

Competitive price based on scope

No digging in the framework internals

No setting up the complex dev environment

No implementation and debug effort

No wait/risk of rejection for a merge into the main distribution

Features sponsored in this release

For Flyway 3.1, we would like to extend special thanks to Dembach Goo Informatik who sponsored the development of the PostgreSQL COPY ... FROM STDIN support. This is a great addition, allowing for high performance bulk data imports and increased compatibility with dumps generated by pg_dump.

Thank you for contributing to making Flyway even better!

Grab it!

Flyway 3.1 packs a bunch of new features and a ton of fixes and small improvements across the board. You can find all the details in the release notes.

Thank you to everyone who reported issues and sent in pull requests.

Enjoy the release and grab it while it's hot!

All users are encouraged to upgrade.

Feel free to share, tweet or post in any way you like. Comment on Twitter under #flywaydb.