Skip to content

Releases: michael-simons/neo4j-migrations

2.0.1

12 Dec 09:18
7983054
Compare
Choose a tag to compare

What's Changed

🚀 Features

  • 1910fa4 Add a templated Java based migration that helps loading CSV data. (#777)

🐛 Bug Fixes

📝 Documentation

🧹 Housekeeping

  • c66018f Bump classgraph from 4.8.151 to 4.8.152 (#783)
  • ac9251f Bump neo4j-cypher-dsl-schema-name-support from 2022.8.0 to 2022.8.1 (#782)

🛠 Build

  • a6e932e Upgrade deprecated actions (checkout, cache, setup-java). (#778)

2.0.0

05 Dec 09:54
1682ec9
Compare
Choose a tag to compare

What's Changed

After a bit more than year after the 1.0 release, welcome Neo4j-Migrations 2.0. This release includes all the features that have been released in more than 15 releases since 1.0, including the latest changes in 1.15.1, released today as well.

The biggest change is going forward with Java 17, the current LTS release of Java. This enables us to use

  • The latest and greatest version of GraalVM
  • The current Neo4j-Java-Driver 5.3
  • Move to Spring Boot 3.0

All the areas above are intertwined. GraalVM dropped support for Java 8 a while back and will drop support for Java 11 soon. There is no way for us to keep separate versions updated for all of these.
The same applies for being available in Spring Boot 3, which does require Java 17, too.

As we had building Multi-Release-Jars before to be able to provide proper modules on the module path and already seal some interfaces, our codebase actually shrank with the move.

The biggest visible change is that our documentations is now on Neo4j-Labs: Neo4j-Migrations, beautifully rendered with Antora thanks to the fantastic support by @Mogztter and @adam-cowley.

Moving forward we will mainly bring new features to the main branch, aka into 2.x. If possible without too much hassle, we will backport them into 1.x as well. The 1.x branch will be maintained with dependency upgrades for at least as long as Spring Boot 2.7, Quarkus 2.13 and especially the Neo4j-Java-Driver 4.4 are supported. With regards to the latter, a big thank you goes out to my friend and colleague @injectives who always openly listens to my rambling and makes the Neo4j-Java-Driver the great product which it is today.

To give you an idea about the size and complexity of the project but also the change in it over the course of a year, have a look at the scc metrics from 1.0:

───────────────────────────────────────────────────────────────────────────────
                         Files     Lines   Blanks  Comments     Code Complexity
───────────────────────────────────────────────────────────────────────────────
Total                      113     11186     1522      2000     7664        220
───────────────────────────────────────────────────────────────────────────────
Estimated Cost to Develop (organic) $229.231
Estimated Schedule Effort (organic) 7,86 months
Estimated People Required (organic) 2,59

and about 13 months later, 2.0:

───────────────────────────────────────────────────────────────────────────────
                         Files     Lines   Blanks  Comments     Code Complexity
───────────────────────────────────────────────────────────────────────────────
Total                      536     58795     7882     11628    39285       1616
───────────────────────────────────────────────────────────────────────────────
Estimated Cost to Develop (organic) $1.275.068
Estimated Schedule Effort (organic) 15,08 months
Estimated People Required (organic) 7,51

And now, up to the next cool things ahead :)

🚀 Features

  • b1a4a5f Try to detect CALL {} IN TRANSACTIONS and skip managed transactions. (#743)
  • d86b14e Upgrade the project to utilize JDK17 full and proper.
  • 5f8aa39 Provide a limited set of annotations to define constraints. (#755)
  • fca152a Allow programmatic control over repeatable Java based migrations. (#726)

🐛 Bug Fixes

  • 819e8d8 Fix prepare-release.sh.
  • 9edf488 Fix jbang distribution.
  • dad1cd4 Manually check for duplicate versions and don’t rely on the constraint. (#727)
  • 0e41ee1 Add migrateBTreeIndexes cmd to CLI. (#744)

🔄️ Refactorings

  • bff7e67 Sort duplicate versions by source name.
  • dd6d1f0, 10fb84e and 45cf83d More JDK 17 related polishing.
  • 67c9f33 Add additional tests
  • c1a5538 Include reasons in CLI log when being able to render catalog items. (#723)
  • d861a9c Remove Formattable trait from catalog items.

📝 Documentation

  • e3c770a Correct spelling errors.
  • 6165e60 add adam-cowley as a contributor for infra (#740)
  • 96c9c3c add adriens as a contributor for ideas (#766)
  • 34c7c6b add michael-simons as a contributor for talk (#767)
  • d053800 add Mogztter as a contributor for code, and doc (#731)
  • 2ad8ebd Add links to articles and presentations about the project.
  • 1afe134 Update local changelog.
  • 49260d2 Clarify Java version requirements.
  • f865b5d migrate documentation to Antora (#657)

🧹 Housekeeping

  • 3a21108 Bump native-maven-plugin from 0.9.18 to 0.9.19 (#771)
  • a7869b2 Bump compile-testing from 0.19 to 0.20 (#770)
  • 432ac7a Bump checker-qual from 3.27.0 to 3.28.0 (#769)
  • 6039680 Bump neo4j-harness from 5.1.0 to 5.2.0 (#772)
  • 4ca45d7 Upgrade driver to 5.3, Spring Boot to 3.0 and Quarkus (Extension) to 2.0.
  • d20e174 Bump junit-jupiter-causal-cluster-testcontainer-extension from 2022.1.2 to 2022.1.3 and testcontainers from 1.17.5 to 1.17.6
  • ccdcdbc Bump classgraph from 4.8.149 to 4.8.151 (#763)
  • a71776c Bump archunit from 1.0.0 to 1.0.1 (#764)
  • bec24d4 Bump native-maven-plugin from 0.9.17 to 0.9.18 (#761)
  • d8e2e6b Bump neo4j-cypher-dsl-schema-name-support from 2022.7.3 to 2022.8.0 (#760)
  • 71302a7 Bump quarkus.version from 2.14.0.Final to 2.14.2.Final (#759)
  • ddd6ac0 Bump checkstyle from 10.4 to 10.5.0 (#758)
  • 9ef9d8f Bump spring-data-neo4j from 6.3.5 to 7.0.0 (#754)
  • 6237a64 Bump plexus-classworlds from 2.6.0 to 2.7.0 (#753)
  • 270e596 Bump byte-buddy.version from 1.12.18 to 1.12.19 (#751)
  • 8e4a4d9 Bump maven-install-plugin from 3.0.1 to 3.1.0 (#750)
  • 6c934b5 Bump japicmp-maven-plugin from 0.16.0 to 0.17.1 (#749)
  • 14dafc4 Bump commonmark from 0.20.0 to 0.21.0 (#747)
  • bd72f7d Bump mockito.version from 4.8.1 to 4.9.0 (#746)
  • 332f1a3 Bump neo4j-harness from 4.4.12 to 5.1.0 (#690)
  • 1a4f6d4 Bump os-maven-plugin from 1.7.0 to 1.7.1 (#734)
  • 0ae21b9 Bump maven-plugin-plugin from 3.6.4 to 3.7.0 (#735)
  • 3393102 Bump maven-plugin-annotations from 3.6.4 to 3.7.0 (#733)
  • 9f360ad Bump checker-qual from 3.26.0 to 3.27.0 (#736)
  • f2e1ca8 Bump quarkus-neo4j.version from 1.6.1 to 1.7.0 (#721)
  • 77fc359 Bump quarkus.version from 2.13.3.Final to 2.14.0.Final (#711)
  • 5d3814b Bump graal-sdk from 21.3.2 to 22.3.0

🛠 Build

  • cc349ec Set previous version to latest 1.x version.
  • 33af669 Polish native config.
  • a741a81 Remove multi-release leftovers.
  • 8cb7229 Don’t skip tests based on checking string arguments blindly.
  • 9b4368f Improve Antora includes and build
  • b6af149 Notify neo4j.com playbooks repository. (#737)
  • 13d7d45 Improve Antora version approach and module name. (#738)
  • c8e4580 Add full testing support for Neo4j 5. (#741)

Contributors

We'd like to thank the following people for their contributions:

1.15.1

05 Dec 09:08
edbbe22
Compare
Choose a tag to compare

What's Changed

📝 Documentation

🧹 Housekeeping

  • a297bfc Bump native-maven-plugin from 0.9.18 to 0.9.19 (#771)
  • 81abd64 Bump compile-testing from 0.19 to 0.20 (#770)
  • 23fecb0 Bump checker-qual from 3.27.0 to 3.28.0 (#769)

1.15.0

28 Nov 10:56
89a4801
Compare
Choose a tag to compare

What's Changed

🚀 Features

  • aca8e6a Try to detect CALL {} IN TRANSACTIONS and skip managed transactions. (#743)
  • 2efc143 Provide a limited set of annotations to define constraints. (#756)
  • 9e4d233 Add migrateBTreeIndexes cmd to CLI. (#744) (#745)

🐛 Bug Fixes

🔄️ Refactorings

🧹 Housekeeping

  • 9a3c02c Bump junit-jupiter-causal-cluster-testcontainer-extension from 2022.1.2 to 2022.1.3 and testcontainers from 1.17.5 to 1.17.6
  • 3c44944 Bump classgraph from 4.8.149 to 4.8.151 (#763)
  • b749578 Bump archunit from 1.0.0 to 1.0.1 (#764)
  • d3305f3 Bump native-maven-plugin from 0.9.17 to 0.9.18 (#761)
  • b14861d Bump neo4j-cypher-dsl-schema-name-support from 2022.7.3 to 2022.8.0 (#760)
  • 29c622b Bump quarkus.version from 2.13.3.Final to 2.13.5.Final
  • cf894af Bump checkstyle from 10.4 to 10.5.0 (#758)
  • 7161a4e Bump plexus-classworlds from 2.6.0 to 2.7.0 (#753)
  • ba2c7d0 Bump byte-buddy.version from 1.12.18 to 1.12.19 (#751)
  • a994396 Bump maven-install-plugin from 3.0.1 to 3.1.0 (#750)
  • f7fc11f Bump japicmp-maven-plugin from 0.16.0 to 0.17.1 (#749)
  • 263cc3c Bump commonmark from 0.20.0 to 0.21.0 (#747)
  • 44e792c Bump mockito.version from 4.8.1 to 4.9.0 (#746)

🛠 Build

  • 843c19d Don’t skip tests based on checking string arguments blindly.

1.14.0

14 Nov 12:10
6c43394
Compare
Choose a tag to compare

What's Changed

With 1.14.0 we created the 1.x maintenance branch. All new development will happen in the main branch and require JDK 17 from now on. We will backport dependency upgrades as far as possible and if we can bring features over from main without pulling a leg and an arm, we might do so as well.

🐛 Bug Fixes

  • c61ec51 Manually check for duplicate versions and don’t rely on the constraint. (#728)

🔄️ Refactorings

  • c9a5be4 Include reasons in CLI log when being able to render catalog items. (#723) (#724)
  • 11fc794 Deprecate public isRepeatable on MigrationVersion. (#722)

📝 Documentation.

🧹 Housekeeping

  • ec816e4 Bump os-maven-plugin from 1.7.0 to 1.7.1 (#734)
  • 486f310 Bump maven-plugin-plugin from 3.6.4 to 3.7.0 (#735)
  • b597615 Bump maven-plugin-annotations from 3.6.4 to 3.7.0 (#733)
  • 92f5b33 Bump checker-qual from 3.26.0 to 3.27.0 (#736)

🛠 Build

1.13.3

07 Nov 07:40
29a699b
Compare
Choose a tag to compare

What's Changed

New feature: Repeatable migrations

@MaurizioCasciano brought up the idea of repeatable migrations / refactoring and we delivered: Migrations named Rxzy__something.cypher (xml catalogs and Java based migrations work too) will now be repeated when their checksum changed. The repetition will be recorded in the subgraph of migrations too so that you can check for it (with a self-referential relation type REPEATED, thanks to @meistermeier for the suggestion).

If you need something that always runs, consider a callback.

⚠️ Heads up ⚠️

This is most likely the last release containing new features. 2.0.0 will drop by the end of this year in which this project will be migrated fully to Java 17 and require Java 17.

🚀 Features

  • 97819ad Add support for repeatable migrations.

📝 Documentation

  • c6b0152 Include Neo4j 5 in readme.
  • f71145e add MaurizioCasciano as a contributor for ideas (#709)

🧹 Housekeeping

  • 95afd45 Bump quarkus-neo4j.version from 1.6.0 to 1.6.1 (#710)
  • 60526b0 Bump native-maven-plugin from 0.9.16 to 0.9.17 (#712)
  • c428cd4 Bump jreleaser-maven-plugin from 1.2.0 to 1.3.1 (#713)
  • d9e1073 Bump ivy from 2.5.0 to 2.5.1 (#715)
  • 4009303 Bump picocli from 4.6.3 to 4.7.0 (#716)
  • 18206a1 Bump checkstyle from 10.3.4 to 10.4 (#714)
  • 147f803 Revert "Bump jreleaser-maven-plugin from 1.2.0 to 1.3.0 (#701)"
  • bf9a323 Bump maven-shade-plugin from 3.4.0 to 3.4.1 (#698)
  • 7e791e4 Bump jreleaser-maven-plugin from 1.2.0 to 1.3.0 (#701)
  • 491fbe4 Bump asciidoctorj from 2.5.6 to 2.5.7 (#700)
  • b0a0c5f Bump neo4j-ogm.version from 3.2.37 to 3.2.38 (#697)

1.13.2

24 Oct 08:19
1f02803
Compare
Choose a tag to compare

What's Changed

⚠️ This is a breaking change ⚠️

@SaschaPeukert notified us that 7e53e57 will break compatibility with older Spring Boot Versions (older than 2.7.0) as the new dedicated @AutoConfiguration was introduced in that release for the first time. It's debatable whether the compatibility of our tool with Spring Boot 2.6 was as promised or coincidentally, but this should not have happened and we are sorry for that.

🔄️ Refactorings

🧹 Housekeeping

  • 4e49df8 Bump mockito.version from 4.8.0 to 4.8.1 (#688)
  • 70015ae Bump quarkus.version from 2.13.2.Final to 2.13.3.Final (#687)
  • 7758897 Bump commonmark from 0.19.0 to 0.20.0 (#689)
  • cc9cb0a Bump native-maven-plugin from 0.9.14 to 0.9.16 (#691)
  • 5bb1283 Bump plexus-utils from 3.4.2 to 3.5.0 (#692)
  • 3ab929a Bump spring-boot.version from 2.7.4 to 2.7.5 (#693)
  • 660a6dc Bump neo4j-cypher-dsl-schema-name-support from 2022.7.2 to 2022.7.3 (#694)
  • d024823 Bump spring-data-neo4j from 6.3.3 to 6.3.5 (#685)
  • 64bf663 Bump error_prone_annotations from 2.15.0 to 2.16 (#684)
  • 69440fd Bump byte-buddy.version from 1.12.17 to 1.12.18 (#683)
  • 5f79a41 Bump neo4j-harness from 4.4.11 to 4.4.12 (#682)
  • 8a485c1 Bump quarkus.version from 2.13.1.Final to 2.13.2.Final (#680)

🛠 Build

  • 8ffcea1 Use inputEncoding for checkstyle plugin.

1.13.1

11 Oct 08:50
b5ba547
Compare
Choose a tag to compare

What's Changed

🐛 Bug Fixes

  • aaa4c71 Escape String literals for old fulltext indexes. (#670)
  • 2a1e724 Sanitize all formattable objects.

🔄️ Refactorings

  • d65e9f0 Delete unused, internal abstract AbstractContext class. (#671)
  • 0d81fa9 Log skipped resources if they are not dedicated Cypher callbacks. (#673)

📝 Documentation

  • ea50f6d Add missing JavaDoc.
  • ebf0305 add SergeyPlatonov as a contributor for ideas

🧹 Housekeeping

  • 1e80ea2 Bump junit-jupiter-causal-cluster-testcontainer-extension from 2022.1.1 to 2022.1.2 and testcontainers from 1.17.4 to 1.17.5
  • ce8d2fb Bump archunit from 0.23.1 to 1.0.0 (#675)
  • b2ac91c Bump checker-qual from 3.25.0 to 3.26.0 (#679)
  • e1b322a Bump quarkus.version from 2.13.0.Final to 2.13.1.Final (#676)
  • a3a4035 Bump junit-jupiter-causal-cluster-testcontainer-extension from 2022.1.0 to 2022.1.1 and testcontainers from 1.17.3 to 1.17.4

1.13.0

27 Sep 20:05
ae476b2
Compare
Choose a tag to compare

What's Changed

This exiting release - again without breaking changes - brings two important features:

  1. Migrating BTREE indexes to "future" indexes
    Neo4j 5 will drop the support for BTREE indexes. Those indexes must be replaced by RANGE, POINT or TEXT before a store upgrade is attempted. Neo4j 4.4 already "supports" RANGE and POINT for creating indexes (albeit they are not used in planning right now).
    Neo4j-Migrations offers two new refactorings for that: migrate.createFutureIndexes which will create future indexes in parallel to old ones and migrate.replaceBTreeIndexes to replace old indexes with new ones prior to upgrade
  2. Running refactorings or even whole migrations standalone without storing or requiring metadata

How does that look like? Users have 3 options:

  1. Define the new refactoring in a proper catalog based migrations (not going to reiterate that here)
  2. Build the refactoring via its api and use the new api on Migrations to apply it
Migrations migrations = new Migrations(MigrationsConfig.defaultConfig(), driver);

// Create equivalent future indexes with the suffix `_new` in parallel
Counters counters = migrations.apply(
	MigrateBTreeIndexes.createFutureIndexes("_new")
);

// or drop the old ones and create new ones
counters = migrations.apply(
	MigrateBTreeIndexes.replaceBTreeIndexes()
);

or

  1. Define a "fake" migration containing only the refactoring and run it via the CLI
    First store the following as V000__Migrate_indexes.xml (or any other conform name you prefer):
<?xml version="1.0" encoding="UTF-8"?>
<migration xmlns="https://michael-simons.github.io/neo4j-migrations">
	<refactor type="migrate.replaceBTreeIndexes">
		<parameters>
			<parameter name="typeMapping">
				<mapping>
					<name>index_on_location</name>
					<type>POINT</type>
				</mapping>
			</parameter>
		</parameters>
	</refactor>
</migration>

And run via:

./bin/neo4j-migrations -uneo4j -psecret run --migration file:./V000__Migrate_indexes.xml

Of course all variants allow to specify the type of replacement index per index / constraint and also excluding or explicitly including indexes and constraints to be migrated. The documentation covers all the details.

Thanks to @SergeyPlatonov for the ideas to explicitly run single migrations from the CLI.

🚀 Features

  • de0cc6f Provide refactorings for migrating BTREE indexes to future indexes. (#667)
  • 1609fa0 Add the ability to run migrations and refactorings directly without recording them. (#668)

📝 Documentation

  • 62a6870 Add JavaDocs where missing.

🧹 Housekeeping

  • eba3cda Bump quarkus-neo4j.version from 1.5.0 to 1.6.0
  • 430fbb6 Bump spring-boot.version from 2.7.3 to 2.7.4 (#658)
  • 322045b Bump byte-buddy.version from 1.12.16 to 1.12.17 (#659)
  • afe7a36 Bump quarkus.version from 2.12.2.Final to 2.13.0.Final (#660)
  • 0f2b47e Bump checkstyle from 10.3.3 to 10.3.4 (#661)
  • d0385a5 Bump native-maven-plugin from 0.9.13 to 0.9.14 (#662)
  • b59ea26 Bump spring-data-neo4j from 6.3.2 to 6.3.3 (#663)
  • 2dbe2c5 Bump asciidoctorj from 2.5.5 to 2.5.6 (#664)
  • a3f6497 Bump junit-bom from 5.9.0 to 5.9.1 (#665)

🛠 Build

  • 5bd4483 Ignore files with literal .extension during license check.
  • a6dde98 Make sure constraints are really gone before running more tests.
  • bf56ba8 Improve testing performance.

1.12.0

21 Sep 10:48
d32cc30
Compare
Choose a tag to compare

What's Changed

There has been no breaking changes in this release, but we have added some methods and moved things around that haven't been public before to improve your life in case you should use this library on the module path.

🚀 Features

  • ad76526 Log connection details during Spring and Quarkus startup. (#655)
  • f6f6ef9 Try to detect invalid use of enterprise constraints against community edition. (#654)

🐛 Bug Fixes

  • 08ec086 Add braces to single property node key constraints statements for elder versions. (#653)
  • 7a949bd Add several missing JMS requirements and necessities to public API. (#646)

📝 Documentation

🧹 Housekeeping

  • a8e0586 Bump maven-jar-plugin from 3.2.2 to 3.3.0 (#651)
  • 637815a Bump maven-shade-plugin from 3.3.0 to 3.4.0 (#652)
  • 8758ae4 Bump quarkus.version from 2.12.1.Final to 2.12.2.Final (#650)