Skip to content

6.1.0

Latest
Compare
Choose a tag to compare
@michael-simons michael-simons released this 13 Dec 06:54
· 33 commits to main since this release

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.

image

πŸš€ Features

  • 1b7d520 feat: Implement left and right joins on virtual tables.
  • f8ed74d feat: Add support for parsing array expressions [translator].

πŸ› Bug Fixes

  • fef8468 fix: Make executeUpdate return only the number of modified rows. (#780)

πŸ”„οΈ 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)