Release Date: 22 August 2024

Aura August 2024 (Neo4j 5.22) 

Highlights

Surface for Developers and Data Scientists

  • This release includes updates to vector index settings and parameters:
    • Expanded the allowed index settings for vector-2.0 vector index provider. Newly created vector indexes can explicitly enable or disable quantization of the vectors within the index using vector.quantization.enable, new indexes will have quantization enabled by default. Previously created vector indexes will continue to work as if quantization is disabled. Please see the vector index documentation for details. 
    • Added the ability to control the advanced customisation of HNSW hyperparameters vector.hnsw.m and vector.hnsw.ef_construction. Please consult the vector index advanced configuration documentation for their meaning and their defaults.  
    • Previously vector.dimensions and vector.similarity_function were required to be set; however, with vector-2.0 indexes, this requirement has been relaxed. vector.similarity_function will default to ‘COSINE’ if not specified, and the existence of vector.dimensions will ensure additional checks. This allows the OPTIONS map in Cypher to become optional, though it is recommended to specify the dimensionality and the similarity function.  Please see the vector index documentation for details. 

Language and Graph Model

  • Added a scope clause for importing variables into CALL subqueries e.g CALL (a, b) {… }. This replaces the Importing WITH, which is now deprecated.  The new clause is documented in the subqueries Cypher manual.
  • Naked CALL subquery (no parameters), e.g CALL {…}  is deprecated and should be replaced with CALL() {…}.
  • Introduced GqlStatusObject API in server side and Bolt 5.6.  This new API publishes notifications conforming to the GQL standard, which offer an improved diagnostic message and a new GQLStatus code. The existing notifications API remains: this is an additive change. Details are provided in the notification section of the status codes documentation
  • Added the GQL conformant TIME ZONE keyword to Type Predicate Expressions as an alias to the TIMEZONE keyword.

Fixes

  • Kernel Fixes

    • Fixed an issue in block format importer where some relationships wouldn’t be imported if there were lots of relationships for some nodes. 
    • Fixed a block format indexing issue where relationship indexes could miss some updates, specifically for multiple relationship creations/updates/deletions for the same node in the same transaction. 
    • Fixed an issue where index usage statistics wouldn’t be updated for point (bounding box) queries. 
    • Increase timeout on consistency checking of dense node stores and id generators 
    • Fixed an issue for block format where trying to create an index on a lot of (1000+) labels/relationship types/properties would result in database panic. 
    • Fixed a block format recovery issue that could cause DataTreeNotEmptyException to be thrown during recovery. 
    • Publish last commit batch only after log sync. To prevent publication of index and position that will potentially point to not visible data 
    • Prevent interrupted background sampling of a large index on shutdown triggering a blocking resampling on start up. The bug was introduced in 5.15. 

  • Cypher Fixes

    • Fixed an issue where the planner would look to use the text index to search for strings that are not yet initialized. 
    • Fixed a bug whereby multiple simultaneous successful external authorizations were not possible for a given user 
    • Fixed an issue with showing Cartesian product warnings when a valid query has the predicates in a different order. 
Please refer to the changelog for full details of the changes.