What's Changed
Tip
This minor release bump is fully API compatible with 6.0.1, we bumped the version for two reasons:
The virtual column element_id
has been renamed to v$id
and consistently shows now in the database metadata as "generated column". The naming has been chosen on purpose to avoid any clash with nodes that have an actual property of that name (No, the elementId()
of a node is a function call, just like id()
was, it is not a property).
The second reason is for the fix in behaviour of executeUpdate
which now returns the estimated number of updated rows instead of the cumulative updates in a statement. This is in align with the JDBC Spec.
The most exciting new feature of this release is the introduction of virtual tables for relationships. The metadata does now some sampling of the graph (Similar to what is done in the schema introspection PoC or Apoc Meta) and lists relationships between labels as label1_TYPE_label2
in the data dictionary, with a v$id
column for the relationship, and v$label1_id
and v$label2_id
so that ETL tools can actual join those with the labels.
Those virtual tables are fully queryable, so that you can do a SELECT * FROM Person_ACTED_IN_Movie
, which will return the element ids of the relationship and the start and end nodes and all relationship properties and they do partake of course proper in joins.
Using the standard JOIN
syntax, the driver will translate the query to a simple pattern match, so that
SELECT p."v$person_id", name, title, roles
FROM Person p
JOIN Person_ACTED_IN_Movie pm ON pm.v$person_id = p.v$id
JOIN Movie m ON m.v$id = pm.v$movie_id
WHERE title = 'The Matrix'
ORDER BY title, name
becomes
MATCH (p:Person) -[r:ACTED_IN]->(m:Movie)
WHERE m.title = 'The Matrix'
RETURN elementId(p), p.name AS name, m.title AS title, r.roles AS roles
ORDER BY m.title, p.name
When you enumerate the tables in the FROM
clause and join inside WHERE
, the driver will match start and end nodes separately and then join on ids as well. We might change this in a future optimisation.
π Features
- 1b7d520 feat: Implement left and right joins on virtual tables.
- f8ed74d feat: Add support for parsing array expressions [translator].
π Bug Fixes
ποΈ Refactorings
- f3bd2de refactor: Improve metadata support.
π Documentation
- 5623382 docs: Store changelog with the repository.
- 52133da docs: Add example how to turn Node into Map.
π§Ή Housekeeping
- 860c969 build: Bump version.
- 785a93a Bump org.apache.maven.plugins:maven-javadoc-plugin (#802)
- 3f22be0 Bump org.graalvm.buildtools:native-maven-plugin (#801)
- 57ca1b5 Bump quarkus.platform.version from 3.17.2 to 3.17.3 (#800)
- a782b29 Bump org.jetbrains.kotlin:kotlin-stdlib-jdk8 (#798)
- 98e50da Bump com.puppycrawl.tools:checkstyle (#797)
- bfc5e23 Bump quarkus.platform.version from 3.16.4 to 3.17.2 (#796)
- 4e03283 Bump org.testcontainers:testcontainers-bom (#795)
- 2696970 Bump org.openapitools:openapi-generator-maven-plugin (#794)
- e8fd41b Bump org.hibernate.orm:hibernate-platform (#793)
- 70a6c3c Bump dev.langchain4j:langchain4j-bom from 0.36.0 to 0.36.2 (#792)
- 8f551b7 Bump spring-boot.version from 3.3.5 to 3.4.0 (#791)
- 35da2f6 Bump quarkus.platform.version from 3.16.3 to 3.16.4 (#790)
- 8b5c5f1 Bump org.hibernate.orm:hibernate-platform (#789)
- 4239005 Bump dev.langchain4j:langchain4j-bom from 0.35.0 to 0.36.0 (#788)
- 528843d Bump org.asciidoctor:asciidoctor-maven-plugin (#787)
- 238de8b Bump quarkus.platform.version from 3.16.2 to 3.16.3 (#786)
- 7a72201 Bump io.netty:netty-bom from 4.1.114.Final to 4.1.115.Final (#785)
- 75d41a8 Bump org.jooq:jooq from 3.19.14 to 3.19.15 (#781)
- deb9e9b Bump com.puppycrawl.tools:checkstyle (#784)
- 7f24cb1 Bump quarkus.platform.version from 3.16.1 to 3.16.2 (#783)
- e882122 Bump org.sonarsource.scanner.maven:sonar-maven-plugin (#782)