Releases: neo4j/cypher-dsl
2021.3.4
2021.4.1
2021.4.0
2021.4.0 updates the optional dependency to Querydsl to 5.0.0. While this is API
not a breaking change, it can be when the Cypher-DSL is run together with Querydsl on the Java Module path. Querydsl
maintainer finally introduced automatic module names for all their module on which we can no reliable depend. As that
module name is however different from the generated one, it will be a breaking change on the module path. Therefore
we bump our version, too.
🧹 Housekeeping
- Upgrade Querydsl to 5.0.0
2021.3.3
2021.3.3 is a pure housekeeping release, however a release we are proud of. We do analyze this project now with SonarQube
vie Sonarcloud and are happy to announce that we have a quadruple A rating:
In addition, we finally invited Dependabot taking care of at least creating the PRs.
🧹 Housekeeping
- Fix reliability and security issues
- Fix a minor amounts of remaining code smells
- Bump several dependencies (only test and build related)
2021.2.4
2021.3.2
🚀 Features
- Add support for QueryDSL's
equalsIgnoreCase
operator - GH-204 - Provide access to identifiable expressions (See Retrieving identifiable expressions)
🧹 Housekeeping
- Fix several (compile) warnings
- Fix several spelling errors in api docs
- Upgrade Spring Data Neo4j to 6.1.5 (In module
org.neo4j.cypherdsl.codegen.sdn6
) - Upgrade Neo4j Cypher Parser to 4.3.4 (In module
neo4j-cypher-dsl-parser
). - Verify examples on JDK 17
2021.3.1
2021.3.1 is a pure bug fix release. API Guardian cannot be an optional dependency, otherwise compiling programs with -Werror
will fail, as the @API
-annotation has runtime and not class retention.
🐛 Bug Fixes
2021.3.0
2021.3 builds straight upon 2021.2.3, with few additions to the existing API, that didn’t quite fit with a patch release, but belong conceptually into this release, which brings a completely new module: The neo4j-cypher-dsl-parser.
🚀 New module: The Cypher-DSL-Parser
What’s behind that name? A Cypher-Parser build on the official Neo4j 4.3 parser frontend and creating a Cypher-DSL-AST or single expressions usable in the context of the Cypher-DSL.
The module lives under the following coordinates org.neo4j:neo4j-cypher-dsl-parser and requires JDK 11+ (the same version like Neo4j does). We created a couple of examples, but we are sure you will have tons of more ideas and therefore a looking for your feedback, regardless if we missed out something in the API, bugs or just remarks.
Here’s a sneak preview. It shows you can add a user supplied Cypher fragment to something you are building using the DSL.
var userProvidedCypher
= "MATCH (this)-[:LINK]-(o:Other) RETURN o as result";
var userStatement = CypherParser.parse(userProvidedCypher);
var node = Cypher.node("Node").named("node");
var result = Cypher.name("result");
var cypher = Cypher
.match(node)
.call(
userStatement,
node.as("this")
)
.returning(result.project("foo", "bar"))
.build()
.getCypher();
For this release a big thank you goes out to the Cypher-operations team at Neo4j, listening to our requests and ideas!
2021.2.3
2021.2.3 is a rather big release as it contains many small improvements and API functionality required by our next major
release. Those are brought in now so that they can be benefial to others without bumping a major version.
🚀 Features
- GH-195 - Add collection parameter support for
ExposesReturning
. - Introduce a
ExposesPatternLengthAccessors
for uniform access to relationships and chains thereof. [improvement] - Allow creating instances of
FunctionInvocation
directly. [improvement] - Provide factory methods of
MapProjection
andKeyValueMapEntry
as public API. - Provide
set
andremove
labels operation as public API. - Provide
set
andmutate
of expressions as public API. - Provide factory methods of
Hints
as public API. - GH-200 - Provide an API to define named paths based on a
Node
pattern. - Provide an option to escape names only when necessary. [improvement]
📖 Documentation
- Add documentation for escaping names.
- GH-198 - Fix spelling errors in JavaDoc and documentation.
🐛 Bug Fixes
- Make
Case
an interface and let it extendExpression
. [bug] - GH-197 - Fix eagerly resolved symbolic names in negated pattern conditions.
- GH-197 - Clear name cache after leaving a statement.
- GH-199 - Bring back
with(Named… vars)
.
🧹 Housekeeping
- Don't use fixed driver versions in doc.
- Pass builder as constructor argument.
- Improve
Return
andWith
internals. - Update Driver, SDN integration and Spring Boot example dependencies.
- GH-202 - Make API Guardian an optional / provided dependency.
Thanks to @meistermeier and @aldrinm for their contributions.
2021.2.2
🚀 Features
- Allow all expressions to be used as conditions. [improvement]
- Add support for unary minus and plus operations. [new-feature]
- Add support for generatic dynamic distinct aggregating function calls. [new-feature]
- GH-190 - Introduce a union type for named things and aliased expressions.
- Provide means to pass additional types to the relationship base class. [new-feature]
- GH-193 - Allow MATCH after YIELD.
- GH-189 - Provide an alternate api for methods consuming collections via vargs.
📖 Documentation
- Improve inheritance example. [static-model, codegen]
🐛 Bug Fixes
- Fix parameter collector when running as GraalVM native image
- GH-192 - Don't introduce new symbolic names in conditional pattern expressions.
🧹 Housekeeping
- GH-178 - Upgrade SDN 6 examples to Spring Boot 2.5 final.
Thanks to @meistermeier for the contribution of the API improvements in regard to collections.