Release Date: 3 October 2024
Release Note for Neo4j 5.25.1 (31 October 2024)
Kernel
- Introduction of the inspect command (neo4j-admin backup inspect) to list the metadata stored in the header of backup files that defines how backups are connected in the form of backup chains. For documentation, see Operations Manual: Inspect the metadata of a backup file.
- Importer index creation failures and constraint violations are logged in the report file rather than requiring the verbose flag to be set to observe the stack traces.
- Improve upload performance of Azure files.
- Increase Azure upload timeout.
- Allow the creation of Azure block blobs with 4000 Mib blocks.
- When creating backups to S3, you no longer need to create the empty object to mimic a directory.
- Added logging of databaseCount (excluding the system database) to anonymous Usage Data Collection. For further information please see the data collection documentation.
Surface for Developers and Data Scientists
- Deprecate the CREATE DATABASE option existingDataSeedInstance. It is replaced by the new option existingDataSeedServer. For documentation, see the Operations Manual: Create databases.
- Include additional GQL information in the JSON Query.log. For documentation, see Operations Manual: Logging -> GQL error information.
- Databases can now be seeded from a URI hosted in either AWS, Azure, or GCP. For documentation, see Operations Manual: Clustering -> Managing databases in a cluster.
Docker
- Support docker secrets only for neo4j env vars. For further details please see Operations Manual: Dock
Platform & Supportability
- Migration from Neo4j 4.4 to Neo4j 5.x is supported; please see the migration guide for further details.
- Any-to-any version rolling upgrade provides a streamlined upgrade experience. If moving from a version in the range 5.0 to 5.6, to a version in the range 5.10 to 5.15, you must first upgrade to 5.9. Otherwise, you can directly upgrade to 5.25.1.
Fixes
- Kernel Fixes
- Fixes an issue with unexpected store size growth in block format after deleting data, caused by large property values, resulting in deleted large value records rarely being reused.
- Fixes an inefficiency transferring details about the last committed transaction ID during migration of a database to block format.
- Fixes a bug where neostore.labelscanstore.db and neostore.relationshiptypescanstore.db would not be removed in migration from 4.4 aligned/standard/high_limit format to block format.
- Fixes a NullPointerException in consistency checker when it was trying to copy non-initialized tree key.
- Fixes a bug where the wrong result could be returned when using non-existing relationship types.
- Improves Azure upload failure handling to avoid cases in which it would hang indefinitely.
- Clustering Fixes
- QUARANTINED state is now cleared if the database is dropped or is allocated to another server
- Fix for some majority checkers that could disregard the non-voter and therefore provide the wrong outcome. This could impact heartbeats and votes. It had no impact on the commit index.
Bundled products
The following products have been included in the distribution – available in /products directory unless stated otherwise – and are fully compatible with this release.- APOC Core 5.25.0 – The most popular community library developed for the database, is fully supported (included in Labs directory).
- Bloom 5.x.2.16.0 – A beautiful and expressive data visualization tool to quickly explore and interact with Neo4j’s graph data platform – no coding required. Please refer to the release notes for details. (Requires a License)
- Browser 5.24.0 – Neo4j Browser is a tool for developers to interact with the graph. It is the default interface for both Enterprise and Community Editions (included in the /libs directory) of the Neo4j database.
- Neo4j GenAI Plugin 5.25.0 -The GenAI plugin delivers integrations with various generative AI services, including support for transforming text data into vector embeddings using VertexAI, OpenAI, or Amazon Bedrock. The resulting vector embeddings can be used together with Neo4j’s vector search indexes.
- Neo4j Graph Data Science 2.12.0 is a compatible version of the connected data analytics and machine learning platform that helps you understand the connections in big data to answer critical questions and improve predictions. Please refer to the release notes for further details. (GDS Enterprise requires a License.
- Neo4j Ops Manager 2.11.0 is a UI-based tool that enables Administrators to operate and observe all of their Neo4j Database Management Servers. Now includes support for Neo4j’s any-to-any upgrade. Please refer to the release notes for details. (Included in Enterprise).
Release Note for Neo4j 5.24.2 (15 October 2024)
Fixes
This release fixes a bug where the wrong result could be returned when using non-existing relationship types.Release Note for Neo4j 5.24.1 (3 October 2024)
Packaging
This release updates the bundled version of GDS to 2.11.0.
Fixes
GDS – The GDS 2.11.0 release fixes a bug which prevented projection of Neo4j graphs containing float-array node properties.Release Note for Neo4j 5.24 (27 September 2024)
Important Notice for Neo4j Java driver usersWe are aware of an issue relating to changes to the query notification service in 5.24, which can lead to outdated version of SDN or Neo4j-OGM returning java.lang.NullPointerException. To avoid this, please ensure that you are using an up-to-date version of SDN or Neo4j-OGM. The following SDN/OGM versions contain the required bug fix. All patch versions for both SDN and Neo4j-OGM are drop-in replacements and don’t require code changes. SDN: Relevant PR / Issue: https://github.com/spring-projects/spring-data-neo4j/pull/2822
-
- Since 7.0.12 (Included in Spring Boot 3.0.13)
- Since 7.1.6 (Included in Spring Boot 3.1.6)
- Since 7.2.0 (Included in Spring Boot 3.2.0)
- All of 7.3.x and higher (3.3.0)
- 3.2.41 and higher
- 3.3.0 and higher
- 4.0.6 and higher
Kernel
- Cloud object store support – Neo4j-admin commands and Cypher’s LOAD CSV can now use Azure Storage URIs where appropriate. For documentation, see Operations Manual (Backup & Restore and Import) and Cypher Manual (LOAD CSV). Examples:
neo4j-admin database backup --to-path azb://some-account/some-container/some/directory/ neo4j neo4j-admin database restore --from-path azb://some-account/some-container/some/directory/ neo4j neo4j-admin import --nodes azb://some-account/some-container/data/large.csv -- newdb LOAD CSV FROM 'azb://some-account/some-container/path/to/data.csv' AS line RETURN count(line)
- Neo4j-admin backup/restore can use a new option –temp-path to specify the temporary directory used when sending/receiving data to cloud object stores. For documentation, see Operations Manual (Backup).
- Neo4j-admin import can use a new option –schema to specify the Cypher schema commands to create indexes/constraints during the import process. For documentation, see Operations Manual (Full import).
Surface for Developers and Data Scientists
- Added the ability to dynamically reference labels and properties in SET and REMOVE clauses. For example: SET n[$prop], REMOVE n[$prop], SET n:$($label) and REMOVE n:$($label). For documentation, see SET and REMOVE.
- Added the GQL conformant OPTIONAL keyword to procedure and subquery calls. If no results are returned from the procedure or subquery, OPTIONAL CALL will return null instead of an empty result. For documentation, see Optional procedure calls and Optional subquery calls.
- Allow ORDER BY, SKIP/OFFSET, and LIMIT to be standalone clauses. Before, they could be used only in combination with RETURN, WITH, or YIELD; now, they can be used anywhere in a query. The keyword OFFSET is a synonym for SKIP. These are now GQL conformant statements. For documentation, see LIMIT, ORDER BY, SKIP and OFFSET. #26710
- Introduces DROP DATABASE name CASCADE ALIASES, specifying CASCADE ALIASES will ensure that any local aliases targeting the database or constituents in the composite database are dropped together with the database instead of throwing an error on existing aliases/constituents. For documentation, see Operations Manual (Delete composite databases and Delete databases)
Security
- Authentication and authorization providers can now be controlled at a user-level with Cypher by setting the Auth Providers option on each user. This allows each individual user to be authenticated and authorized by a combination of local user management and external user management via LDAP and Single Sign-On (SSO). This removes the limitations that exist today when managing users externally. Administrators who’ve linked a local user to an external user can now:
-
- Define a ‘HOME DATABASE’ for the user
- SUSPEND the user’s access using cypher
- Map an external user to RBAC permissions locally
- Allow the user to authenticate to the database with a user friendly name while mapping a unique identifier in an external identity provider.
Example that links a local user to an external SSO user, and sets a role for the user.
CREATE USER ian # This is a local user SET AUTH 'oidc-mysso' {SET ID ‘60a0-d58d-4353….’} # Linked to a SSO user GRANT ROLE READER TO ian # RBAC applied to the linked user
For documentation see Operations Manual (User auth providers).
- TLS version 1.3 is now enabled by default, without additional configuration required, for new deployments that enable SSL (TLS) network encryption.
- Remove all privileges from natively authenticated users who are deleted mid-session, making the behaviour consistent with being suspended mid-session.
Clustering
- dbms.cluster.recreateDatabase procedure recreates a database on a cluster based on the available server’s stores or a backup while keeping metadata such as roles and aliases. This can simplify and speed-up recovery in many scenarios, for example two data center deployments. For documentation, see Operations Manual (Managing databases in a cluster). Examples:
CALL internal.dbms.cluster.recreateDatabase("neo4j", {seedingServers: ["serverId4", "serverId5", "serverId6"], primaries: 3, secondaries: 0}) CALL internal.dbms.cluster.recreateDatabase("neo4j", {seedingServers:[]}) CALL internal.dbms.cluster.recreateDatabase("neo4j", {seedURI: "s3://bucket/backup"})
- Seed Syncing provides a more efficient approach to creating a database with a designated seeder.
- dbms.cluster.statusCheck() procedure can verify that the cluster is able to replicate transactions over the raft layer. For documentation, see Operations Manual (Cluster status check)
Platform & Supportability
- Migration from Neo4j 4.4 to Neo4j 5.x is supported; please see the migration guide for further details.
- Any-to-any version rolling upgrade provides a streamlined upgrade experience. If moving from a version in the range 5.0 to 5.6, to a version in the range 5.10 to 5.15, you must first upgrade to 5.9. Otherwise, you can directly upgrade to 5.24.
Fixes
- Kernel Fixes
- Block format import performance has been improved in cases with a high ratio between relationship data and page cache.
- Fixed a bug that slowed down format migration. The bug has the effect that in some circumstances element ids were preserved during format migration. Please note that you cannot rely on element id preservation during format migration and compaction.
- Fixed a bug only present in 5.23 that sometimes caused an invalid in-memory state regarding latest committed id after concurrent transactions. Symptoms can include failing backups with messages like: java.lang.IllegalArgumentException: Not a valid range. Range to [xx] must be higher or equal to range from [xx]. Can be fixed in 5.23 by restarting the server.
- Fixed an issue in block format where relationship ids could be incorrectly reused instantly after deletion.
- Fixed an issue in block format where the creation of label/relationship/property names larger than 8KB could lead to database panic.
- Cypher Fixes
- OIDC HTTP discovery parsing is more tolerant of missing mandatory fields in the IdP discovery response. These missing values can still be overridden by configuration.
- Fixes issues with incorrect evaluation order of UNION in some updating queries.
- Driver fixes
- Fixes a bug where duplicated HTTP headers were returned when returning browser content.
- Surface fixes
- Making error messages more general when natively authenticated users are deleted or suspended mid-session.
Bundled products
The following products have been included in the distribution – available in /products directory unless stated otherwise – and are fully compatible with this release.- APOC Core 5.24.0 – The most popular community library developed for the database, is fully supported (included in Labs directory).
- Bloom 5.x.2.15.0 – A beautiful and expressive data visualization tool to quickly explore and interact with Neo4j’s graph data platform – no coding required. Please refer to the release notes for details. (Requires a License)
- Browser 5.24.0 – Neo4j Browser is a tool for developers to interact with the graph. It is the default interface for both Enterprise and Community Editions (included in the /libs directory) of the Neo4j database.
- Neo4j GenAI Plugin 5.24.0 -The GenAI plugin delivers integrations with various generative AI services, including support for transforming text data into vector embeddings using VertexAI, OpenAI, or Amazon Bedrock. The resulting vector embeddings can be used together with Neo4j’s vector search indexes.
- Neo4j Graph Data Science 2.10.0 is a compatible version of the connected data analytics and machine learning platform that helps you understand the connections in big data to answer critical questions and improve predictions. Please refer to the release notes for further details. (GDS Enterprise requires a License. )
- Neo4j Ops Manager 1.10.4 is a UI-based tool that enables Administrators to operate and observe all of their Neo4j Database Management Servers. Now includes support for Neo4j’s any-to-any upgrade. Please refer to the release notes for details. (Included in Enterprise).
Neo4j 5.23 (22 August 2024)
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.
- GenAI integrations are now available in Neo4j Community Edition. See the Cypher Manual – GenAI Integrations documentation for details.
Kernel
- Deprecation of High Limit and Standard store formats – Support for High_limt and Standard formats is planned to end in November 2029. With the completion of Block format there’s no longer any advantage to use the High Limit or Standard formats. These formats will remain part of the product throughout the v5 and vNext server lifecycles. The last version of Neo4j to include these formats will be vNext.LTS which is planned for release in November 2026. LTS versions of Neo4j are supported for 3 years following their release. This means that support for High_limt and Standard formats is planned to end in November 2029. The documentation store formats operations manual explains the timeline and the process for changing your database’s store format. We have no plans to deprecate the Aligned format, the previous default format, used by most Neo4j databases
Clustering
- New clustering configuration settings have been added: db.cluster.raft.so_keepalive_enabled and server.bolt.additional_listen_addresses. Documentation is in the Configuration Settings – Operations Manual.
- Several metrics and configuration settings related to Akka are deprecated. For details please refer to the Metrics Reference and the configuration settings Configuration Settings – Operations Manual pages.
- New allocation procedures are added:
- dbms.cluster.deallocateDatabaseFromServer()
- dbms.cluster.deallocateDatabaseFromServers()
- dbms.cluster.deallocateNumberOfDatabases()
- dbms.cluster.reallocateDatabase()
- dbms.cluster.reallocateNumberOfDatabases(). Documentation is in the Procedures – Operations Manual.
- Several topology-related procedures can be run with the Server Management privilege starting from Neo4j 5.23. Admin privilege is no longer required to execute them. Documentation is in the Procedures – Operations Manual.
- Starting from 5.23, you can choose between discovery service v1 and v2. Instructions are in the Clustering – Operations Manual. For more details on the discovery service v2, see neo4j.com/docs/operations-manual/current/clustering/setup/discovery/
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.
Security
- Introduced checks to make sure that Authentication plugins and Auth plugins (combined authentication and authorization plugins) are forbidden from returning null or blank principals.
Platform & Supportability
- Migration from Neo4j 4.4 to Neo4j 5.x is supported; please see the migration guide for further details.
- Any-to-any version rolling upgrade provides a streamlined upgrade experience. If moving from a version in the range 5.0 to 5.6, to a version in the range 5.10 to 5.15, you must first upgrade to 5.9. Otherwise, you can directly upgrade to 5.23.
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.
- Published 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.
Bundled products
The following products have been included in the distribution – available in /products directory unless stated otherwise – and are fully compatible with this release.- APOC Core 5.23.0 – The most popular community library developed for the database, is fully supported (included in Labs directory).
- Bloom 5.x.2.14.0 – A beautiful and expressive data visualization tool to quickly explore and interact with Neo4j’s graph data platform – no coding required. Please refer to the release notes for details. (Requires a License)
- Browser 5.21.0 – Neo4j Browser is a tool for developers to interact with the graph. It is the default interface for both Enterprise and Community Editions (included in the /libs directory) of the Neo4j database.
- Neo4j GenAI Plugin 5.23.0 -The GenAI plugin delivers integrations with various generative AI services, including support for transforming text data into vector embeddings using VertexAI, OpenAI, or Amazon Bedrock. The resulting vector embeddings can be used together with Neo4j’s vector search indexes.
- Neo4j Graph Data Science 2.9.0 is a compatible version of the connected data analytics and machine learning platform that helps you understand the connections in big data to answer critical questions and improve predictions. Please refer to the release notes for further details. (GDS Enterprise requires a License. )
- Neo4j Ops Manager 1.10.4 is a UI-based tool that enables Administrators to operate and observe all of their Neo4j Database Management Servers. Now includes support for Neo4j’s any-to-any upgrade. Please refer to the release notes for details. (Included in Enterprise).
Please refer to the changelog for full details of the changes.
Neo4j 5.22.0 (25 July 2024)
Kernel
- The default store format for new databases in Enterprise Edition is now Block format. Block format supersedes all previous formats and we highly recommend its adoption. You can read about store formats and how to convert existing databases in the Store Formats documentation. If you regularly move databases from Enterprise Edition to Community Edition or require new databases to be created in a legacy format you can override this change. The configuration setting db.format can be used to specify a different default store format, see Configuration Settings documentation.
Operability & Observability
- A new –idle-timeout argument is introduced to Cypher Shell. When set it will exit the application after the specified amount of idle time in interactive mode. Documentation is available in the Cypher Shell – Operations Manual.
Cluster
- Introduces some new configuration settings, metrics and procedures related to the next version of the cluster discovery service. A full guide to this new service – how to use it and when to adopt it – will be available with the next release. New procedures:
- dbms.cluster.switchDiscoveryServiceVersion
- dbms.cluster.showParallelDiscoveryState
New configuration settings:
-
- dbms.cluster.discovery.v2.endpoints
- dbms.cluster.discovery.version
- dbms.kubernetes.discovery.v2.service_port_name
New metrics:
-
- <prefix>.cluster.discovery.memberset.reachable
- <prefix>.cluster.discovery.memberset.unreachable
Fixes
Cypher
- Backup metadata scripts and SHOW PRIVILEGES AS COMMANDS will now correctly escape special characters in procedure, function and settings globs.
- Fixes an issue with planning complex boolean expressions – see https://github.com/neo4j/neo4j/issues/13466 and https://github.com/neo4j/neo4j/issues/13473.
- Fixes a bug when resolving quoted aliases with dots in the query router.
- Improvements to validation and parsing of database names containing ‘.’ characters. Fixed some incorrect behavior with CREATE DATABASE and improved error reporting in other cases.
Docker
- Set default locale of C.UTF-8
Bundled products
The following products have been included in the distribution – available in /products directory unless stated otherwise – and are fully compatible with this release.- APOC Core 5.22.0 – The most popular community library developed for the database, is fully supported (included in Labs directory).
- Bloom 5.x.2.13.0 – A beautiful and expressive data visualization tool to quickly explore and interact with Neo4j’s graph data platform – no coding required. Please refer to the release notes for details. (Requires a License)
- Browser 5.21.0 – Neo4j Browser is a tool for developers to interact with the graph. It is the default interface for both Enterprise and Community Editions (included in the /libs directory) of the Neo4j database.
- Neo4j GenAI Plugin 5.22.0 -The GenAI plugin delivers integrations with various generative AI services, including support for transforming text data into vector embeddings using VertexAI, OpenAI, or Amazon Bedrock. The resulting vector embeddings can be used together with Neo4j’s vector search indexes.
- Neo4j Graph Data Science 2.8.0 is a compatible version of the connected data analytics and machine learning platform that helps you understand the connections in big data to answer critical questions and improve predictions. Please refer to the release notes for further details. (GDS Enterprise requires a License. )
- Neo4j Ops Manager 1.10.4 is a UI-based tool that enables Administrators to operate and observe all of their Neo4j Database Management Servers. Now includes support for Neo4j’s any-to-any upgrade. Please refer to the release notes for details. (Included in Enterprise).
Neo4j 5.21.2 (9 July 2024)
Important Notice
This patch release contains fixes for two Cypher regressions introduced in 5.21.0, and a kernel issue – see details below. Customers upgrading to 5.21 should use this patch version. Customer who have already upgraded to 5.21.0 should patch to this release to prevent the potential for errors.Fixes
- Cypher
- Fixed issue that could produce errors like:
Neo.DatabaseError.General.UnknownError key not found: VariableSlotKey(b)
for queries with...RETURN b AS renamedB, count(b)
or similar. - Fix issue that could result in error
class org.neo4j.cypher.internal.physicalplanning.ast.NullCheckReferenceProperty cannot be cast to class org.neo4j.cypher.internal.expressions.ASTCachedProperty
for some queries.
- Fixed issue that could produce errors like:
- Kernel
- This patch also fixes an issue where record IDs for any internal store in the near vicinity of 4294967295 could be invalidly marked as deleted when growing the ID space beyond that particular ID.
Neo4j 5.21 (28 June 2024)
Important Notice
5.21.0 has introduced a regression causing some queries to generate the error signature:key not found: VariableSlotKey(ke)Prefixing the affected query with runtime=legacy should provide a workaround in the short-term, while we continue to work on a fix for the issue. We expect to release a patch shortly.
Surface for Developers and Data Scientists
- The DUMP/LOAD/BACKUP/RESTORE/AGGREGATE/CHECK/IMPORT commands and Cypher’s LOAD CSV can now use Google Storage URIs. For details refer to the Backup and restore and Import operations Manual. For example:
neo4j-admin database backup --to-path=gs://some-bucket/some/directory/myBackup.backup neo4j neo4j-admin database restore --from-path=gs://some-bucket/some/directory/myBackup.backup neo4j neo4j-admin import --nodes gs://my-bucket/data/large.csv -- newdb
and
LOAD CSV FROM 'gs://some-bucket/some/path/to/data.csv' AS line RETURN count(line)
- Greatly improved scalability of the block format importer, allowing for good performance even for large data sets.
- Metric <prefix>.store.size.database.available_reserved becomes public. This allows us to estimate reserved but available space in the database, in bytes. See Monitoring and Metrics reference documentation.
- The dbms.cluster.routing.getRoutingTable() signature has been marked as deprecated. For documentation see the procedures operations manual
- A new Bolt metric prefix>.dbms.bolt.worker_thread_bound_time shows the amount of time in milliseconds that worker threads spent bound to a given connection. See Monitoring and Metrics reference documentation for further details.
- New configurations for full-text indexes (for more information see the configuration settings operations manual:
-
db.index.fulltext.eventually_consistent_apply_parallelism
-
db.index.fulltext.eventually_consistent_refresh_interval
-
db.index.fulltext.eventually_consistent_refresh_parallelism
-
Language and Graph Model
- Introduces support for CALL {…} IN CONCURRENT TRANSACTIONS. This optimizes the use of available processing resources, enabling subqueries to be broken up into multiple batches and executed concurrently. For details see Subqueries in Transactions – Cypher manual. Syntax:
CALL { subQuery } IN [[concurrency] CONCURRENT] TRANSACTIONS [OF batchSize ROW[S]] [REPORT STATUS AS statusVar] [ON ERROR {CONTINUE | BREAK | FAIL}];
- Property-based access control allows creation of simple data-driven rules to control READ and TRAVERSE privileges on nodes. For example, to specify that users with the reader role should be able to view the name property of p:Person nodes in cases where p.classificationLevel < 5 , use the following command:
GRANT READ {name} ON GRAPH * FOR (p:Person) WHERE p.classificationLevel < 5 TO reader.
For details refer to the Property Based Access Control operations manual.
- This release introduces CYPHER statements: ALL SHORTEST, SHORTEST k, SHORTEST k GROUPS, ANY. The new statements also support Quantified Path Patterns, combining shortest path-finding with the expressiveness of QPPs. For details please see the Shortest Path Cypher Manual.
- A new SubtractionNodeByLabelsScan operator delivers improved matching performance for label expressions with negation such as:
MATCH (:A1&A2..&!B1&!B2...)....
For more information refer to Operators Cypher manual.
- For GQL conformance we have introduced upper() and lower() functions, which are aliases for the toUpper() and toLower() functions. For more detail please refer to the Functions Cypher manual.
- Cypher now parses queries using the ANTLR-based parser by default. This can be disabled with the configuration setting internal.cypher.parser.antlr_enabled=false.
- A new deprecatedBy column has been added to the output of SHOW PROCEDURES [YIELD *] and SHOW FUNCTIONS [YIELD *] to show if the deprecated procedure/function has a replacement. For more details please refer to the Listing Procedures Cypher manual.
- FOREACH will now interpret scalar values as a list, similar to UNWIND.
Security
- Add ‘Bearer’ token authentication support to the HTTP server.
- Netty-tcnative drivers are provided in <neo4j-home>/lib adding support for OpenSSL 3 network encryption. This allows customers to configure their database for FIPS 140 compliance.
Platform & Supportability
- Migration from Neo4j 4.4 to Neo4j 5.x is supported please follow the migration guide available here.
- Any-to-any version rolling upgrade provides a streamlined upgrade experience and supports from 5.0 to 5.9 before upgrading to 5.21, then with support for direct upgrades to any version after 5.21.
Fixes
- Kernel Fixes
- Bug fix for page cache metric pagecache.usageratio, now accurate when transactions are open
- Fix error when executing SHOW CONSTRAINTS in a transaction where a constraint has been created. Constraint IDs are not allocated until commit; rather than returning an error, we now render the ID as null.
- Cypher & Surface Fixes
- Update log message to error level when index recovery cleanup fails
- Fixes a bug where it’s no longer possible to drop/replace session database
- Fixes a bug where username is always logged with value null.
- Correct error messages displayed when starting a DBMS when unable to determine the admin user.
- Check OIDC token expiry at the start of tx, even when OIDC only configured for AuthN, not AuthZ. Treat OIDC token expiry as AuthN error.
Neo4j 5.20 (23 May 2024)
Get Neo4j v5 here Anonymous usage data reporting: Neo4j 5.20 sends a small amount of anonymous usage data back to Neo4j. This helps us understand how our products are used and improve them. The reporting can be disabled with the configuration setting dbms.usage_report.enabled=false. For a full description of the reported data, please refer to the Anonymous usage data report documentation page.Kernel
- Allow S3 objects to be accessed from alternative backends via the system properties (aws.endpointUrls3, aws.endpointUrlS3 or aws.endpointUrl) or environments variables (AWS_ENDPOINT_URL_S3 or AWS_ENDPOINT_URL). For details refer to the Backup and restore – Operations Manual.
- Full Neo4j backups created by Enterprise Edition can now be loaded using neo4j-admin database load, including into Community Edition. For details, refer to Restore a database dump – Operations manual.
- The copy command now provides a command option –copy-schema, which copies indexes and constraints from the source database to the target database. For details, refer to the Copy a database store – Operations manual.
- Incremental import (neo4j-admin database import incremental) now supports Block format. For details, please refer to the Incremental import documentation page.
Operability & Observability
- A separate timeout can be configured for the HTTP API: server.http.transaction_idle_timeout. This replaces the removed dbms.rest.transaction.idle_timeout.Please refer to the Configuration setting – operations manual for more details.
- Add a new deprecatedBy column to SHOW PROCEDURES and SHOW FUNCTION to show if a procedure/function has a replacement when it has been deprecated.
- Add option to specify access mode in Cypher shell by command line argument –access-mode read/write or command :access-mode read/write. Please refer to the Cypher Shell – Operations manual for more details.
Language and Graph Model
- It is now possible to reference variables from within a Quantified Path Pattern (QPP) that are not defined directly inside the QPP. For example:
MATCH (x) MATCH ((a)--(b) WHERE a.h >x.h)*(s)-->(u) RETURN *
To use x as a predicate, it is no longer necessary for it to have been previously defined; so this query can now be rewritten as:
MATCH (x)-->(y)((a)-[e]->(b) WHERE a.h > x.h)* RETURN *
- To further comply with the GQL specification, we have extended the existing trim(), ltrim() and rtrim() functions to optionally allow the specification of which characters to trim, as well as the addition of a btrim() function which trims both ends of a string. For example, RETURN BTRIM(‘xyzzyNeo4jzyx’, ‘xyz’) returns ‘Neo4j’. For details, please refer to the String function – Cypher manual.
- Deprecate property references that depend on the order of evaluation within a MERGE clause, for example:
MERGE (a {prop:'p'})-[:T]->(b {prop:a.prop}).
The following is still allowed:
MATCH (a {prop:'p'}) MERGE (b {prop:a.prop}).
Security
-
New config option dbms.security.http_static_content_security_policy_header to provide greater configurability of the Content-Security-Policy header when returning static content. Please refer to the Configuration setting – operations manual for more details.
Platform & Supportability
- Migration from Neo4j 4.4 to Neo4j 5.x is supported. Please refer to the Neo4j 5 upgrade and migration guide.
- Any-to-any version rolling upgrade provides a streamlined upgrade experience and supports from 5.0 to 5.9 before upgrading to 5.20, then with support for direct upgrades to any version after 5.20.
Fixes
-
Kernel Fixes
- Use the correct setting name in the error message when the db.memory.transaction.max limit is exceeded.
- Fixes a few circumstances where vector similarity scores were provided slightly outside of their documented range due to aggregated floating point uncertainty in large dimensional vectors.
- Fixes a performance issue when recovering from a crash where the database contains a large number of tokens, and the recovery stream also contains a large number of property key, label and relationship type token creations. This fix will significantly reduce the time taken to apply the recovery stream.
-
Cypher Fixes
- Improve back-pressure in parallel runtime to prevent certain query plans- e.g. with existential subqueries – from eagerly accumulating too many intermediate results on servers with high CPU counts.
- To ensure we generate valid Cypher in cases when special characters are encountered, backup metadata scripts and SHOW PRIVILEGES AS COMMANDS now correctly escape special characters in node, relationship, property and usernames.
- Fixed a bug that generated wrong path results for undirected or left directed QPPs
-
Clustering
- The “available” HTTP endpoint now correctly returns ‘false’ if the database is in “store copying” state.
Bundled products
The following products have been included in the distribution – available in /products directory unless stated otherwise – and are fully compatible with this release.- APOC Core 5.20.0 – The most popular community library developed for the database, is fully supported (included in Labs directory).
- Bloom 5.20.2.11.0 – A beautiful and expressive data visualization tool to quickly explore and interact with Neo4j’s graph data platform – no coding required. Please refer to the release notes for details. (Requires a License)
- Browser 5.15.0 – Neo4j Browser is a tool for developers to interact with the graph. It is the default interface for both Enterprise and Community Editions (included in the /libs directory) of the Neo4j database.
- Neo4j GenAI Plugin 5.20.0 -The GenAI plugin delivers integrations with various generative AI services, including support for transforming text data into vector embeddings using VertexAI, OpenAI, or Amazon Bedrock. The resulting vector embeddings can be used together with Neo4j’s vector search indexes.
- Neo4j Graph Data Science 2.6.7 is a compatible version of the connected data analytics and machine learning platform that helps you understand the connections in big data to answer critical questions and improve predictions. Please refer to the release notes for further details. (GDS Enterprise requires a License. )
- Neo4j Ops Manager 1.10.2 is a UI-based tool that enables Administrators to operate and observe all of their Neo4j Database Management Servers. Now includes support for Neo4j’s any-to-any upgrade. Please refer to the release notes for details. (Included in Enterprise).
Neo4j 5.19 (12 April 2024)
Get Neo4j v5 hereOperability & Observability
- Cypher LOAD CSV from AWS S3 – on Enterprise databases LOAD CSV now allows an AWS S3 cloud storage URI to be specified as the source of the data. This behavior can be disabled by setting dbms.security.allow_csv_import_from_file_urls to false. This setting defaults to true in self-managed instances, but is set to false in Aura. (A future release will add an additional setting for disabling cloud storage access.) Documentation is available here. Example: LOAD CSV FROM ‘s3://some-bucket/some/path/to/data.csv’ AS line RETURN count(line)
- Bulk import directly from AWS S3 – neo4j-admin database import command on Enterprise databases now accepts an AWS S3 cloud URI as the data source. Documentation is available here. Example: neo4j-admin import –nodes s3://my-bucket/data/large.csv — newdb
- Backup and restore databases directly to/from AWS S3 – neo4j-admin commands can now accept an AWS S3 cloud storage URI on Enterprise databases. Documentation is available here for backup, restore, aggregate, and check. Example:neo4j-admin database backup –to-path s3://some-bucket/some/directory/ neo4j neo4j-admin database restore –from-path s3://some-bucket/some/directory/ neo4j
- Write database dump files directly to AWS S3 – command can now accept an AWS S3 cloud storage URI on Enterprise databases. Documentation is available here. Example: neo4j-admin database dump –to-path s3://some-bucket/some/directory/ neo4j.
- Load database dump files directly from AWS S3 – command can now accept an AWS S3 cloud storage URI on Enterprise databases. Documentation is available here. Example: neo4j-admin database load –from-path s3://some-bucket/some/directory/ neo4j
- Plan descriptions produced by EXPLAIN and PROFILEnow provide additional information about planned eager operators in the ‘Detail’ column, improving explainability.
Surface for Developers and Data Scientists
- GenAI plugin support for Vertex AI taskType and title embedding parameters
- GenAI plugin support for Vertex AI vector encoding models textembedding-gecko@002, textembedding-gecko@003, and textembedding-gecko-multilingual@001.
Language and Graph Model
- An optional keyword DISTINCT can now be used after UNION as the explicit form of a UNION with duplicate removal. Users now have the options of UNION ALL, UNION DISTINCT or UNION (the existing behavior, which behaves as UNION DISTINCT). Documentation is available here.
- For LIST and STRING concatenation, || can now be used as a synonym of + Documentation is available here and here.
Scale and Availability
- A new and improved eagerness analysis algorithm reduces the number of eager operators and improves explainability and performance, and reduces memory utilization.
- Improvement to the ENABLE SERVER / ALTER SERVER commands which now validate user-supplied database names against allowed and denied database values, to preventing exceptions resulting from invalid values – such as putting commas in string values rather than between, or attempting to use wildcard patterns (which are not supported).
Platform & Supportability
- In line with OpenID Connect Core 1.0 updates to errata set 2, remove checks on the azp claim in OIDC tokens when there are multiple values in the aud claim.
- Update to Apache Shiro 2.0.0
- Migration from Neo4j 4.4 to Neo4j 5.x is supported please follow the migration guide available here.
- Any-to-any version rolling upgrade provides a streamlined upgrade experience and supports from 5.0 to 5.19 before upgrading to 5.13, then with support for direct upgrades to any version after 5.13.
Security
- Permissions on /var/lib/neo4j/bin are now set to 755.
Fixes
- Kernel Fixes
- A fix that avoids database issues following a leader switch in clustered setups on 5.18. We now perform an extra lease check to ensure a token’s replicated state is current before checking its existence in the database. This prevents attempts to create duplicate tokens post-switch, which can cause database panics.
- Fixed transaction logs metrics that weren’t incremented in a cluster setup.
- Fixed a rare issue in clustered setups where frequent leader switches could cause some internal record IDs to be reused.
- Fixed a problem in CDC Change Identifier that occurs, for example, where a backup is restored to a point in time before an active CDC subscriber. In such cases, the current change ID would have a transaction ID ahead of the restored DB; and a subsequent transaction would have a commit timestamp before the new changes. We now validate change identifiers against the current transaction log for the provided transaction ID, identifying such situations and providing an error to the user.
- Fixed a problem when the verbose flag was set while using neo4j-admin to output a dump file. This would cause both outputs to be written to standard out, resulting in garbage. When running neo4j-admin database dump –to-stdout neo4j any logging output is now directed to standard err, and the database dump will be directed to standard out.
- Cypher Fixes
- Bug fixes and security updates on IMMUTABLE privileges
- Fix a bug in the pipelined runtime where a fused pipeline following a CALL IN TRANSACTION subquery without RETURN could have generated incorrect code for reading from input rows, which could lead to an IndexOutOfBoundsException.
Bundled products
The following products have been included in the distribution – available in /products directory unless stated otherwise – and are fully compatible with this release.- APOC Core 5.19.0 – The most popular community library developed for the database, is fully supported (included in Labs directory).
- Bloom 2.11.0 – A beautiful and expressive data visualization tool to quickly explore and interact with Neo4j’s graph data platform – no coding required. Please refer to the release notes for details. (Requires a License)
- Browser 5.15.0 – Neo4j Browser is a tool for developers to interact with the graph. It is the default interface for both Enterprise and Community Editions (included in the /libs directory) of the Neo4j database.
- Neo4j GenAI Plugin 5.19.0 -The GenAI plugin delivers integrations with various generative AI services, including support for transforming text data into vector embeddings using VertexAI, OpenAI, or Amazon Bedrock. The resulting vector embeddings can be used together with Neo4j’s vector search indexes.
- Neo4j Graph Data Science 2.6.5 is a compatible version of the connected data analytics and machine learning platform that helps you understand the connections in big data to answer critical questions and improve predictions. Please refer to the release notes for further details. (GDS Enterprise requires a License. )
- Neo4j Ops Manager 1.10.1 is a UI-based tool that enables Administrators to operate and observe all of their Neo4j Database Management Servers. Now includes support for Neo4j’s any-to-any upgrade. Please refer to the release notes for details. (Included in Enterprise).
Neo4j 5.18.1 (18 March 2024)
This is a patch release which fixes an issue discovered in 5.18.0. Customers are strongly advised to upgrade from 5.18.0 to 5.18.1 as soon as possible to mitigate this issue. Customers upgrading to 5.18 from a previous version should use 5.18.1 or later.Fixes
- Fix an issue with a memory leak which could cause CPU usage to increase over time.
Neo4j 5.18 (13 March 2024)
Highlights
Surface for Developers and Data Scientists
- The GenAI Plugin introduces and default to a new vector search index provider, vector-2.0, which brings:
- Supports for up to 4096 dimensional vectors and integral element vectors
- An improved cosine similarity implementation
- Relationship vector indexes.
- Added support in the GenAI Plugin for the OpenAI text-embedding-3-large and text-embedding-3-small models. These new models have the optional dimensions::INTEGER configuration option, as they support shortening on both OpenAI and Azure OpenAI.
- Added support for using Azure OpenAI as the embedding provider in the GenAI Plugin. (Documentation of the GenAI Plugin is here.)
Language and Graph Model
- Extended the Simple CASE expression to allow predicate expressions (e.g. WHEN IS NOT NULL THEN 1) and comparison operators (e.g. WHEN <1 THEN ‘small‘, and also to allow comma-separated WHEN operands (e.g. WHEN ‘red’, ‘blue’, ‘green’ THEN ‘colourful’). (Documentation is here.)
- Adds support to execute CALL IN TRANSACTIONS on composite databases. (Documentation is here.) For example:
LOAD CSV FROM ‘%s’ AS line CALL { USE %s WITH line CREATE (n:Number {value:integer(line[0])}) RETURN n } IN TRANSACTIONS OF 1 ROW RETURN n.value
- INSERT can now be used as a synonym of CREATE when creating graph elements (documentation is available here).
- Added pairwise vector similarity functions vector.similarity.euclidean and vector.similarity.cosine (documentation is available here).
- CREATE VECTOR INDEX for relationship vector indexes (requires ‘vector-2.0‘ index provider)
- Documentation for vector indexes is here; see also documentation for syntax and procedures.
Fixes
- Cluster
- Fixes an issue where a cursor could be kept open pointing to an old raft log file which could block pruning from properly deleting log history.
- Kernel
- The GenAI Plugin now handles null resource(s) more inline with Cypher. Rather than throwing, it now returns a null vector. This removes the requirement for IS NOT NULL filtering when performing large operations.
Bundled products
The following products have been included in the distribution – available in /products directory unless stated otherwise – and are fully compatible with this release.- APOC Core 5.18.0 – The most popular community library developed for the database, is fully supported (included in Labs directory).
- Bloom 2.11.0 – A beautiful and expressive data visualization tool to quickly explore and interact with Neo4j’s graph data platform – no coding required. Please refer to the release notes for details. (Requires a License)
- Browser 5.15.0 – Neo4j Browser is a tool for developers to interact with the graph. It is the default interface for both Enterprise and Community Editions (included in the /libs directory) of the Neo4j database.
- Neo4j GenAI Plugin 5.18.0 -The GenAI plugin delivers integrations with various generative AI services, including support for transforming text data into vector embeddings using VertexAI, OpenAI, or Amazon Bedrock. The resulting vector embeddings can be used together with Neo4j’s vector search indexes.
- Neo4j Graph Data Science 2.6.2 is a compatible version of the connected data analytics and machine learning platform that helps you understand the connections in big data to answer critical questions and improve predictions. Please refer to the release notes for further details. (GDS Enterprise requires a License.
- Neo4j Ops Manager 1.10.0 is a UI-based tool that enables Administrators to operate and observe all of their Neo4j Database Management Servers. Now includes support for Neo4j’s any-to-any upgrade. Please refer to the release notes for details. (Included in Enterprise).
Neo4j 5.17 (23 February 2024)
Highlights
Surface for Developers and Data Scientists
- String normalization function (NORMALIZE) and predicate expression (IS [NOT] NORMALIZED), making it possible to generate a canonical form of a Unicode string and determine if two Unicode strings are equivalent to each other. Documentation is available here and here.
- Cypher Shell control of statement history, both via argument (–history <path>|in-memory, or via the NEO4J_CYPHER_SHELL_HISTORY environment variable. Documentation is available here.
- Cypher Shell ability to include notifications in output when running in interactive mode, using the –notifications option when starting cypher shell. Documentation is available here.
Language and Graph Model
- Indexes and Constraints: On attempting to create an index or constraint (CREATE INDEX|CONSTRAINT… IF NOT EXISTS), we now return a notification if the index/constraint to be created already exists. Similarly, on attempting to drop an index or constraint (DROP INDEX|CONSTRAINT… IF EXISTS), we now return a notification if the index/constraint to be dropped does not exist. Documentation is available here and here.
- Neo4j GenAI Integrations – available only in Aura – compatible with various generative AI services, including support for transforming text data into vector embeddings using VertexAI, OpenAI, or Amazon Bedrock. The resulting vector embeddings can be used together with Neo4j’s vector search indexes. Documentation is available here.
Platform & Supportability
- Block format: Building upon Neo4j’s decades of experience with graph data, Block format lays out the data on disk in a structure that greatly increases page cache efficiency and prevents data fragmentation. Block Format is now the default storage format for new databases created on Aura Pro. See blog post.
- Add support for HTTP/2 servers (documentation is here) and RHEL 9 Docker images (documentation here).
Fixes
- Cluster
- Improve caching when obfuscating literals in the query log. This fixes an issue on composite databases where queries with obfuscated literals were being incorrectly identified as cache misses.
- Add config for Netty connection timeout dbms.cluster.network.connect_timeout. Documentation is available here.
- Introduce the RequestedTopologyMatchedCurrentTopology notification when an ALTER DATABASE command matches the current topology so no allocations are removed/added, e.g., foo has 2 primaries and 1 secondary then I issue an ALTER DATABASE foo 2 PRIMARIES 1 SECONDARY. Documentation is available here.
- Cypher
- Fix a bug where in some circumstances when OpenID Connect discovery was configured, values from the discovery endpoint could displace values from neo4j.conf which should take precedence.
- Fix a bug where a query using a conjunction such as CREATE (:A&B) would create a node without labels.
- Fix a bug that would return a ‘WGS84 invalid coordinate error’ in a POINT INDEX distance calculation. This bug would occur for large search distances (> 11,936,226 m) where the search region perimeter crosses both poles (90,0 and -90,0).
- Fix issue with EXPLAIN and nested temporal types leading to a failed to pretty print RuntimeConstant error.
- Kernel
- Fix a bug in Change Data Capture: In FULL mode, when updating a node that was also part of either a new or deleted relationship change, the BEFORE state for that entity did not contain all the node’s properties – only the logical key properties.
- Add new metrics to count pages flushed by background evictor. Documentation is available here.
- Change Data Capture
- Move the CDC procedures (cdc.earliest, cdc.current and cdc.current) into the database namespace (db.cdc.earliest, db.cdc.current and db.cdc.current). Documentation is available here.
Bundled products
The following products have been included in the distribution – available in /products directory unless stated otherwise – and are fully compatible with this release.- APOC Core 5.17.0 – The most popular community library developed for the database, is fully supported (included in Labs directory).
- Bloom 2.11.0 – A beautiful and expressive data visualization tool to quickly explore and interact with Neo4j’s graph data platform – no coding required. Please refer to the release notes for details. (Requires a License)
- Browser 5.15.0 – Neo4j Browser is a tool for developers to interact with the graph. It is the default interface for both Enterprise and Community Editions (included in the /libs directory) of the Neo4j database.
- Neo4j Graph Data Science 2.6.1 is a compatible version of the connected data analytics and machine learning platform that helps you understand the connections in big data to answer critical questions and improve predictions. Please refer to the release notes for further details. (GDS Enterprise requires a License. )
- Neo4j Ops Manager 1.9.1 is a UI-based tool that enables Administrators to operate and observe all of their Neo4j Database Management Servers. Now includes support for Neo4j’s any-to-any upgrade. Please refer to the release notes for details. (Included in Enterprise).
Neo4j 5.16 (22 January 2024)
Highlights
Surface for Developers and Data Scientists
- Specify read transactions Add setting to specify read transactions on Cypher queries
Language and Graph Model
- Improve EOF error message: Wrap internal parser errors in SyntaxException and improve EOF error message. This way, the errors will have the Neo4j status Neo.ClientError.Statement.SyntaxError instead of Neo.Database.General.UnknownError, meaning they will stop polluting the debug log.
- Allow for parameters when creating and deleting constraints and indexes e.g, CREATE INDEX $name FOR (n:Label) ON (n.property). Documentation is available here (constraints) and here (indexes).
- Expand the LOAD privilege to support CIDR ranges, e.g. GRANT LOAD ON CIDR “127.0.0.1/32” TO role. Documentation is available here.
Platform & Supportability
- Migration from Neo4j 4.4 to Neo4j 5.x is supported please follow the migration guide available here.
- Any-to-any version rolling upgrade provides a streamlined upgrade experience and supports from 5.0 to 5.16, then with support for direct upgrades to any version after 5.16.
Fixes
- Browser
- Fix element-id showing incorrectly in table
- Ensure right protocol is used for http reachability check
- Respect visible field in SSO provider configuration
- Only show non-composite aliases in database dropdown
- Update outdated documentation links
- Cluster
- Allow delayed raft-members to join raft groups without a leader present.
- Cypher
- Solve List concatenation failed in reduce() E.g. RETURN reduce(a=[1], b in [[“a”]] | a+b) will return [1, “a”] instead of failing with a type error.
- Kernel
- Constraint indexes waiting for their owning constraint to be created will no longer come online upon a restart.
- Fixes a bug in neo4j-admin server report where the command would only collect information for the default database, and transaction logs could be missed. Documentation is available here.
- Fix incorrect checkpoint flushed bytes metric type in CheckPointingMetrics.
Bundled products
The following products have been included in the distribution – available in /products directory unless stated otherwise – and are fully compatible with this release.- APOC Core 5.16.0 – The most popular community library developed for the database, is fully supported (included in Labs directory).
- Bloom 2.11.0 – A beautiful and expressive data visualization tool to quickly explore and interact with Neo4j’s graph data platform – no coding required. Please refer to the release notes for details. (Requires a License)
- Browser 5.15.0 – Neo4j Browser is a tool for developers to interact with the graph. It is the default interface for both Enterprise and Community Editions (included in the /libs directory) of the Neo4j database.
- Neo4j Graph Data Science 2.5.7 is a compatible version of the connected data analytics and machine learning platform that helps you understand the connections in big data to answer critical questions and improve predictions. Please refer to the release notes for further details. (GDS Enterprise requires a License. )
- Neo4j Ops Manager 1.9.0 is a UI-based tool that enables Administrators to operate and observe all of their Neo4j Database Management Servers. Now includes support for Neo4j’s any-to-any upgrade. Please refer to the release notes for details. (Included in Enterprise).
Neo4j 5.15 (15 December 2023)
Highlights
Surface for Developers and Data Scientists
- Add CREATE VECTOR INDEX … command for node vector indexes. As the vector dimensions and similarity function is mandatory, they need to be specified as part of the indexConfig in the OPTIONS map. Documentation available here.
- Deprecation of some characters in identifiers, of which support will be removed in future versions. For the full list of characters see the Cypher Docs on Deprecations.
- Add support for filtering out vector indexes in SHOW INDEXES using keywords (similarly to the other index types): SHOW VECTOR INDEXES. This is equivalent to SHOW INDEXES WHERE type = ‘VECTOR’. Documentation available here.
- Change Data Capture: Updated details around logical keys in node and relationship entities to handle multiple key constraints on the same label or relationship
- Change Data Capture: Node label selectors can match on either the BEFORE or AFTER state
Scale and Availability
- Support for large transactions (network and disk) > 2GB in clusters, addressing the current limitation.
Platform & Supportability
- Migration from Neo4j 4.4 to Neo4j 5.x is supported please follow the migration guide available here.
- Any-to-any version rolling upgrade provides a streamlined upgrade experience and supports from 5.0 to 5.9 before upgrading to 5.15, then with support for direct upgrades to any version after 5.15.
Import
- Reverted bugfix in 5.14 that caused neo4j-admin database import to normalize data arrays to Cypher types.
Fixes
- Clustering
- Fix issue in store copy which could cause inconsistencies in the store
- Fix issue which would cause restarts during startup of primaries to fail
- Cypher
- Throws a type mismatch error in semantic checking instead of at runtime when Map Projections are done on types that are not: MAP, NODE or RELATIONSHIP
- Fixes issue where some valid property names were not allowed when using dot access e.g n._1
- Fix a null-handling error in toInteger
- Fix bug in type checking where the resulting type of a list concatenation could vary depending on which list was to the left and right
- Kernel
- Prevent background sampling of large indexes from blocking shutdown
- Updated AWS SDK to V2.20.162 (from v1.12.563)
Bundled products
The following products have been included in the distribution – available in /products directory unless stated otherwise – and are fully compatible with this release.- APOC Core 5.15.0 – The most popular community library developed for the database, is fully supported (included in Labs directory).
- Bloom 2.11.0 – A beautiful and expressive data visualization tool to quickly explore and interact with Neo4j’s graph data platform – no coding required. Please refer to the release notes for details. (Requires a License)
- Browser 5.12.0 – Neo4j Browser is a tool for developers to interact with the graph. It is the default interface for both Enterprise and Community Editions (included in the /libs directory) of the Neo4j database.
- Neo4j Graph Data Science 2.5.6 is a compatible version of the connected data analytics and machine learning platform that helps you understand the connections in big data to answer critical questions and improve predictions. Please refer to the release notes for further details. (GDS Enterprise requires a License. )
- Neo4j Ops Manager 1.8.5 is a UI-based tool that enables Administrators to operate and observe all of their Neo4j Database Management Servers. Now includes support for Neo4j’s any-to-any upgrade. Please refer to the release notes for details. (Included in Enterprise).
Neo4j 5.14 (24 November 2023)
Highlights
The following products have been included in the distribution – available in /products directory unless stated otherwise – and are fully compatible with this release.- APOC Core 5.14.0 – The most popular community library developed for the database, is fully supported (included in Labs directory).
- Bloom 5.x-2.10.1 – A beautiful and expressive data visualization tool to quickly explore and interact with Neo4j’s graph data platform – no coding required. Please refer to the release notes for details. (Requires a License)
- Browser 5.12.0 – Neo4j Browser is a tool for developers to interact with the graph. It is the default interface for both Enterprise and Community Editions (included in the /libs directory) of the Neo4j database.
- Neo4j Graph Data Science 2.5.5 is a compatible version of the connected data analytics and machine learning platform that helps you understand the connections in big data to answer critical questions and improve predictions. Please refer to the release notes for further details. (GDS Enterprise requires a Licence. )
- Neo4j Ops Manager 1.8.4 is a UI-based tool that enables Administrators to operate and observe all of their Neo4j Database Management Servers. Now includes support for Neo4j’s any-to-any upgrade. Please refer to the release notes for details. (Included in Enterprise).
Read and Export Performance
- Public beta of Block format. Using Neo4j’s decades of experience with graph data, Block format lays out the data on disk in a structure that greatly increases the efficiency of our page cache and prevents data fragmentation. See blog post.
Language and Graph Model
- New nullIf() function returns null if the two given parameters are equivalent, otherwise returns the value of the first parameter. Documentation available here.
- Exclamation mark in Cypher type syntax as shorthand for NOT NULL e.g INTEGER!. Documentation available here
- New NODETACH keyword to be optionally used in a delete statement e.g MATCH (b) NODETACH DELETE n. Documentation available here.
Operability & Observability
- Multiple DB name patterns supported in neo4j-admin database backup.
- Verify expiration time of loaded SSL certificates at load time and refuse to use them if they have already expired.
- PUBLIC role not retained on suspension of users using only native authorization
Platform & Supportability
- Support for Java 21 JRE for the latest performance and scalability improvements.
- Replaced gosu with su-exec for better security traceability.
- Upgrade jetty to 10.0.17 for CVE-2023-36478. Please note: this CVE only impacts HTTP/2 and since the server does not support HTTP/2, it is not affected.
- Migration from Neo4j 4.4 to Neo4j 5.x is supported please follow the migration guide available here.
- Any-to-any version rolling upgrade provides a streamlined upgrade experience and supports from 5.0 to 5.9 before upgrading to 5.14, then with support for direct upgrades to any version after 5.14.
Fixes
- Clustering
- Fixed an issue where Raft could deadlock when trying to deallocate a member at the same time that other members are downloading snapshots.
- Kernel
- Fixed a consistency checker performance issue for databases with many times more relationships than nodes in combination with relationship indexes
- Fixed an issue where neo4j-admin database check would report the valid combination of a type constraint and an existence constraint on the same schema as an inconsistency.
- Fixed an issue where neo4j-admin database import full could run on an online database. This could result in not seeing the imported data until after a restart.
- Fixed an issue where neo4j-admin import wouldn’t normalize types to their corresponding Cypher types. Normalization can be disabled using the option –normalize-types=false.
Neo4j 5.13 (23 Oct 2023)
Highlights
The following products have been included in the distribution – available in /products directory unless stated otherwise – and are fully compatible with this release.- APOC Core 5.13.0 – The most popular community library developed for the database, is fully supported (included in Labs directory).
- Bloom 5.x-2.10.0 – A beautiful and expressive data visualization tool to quickly explore and interact with Neo4j’s graph data platform – no coding required. Please refer to the release notes for details. (Requires a License)
- Browser 5.12.0 – Neo4j Browser is a tool for developers to interact with the graph. It is the default interface for both Enterprise and Community Editions (included in the /libs directory) of the Neo4j database.
- Neo4j Graph Data Science 2.5.1 is a compatible version of the connected data analytics and machine learning platform that helps you understand the connections in big data to answer critical questions and improve predictions. Please refer to the release notes for further details. (GDS Enterprise requires a Licence. )
- Neo4j Ops Manager 1.8.2 is a UI-based tool that enables Administrators to operate and observe all of their Neo4j Database Management Servers. Now includes support for Neo4j’s any-to-any upgrade. Please refer to the release notes for details. (Included in Enterprise).
Surface for Developers and Data Scientists
- Vector Search Index leaves beta. Vector search, the db.index.vector.createNodeIndex and db.index.vector.queryNodes procedures are no longer beta features, they are complete and ready for production use.
- Spring AI support for Neo4j as a vector store Java developers using Spring AI to streamline application development can choose Neo4j as their vector store. Spring AI documentation here.
- Change Data Capture (CDC) feature is now available as a public beta. CDC can be used by applications to query the transaction logs for changes to graph data. It can be enabled on individual databases in FULL or DIFF mode using Cypher’s CREATE or ALTER database commands
- Browser DB switcher updated to handle new database states.
- Browser autocomplete improvement: Signature details panel now expanded by default.
Language and Graph Model
- Improved planning of pattern predicates that previously weren’t using Argument.
- Introduces char_length() and character_length() functions which return the number of Unicode characters in a STRING. They are aliases of the existing size() Cypher function (when applied to a string parameter), and are introduced to align with the upcoming GQL standard. More info available here.
- Parallel runtime is General Availability – the new runtime can offer a significant performance increase for some read queries; e.g. where a query traverses a large proportion of the large dataset, anchored to a super-node, the query is long-running (>~500ms). Documentation available here.
- Introduce LOAD ALL DATA privilege to control access to LOAD CSV from RBAC. Permission to LOAD all data will be automatically granted to the PUBLIC role to maintain compatibility. If administrators desire to control LOADS they should revoke this privilege and grant privileges to roles as required. Documentation available here.
- Introduces a new valueType() function which returns a string representation of the most precise value type that the given expression evaluates to. Documentation available here.
- Adds the functionality to use a graph which contains a given element id, e.g. USE graph.byElementId(“4:c0a65d96-4993-4b0c-b036-e7ebd9174905:0”). This functionality is available on a composite database, where one of the constituents contains the element. Documentation available here.
Operability & Observability
- Size restricted default transaction logs retention policy used in the default config.
Platform & Supportability
- Migration from Neo4j 4.4 to Neo4j 5.x is supported please follow the migration guide available here.
- Any-to-any version rolling upgrade provides a streamlined upgrade experience and supports from 5.0 to 5.9 before upgrading to 5.13, then with support for direct upgrades to any version after 5.13.
Fixes
- Browser
- Fix plan view for DbHits over 32 bit integer max
- Cypher
- Fixed bug where Cypher queries containing related equalities in different scopes, e.g. WHERE any(x IN [1, 2, 3] WHERE a.prop = toInteger(x)) AND a.prop = b.prop would fail with Variable … not defined. Disable the transitiveEqualities rewriter if the WHERE clause contains multiple scopes.
- Fixed procedure and function signatures to be inline with the syntax for Cypher Types. Procedures with no return values are no longer appended with :: VOID and function return values are no longer surrounded by parenthesis. Procedure signatures will now follow the pattern: “procedureName(param1 :: TYPE, param2 :: TYPE, .., paramN :: TYPE) :: (returnParam1 :: TYPE, returnParam2, .., returnParamN :: TYPE)” or “procedureName(param1 :: TYPE, param2 :: TYPE, .., paramN :: TYPE)” and function signatures: “functionName(param1 :: TYPE, param2 :: TYPE, .., paramN :: TYPE) :: TYPE”, see the Cypher Manual for more information. This alters the output of the signatures column in SHOW PROCEDURES and SHOW FUNCTIONS.
- Resolve a rare bug where aggregation functions would be planned incorrectly, resulting in an error during runtime. This would happen for very specific and rare underlying statistics.
- Free the memory of unused variables during Cypher query execution.
- Kernel
- Deprecating beta function db.create.setVectorProperty in favor of db.create.setNodeVectorProperty, both improving naming consistency and extensibility. The new procedure no longer returns the node which enhances the user experience of the procedure in more complex queries. (Aura)
- Fixed an issue that caused terminating the creation of a Constraint, to not also terminate the creation of the backing Index.
- Fixed issue that caused vector search queries to cause an exception if there were changes in the transaction state.
- Fixed issue that caused two index queried metrics (index.fulltext.queried and index.lookup.queried) to not update.
- Packaging
- Bugfix where neo4j.conf without a trailing new line would get NEO4J_PLUGINS settings wrongly appended causing startup failure.
- The streams plugin was erroneously listed as being a supported plugin in 5.x versions. This has been removed from 5.x docker source (the plugin integration remains in 4.4 and earlier images).
- Security
- Upgraded commons-compress to 1.24.0 to mitigate CVE-2023-42503
- Upgraded jetty to 10.0.16 to mitigate CVE-2023-40167, CVE-2023-36479, CVE-2023-41900, and GHSA-58qw-p7qm-5rvh
Neo4j 5.12 (14 Sept 2023)
Highlights
The following products have been included in the distribution – available in /products directory unless stated otherwise – and are fully compatible with this release.- APOC 5.12.0 – The most popular community library developed for the database, is fully supported (included in Labs directory).
- Bloom 5.x-2.9.0 – A beautiful and expressive data visualization tool to quickly explore and interact with Neo4j’s graph data platform – no coding required. Please refer to the release notes for details. (Requires a License)
- Browser 5.11.0 – Neo4j Browser is a tool for developers to interact with the graph. It is the default interface for both Enterprise and Community Editions (included in the /libs directory) of the Neo4j database.
- Neo4j Graph Data Science 2.4.6 is a compatible version of the connected data analytics and machine learning platform that helps you understand the connections in big data to answer critical questions and improve predictions. Please refer to the release notes for further details. (GDS Enterprise requires a Licence. )
- Neo4j Ops Manager 1.8.0 is a UI-based tool that enables Administrators to operate and observe all of their Neo4j Database Management Servers. Now includes support for Neo4j’s any-to-any upgrade. Recommend downloading the latest version Neo4j Ops Manager 1.8.1 which includes some important fixes. Please refer to the release notes for details. (Included in Enterprise).
Surface for Developers and Data Scientists
- Improved argument validation in vector index procedures to improve error messages.
- Replace db.logs.query.annotation_data_as_json_enabled with db.logs.query.annotation_data_format to enable more formats, refer to docs.
Language and Graph Model
- New function db.nameFromElementId to resolve the database name for a given element id in Fabric graphs.
Read and Export Performance
- Track memory of de-referenced nodes and relationships in ProduceResult. This avoids some OutOfMemoryErrors in queries that return lots of nodes or relationships (e.g. MATCH (n) RETURN collect(n)). Resolves https://github.com/neo4j/neo4j/issues/13204 where a query wrongly errors for variables within a CALL subquery that shadow outside variables.
Platform & Supportability
- Migration from Neo4j 4.4 to Neo4j 5.x is supported please follow the migration guide available here.
- Any-to-any version rolling upgrade provides a streamlined upgrade experience and supports from 5.0 to 5.9 before upgrading to 5.12, then with support for direct upgrades to any version after 5.12.
Fixes
- Clustering
- Remove transaction size limit in Raft. Before this change, large transactions could be written to the raft log but not read. This could lead to unexpected behaviors, for example a leader could stop sending entries to its followers.
- Database state STORE_COPYING will be reported as soon as the decision is made that a store copy is necessary.
- Kernel
- Vector index creation includes a check to limit the dimensionality to an upper supported limit of 2048.
- Fixed an issue with vector index creation during a rolling upgrade from a pre-5.11 database in a cluster, where all members have yet to roll onto the new version. Now vector indexes cannot be created until dbms.upgrade() has been called, indicating all members have been upgraded; which is the intended procedure for newer features during a rolling upgrade.
- Fixed some issues around vector validation for the vector index. Some extreme component vectors were incorrectly flagged as valid; however, would return a score of 0, thus not affecting most queries. Otherwise valid cosine query vectors with a final component of ±0 would incorrectly be flagged as invalid.
- Fixes an issue that logged vector index as being unknown, preventing recreation commands from being included in neo4j-admin database copy logs, and incorrect escaping for some cases of the recreation command with SHOW INDEXES
- Fix issue where vector index based procedures were not being displayed with SHOW PROCEDURES
- Fix wildcards(*) for command-line tools on Windows.
- Fix Cypher type normalization during CSV import so that char is converted to String.
Neo4j 5.11 (15 August 2023)
Highlights
The following products have been included in the distribution – available in /products directory unless stated otherwise – and are fully compatible with this release.- APOC 5.11.0 – The most popular community library developed for the database, is fully supported (included in Labs directory).
- Bloom 5.x-2.9.0 – A beautiful and expressive data visualization tool to quickly explore and interact with Neo4j’s graph data platform – no coding required. Please refer to the release notes for details. (Requires a License)
- Browser 5.11.0 – Neo4j Browser is a tool for developers to interact with the graph. It is the default interface for both Enterprise and Community Editions (included in the /libs directory) of the Neo4j database.
- Neo4j Graph Data Science 2.4.4 is a compatible version of the connected data analytics and machine learning platform that helps you understand the connections in big data to answer critical questions and improve predictions. Please refer to the release notes for further details. (GDS Enterprise requires a Licence. )
- Neo4j Ops Manager 1.7.3 is a UI-based tool that enables Administrators to operate and observe all of their Neo4j Database Management Servers. Now includes support for Neo4j’s any-to-any upgrade. Please refer to the release notes for details. (Included in Enterprise).
Surface for Developers and Data Scientists
- Vector Search (beta) Vector search enables users to create vector indexes in Neo4j Database and then perform search using cosine or euclidean similarity. By combining graph and vector capabilities we can enhance graph applications and improve grounding of generative AI applications. See documentation.
Language and Graph Model
- Expand property type constraints with support for union types, e.g ZONED TIME | LOCAL TIME, INTEGER | LIST<INTEGER NOT NULL>.
- Extends Type Predicate Expressions to allow for multiple types to be checked at once (closed dynamic unions). E.g. IS :: INTEGER | FLOAT
Scale and Availability
- SHOW DATABASE now reports databases starting and stopping with values starting and stopping in column actualStatus.
Operability & Observability
- New index metrics: <prefix>.index.<indexType>.(queried|populated).
- Add :sysinfo command to Cypher Shell.
Platform & Supportability
- Migration from Neo4j 4.4 to Neo4j 5.x is supported please follow the migration guide available here.
- Any-to-any version rolling upgrade provides a streamlined upgrade experience and supports from 5.0 to 5.9 before upgrading to 5.11, then with support for direct upgrades to any version after 5.11.
- Migrate to Jetty 10
- Update Apache Shiro to 1.12.0
Fixes
- Browser
- SSO papercuts (more logs & make downloading them easier)
- Fixed bug where :auto hint would not show
- Fixed bug where metadata was incorrectly formated
- Cypher
- Fixed two bugs around durations with fractional components. Negation was not properly propagated to the components, so that “-P0.5Y” was presented as 6 months rather than -6 months. Fractional minutes > 60 was not properly converted into hours, so that 1 h 72.5 min was presented as 1h 12 min 30s instead of 2h 12 min 30s.
- Fixed https://github.com/neo4j/neo4j/issues/13102 where a variable inside a subquery becomes undefined if after a WITH
- Fixed github issue https://github.com/neo4j/neo4j/issues/13215. Graph.names should only return the graphs the user has access to.
- Add status code to TransactionFailureException. Prior to this PR TransactionFailure exception did not have any status code, which meant that they eventually were treated as DatabaseErrors. Also, in this PR the constructors for creating TransactionFailureException without giving a status code are deprecated.
- Fixes neo4j/neo4j#13155, neo4j/neo4j#13189 and neo4j/neo4j#13191 where shadowing variables in SKIP and LIMIT caused unexpected errors.
- Fixed bug in fused pipelined runtime ProjectEndpoints operator that could lead to incorrect results.
- Kernel
- Fixed excessive logging caused by ArchiveProgressPrinter
- Change behavior of ‘ALTER CURRENT USER SET PASSWORD’ to auto commit even when executed inside an explicit transaction.
Neo4j 5.10 (19 July 2023)
Highlights
The following products have been included in the distribution – available in /products directory unless stated otherwise – and are fully compatible with this release.- APOC 5.10.0 – The most popular community library developed for the database, is fully supported (included in Labs directory).
- Bloom 5.x-2.8.1 – A beautiful and expressive data visualization tool to quickly explore and interact with Neo4j’s graph data platform – no coding required. Please refer to the release notes for details. (Requires a License)
- Browser 5.9.0 – Neo4j Browser is a tool for developers to interact with the graph. It is the default interface for both Enterprise and Community Editions (included in the /libs directory) of the Neo4j database.
- Neo4j Graph Data Science 2.4.2 is compatible versions of the connected data analytics and machine learning platform that helps you understand the connections in big data to answer critical questions and improve predictions. Please refer to the release notes for further details. (GDS Enterprise requires a Licence. )
- Neo4j Ops Manager 1.7.1 is a UI-based tool that enables Administrators to operate and observe all of their Neo4j Database Management Servers. Now includes support for Neo4j’s any-to-any upgrade. Please refer to the release notes for details. (Included in Enterprise).
Language and Graph Model
- Property type constraints include support for list types, e.g LIST<STRING NOT NULL>, LIST<INTEGER NOT NULL>. The inner type of the list type cannot be nullable.
- Introduces <SCALAR TYPE> NOT NULL variants to the Type Predicate Expression, e.g BOOLEAN NOT NULL, as well as non-property value types, and simple lists, e.g. MAP, NODE, RELATIONSHIP, PATH, LIST<SCALAR TYPE>, ANY, PROPERTY VALUE
- Deprecate property references across patterns in CREATE, e.g. CREATE (a {p:1}), ({p:a.p})
Scale and Availability
- Clusters can be configured to automatically enable new members that join the cluster by setting initial.dbms.cluster.automatically_enable_free_servers to true, the default is false.
Operability & Observability
- New metric: check_point.flushed_bytes to show accumulated number of bytes written by checkpoint.
- New metric: dbms.routing.query.count.* counters for server-side routing decisions.
- Dynamic settings: server.memory.query_cache.shared_cache_num_entries and server.memory.query_cache.per_db_cache_num_entries settings can now be changed without restarting
Platform & Supportability
- Migration from Neo4j 4.4 to Neo4j 5.10 is supported please follow the migration guide available here.
- Any-to-any version rolling upgrade provides a streamlined upgrade experience and supports from 5.0 to 5.9 before upgrading to 5.10, then with support for direct upgrades to any version after 5.10.
- Updated debian base image to bookworm-slim.
- New docker image based on redhat/ubi8-minimal.
Fixes
- Clustering
- Fixed during automatic upgrade panicked servers will attempt to rid themselves of all raft leaderships.
- Cypher
- Fixed neo4j/neo4j#13194 where toBooleanOrNull with an inner function of null would fail
- Fixed $13163 by making deprecation checks more type safe
- Fixed a bug where predicates with uppercase NODES() and RELATIONSHIPS() functions would be planned as a Filter after VarExpand/ShortestPath instead of being applied directly during path search.
- Split(s, [a1, a2,…]) should return null if any delimiter (a_i) is null. See neo4j/neo4j#13196
Neo4j 5.9 (15 June 2023)
Highlights
The following products have been included in the distribution – available in /products directory unless stated otherwise – and are fully compatible with this release.- APOC 5.9.0 – The most popular community library developed for the database, is fully supported (included in Labs directory).
- Bloom 5.x-2.8.1 – A beautiful and expressive data visualization tool to quickly explore and interact with Neo4j’s graph data platform – no coding required. Please refer to the release notes for details. (Requires a License)
- Browser 5.9.0 – Neo4j Browser is a tool for developers to interact with the graph. It is the default interface for both Enterprise and Community Editions (included in the /libs directory) of the Neo4j database.
- Neo4j Graph Data Science 2.4.0 is the compatible version of the connected data analytics and machine learning platform that helps you understand the connections in big data to answer critical questions and improve predictions. Please refer to the release notes for further details. (GDS Enterprise requires a Licence. )
- Neo4j Ops Manager 1.6.3 is a UI-based tool that enables Administrators to operate and observe all of their Neo4j Database Management Servers. Now includes support for Neo4j’s any-to-any upgrade. Please refer to the release notes for details. (Included in Enterprise).
Surface for Developers and Data Scientists
- Browser – Graceful handles when some databases are unavailable.
- Browser – Faster bootup & better connection handling.
- Browser – Improve sysinfo frame consistency.
- Browser – Improve debug connectivity.
- Core API – Additional types to org.neo4j.graphdb.schema.ConstraintType.
- Quantified path patterns extend significantly the language pattern-matching capabilities of Cypher. It is now possible to match against repetitions of complex subpaths containing an arbitrary number of nodes and relationships.
- Property type constraint: node and relationship properties can now be restricted to be of a specific type. Examples of how to create a type constraint for a STRING node property and for a BOOLEAN relationship property.
- CREATE CONSTRAINT nodePropertyStringType FOR (n:Label) REQUIRE n.prop IS :: STRING
- CREATE CONSTRAINT relPropertyBooleanType FOR ()-[r:REL_TYPE]-() REQUIRE r.prop IS :: BOOLEAN
- Type predicate expressions to verify the type of a variable, literal, property or other Cypher expression, using syntax like n.prop IS :: STRING.
- Grant, deny and revoke roles and privileges will generate notifications when the commands have no effect.
- SHOW commands to see the list of all the available Neo4j privileges: SHOW SUPPORTED PRIVILEGES
- Check for deprecations: SHOW SETTINGS, SHOW FUNCTIONS and SHOW PROCEDURES commands now show deprecation information in a dedicated new column.
Scale and Availability
- Reduced overhead when running on operation systems with 64K memory page sizes.
Operability & Observability
- Combine time-based transaction log pruning strategy with max size limit.
- Collapse nested JSON objects in the query logger when db.logs.query.annotation_data_as_json_enabled setting is true.
- Client applications e.g. Neo4j Ops Manager can request a list of supported privileges that can be granted.
- Improved error handling and reporting when executing administration commands. Some administration commands will return more accurate status codes that may be different from those returned in previous versions.
Platform & Supportability
- Migration from Neo4j 4.4 to Neo4j 5.9 is supported please follow the migration guide available here.
- DBMS upgrades automatically, once all servers are on matching versions – calling dbms.upgrade() is no longer required
- Any-to-any version rolling upgrade provides a streamlined upgrade experience and supports from 5.0 to 5.9, then with support for direct upgrades to any version after 5.9.
Fixes
- Clustering
- Fixed bug where a server that was a designated seeder for a database couldn’t be reallocated for that database.
- Cypher
- Fixed bug where updates would not always get applied before a LIMIT 0 or a WHERE false.
- Kernel
- Fixed an issue where the CSV importer wouldn’t enforce the value of –bad-tolerance.
- Fixed an issue with neo4j-admin database check where provided paths with the ‘.report’ extension were incorrectly interpreted as a directory.
- Restored the stateless ConfiguredQueryLogger.
- Security
- Browser – prevent storing credentials briefly before reading settings.
Neo4j 5.8 (16 May 2023)
Highlights
The following products have been included in the distribution – available in /products directory unless stated otherwise – and are fully compatible with this release.- APOC 5.8.0 – The most popular community library developed for the database, is fully supported (included in Labs directory).
- Bloom 5.x-2.7.1 – A beautiful and expressive data visualization tool to quickly explore and interact with Neo4j’s graph data platform – no coding required. Please refer to the release notes for details. (Requires a License)
- Browser 5.6.0 – Neo4j Browser is a tool for developers to interact with the graph. It is the default interface for both Enterprise and Community Editions (included in the /libs directory) of the Neo4j database.
- Neo4j Graph Data Science 2.3.6 is a compatible version of the connected data analytics and machine learning platform that helps you understand the connections in big data to answer critical questions and improve predictions. Please refer to the release notes for further details. (GDS Enterprise requires a Licence. )
- Neo4j Ops Manager 1.5.4 is a UI-based tool that enables Administrators to operate and observe all of their Neo4j Database Management Servers. Now includes support for Neo4j’s any-to-any upgrade. Please refer to the release notes for details. (Included in Enterprise).
Language and Graph Model
- Changed the notification description for deprecated procedure return fields, deprecated functions and procedures without replacement to no longer include ‘is no longer supported’ as that was misleading.
Scale and Availability
- Panic DBMS when local system graph components are behind those installed in the system db.
- DBMS upgrade procedures will check all servers in a cluster are on matching versions before allowing an upgrade.
Platform & Supportability
- Improved configuration file validation output on startup.
- Add setting db.logs.query.annotation_data_as_json_enabled to configure the output format of annotation data in the query log to be JSON instead of a Cypher map.
- Configuration file character encoding can be overridden by the NEO4J_CONFIG_FILE_CHARSET environment variable.
- Migration from Neo4j 4.4 to Neo4j 5.8 is supported please follow the migration guide available here.
- Any-to-any version rolling upgrade provides a streamlined upgrade experience and supports from 5.0 to 5.8, then with support for direct upgrades to any version after 5.8.
Fixes
- Clustering
- Backup metadata scripts created using neo4j-admin database backup will now include the cluster topology of the database to be backed up.
- Composite/ Fabric
- Using map projections, e.g, RETURN n{.p1, p2: 2}, on composite databases could lead to wrong results.
- Cypher
- Fix a bug in pipelined runtime that can cause bitIndex < 0: -1 errors in plans with OrderedUnion.
- Fixed bug has occurred in the morsel runtime: The target morsel cannot hold the data to copy error. See Github issue: neo4j/neo4j#13148.
- Fixed overflow when using a count store. See Github issue: neo4j/neo4j#13170.
- Fixed issue where an error, arraycopy: length -1 is negative occurred, Github issue: neo4j/neo4j#13141
- Fixed a bug with LIMIT that could lead to error: UnknownError:Failed to evaluate expression. See Github issue: neo4j/neo4j#13172 and neo4j/neo4j#13173.
- Fixed unexpected TypeError when using the toStringOrNull function, for example in CREATE (n) RETURN reverse(toStringOrNull(n)).
- Fixed bug in fused pipelined runtime that could lead to lost updates if a property was cached. For example when running queries like MATCH (n) WITH n.prop AS oldValue SET n.prop = n.prop + 1 WITH n.prop AS newValue RETURN * concurrently. Note, Cypher will not always prevent lost updates, see documentation for more details.
- Handle large precision values in round, gh-issue https://github.com/neo4j/neo4j/issues/13117
- Fixes https://github.com/neo4j/neo4j/issues/13106 and https://github.com/neo4j/neo4j/issues/13109 by changing the way Cypher checks for variable shadowing inside subqueries
- Fail LOAD CSV <url> queries if the URL leads to a redirect that we can’t follow (protocol changes or Location header is missing).
- Using map projections, e.g, RETURN n{.p1, p2: 2}, on composite databases could lead to wrong results.
- Allow new unicode characters as whitespace
- Kernel
- Neo4j-admin import default –strict option set to false due performance impact in some scenarios.
- Fix an issue with using certain configuration settings, query options, built-in functions or procedures, containing the letter “i”, when running with a Turkish locale.
- Fix neo4j.dbms.bolt.connections_idle metric
- Packaging
-
- Fixed java dependencies to use java-17 metapackage provided by both openjdk and oracle java.
- Fixed bug where Neo4j will automatically start on installation in debian.
- Fixed 5.x bug where requesting apoc plugin actually installs apoc-core. Also added apoc-core as an optional plugin.
- Add docker healthcheck
- JVM additional configuration set by environment variable will now stop overriding default jvm configurations.
Neo4j 5.7 (20 April 2023)
Highlights
The following products have been included in the distribution – available in /products directory unless stated otherwise – and are fully compatible with this release.- APOC 5.7.0 – The most popular community library developed for the database, is fully supported (included in Labs directory).
- Bloom 5.x-2.7.0 – A beautiful and expressive data visualization tool to quickly explore and interact with Neo4j’s graph data platform – no coding required. Please refer to the release notes for details. (Requires a License)
- Browser 5.6.0 – Neo4j Browser is a tool for developers to interact with the graph. It is the default interface for both Enterprise and Community Editions (included in the /libs directory) of the Neo4j database.
- Neo4j Graph Data Science 2.3.3 is a compatible version of the connected data analytics and machine learning platform that helps you understand the connections in big data to answer critical questions and improve predictions. Please refer to the release notes for further details. (GDS Enterprise requires a Licence. )
- Neo4j Ops Manager 1.5.3 is a UI-based tool that enables Administrators to operate and observe all of their Neo4j Database Management Servers. Now includes support for Neo4j’s any-to-any upgrade. Please refer to the release notes for details. (Included in Enterprise).
Surface for Developers and Data Scientists
- Browser has added codes to frame notifications.
- Browser has added :debug-connectivity frame to help debug bolt connections.
- Browser has aligned text table display of nodes with Cypher Shell.
Language and Graph Model
- Introduced two new constraint types: relationship property uniqueness and relationship key. Can be created with CREATE CONSTRAINT FOR ()-[r:TYPE]-() REQUIRE r.prop IS UNIQUE and CREATE CONSTRAINT FOR ()-[r:TYPE]-() REQUIRE r.prop IS REL KEY, respectively.
- Independently plan predicates containing sub-queries: the planner will now generate a better (faster) plan for some queries which include subqueries.
- Introduce error and status output for CALL IN TRANSACTIONS
- Introduced a new Status for transaction timeout.
- Deprecate the Cypher query option connectComponentsPlanner – it will be removed in the next major version.
- Deprecate the status code Neo.ClientNotification.Statement.SuboptimalIndexForWildcardQuery – it will be removed in the next major version.
Operability & Observability
- Added WAIT to the ALTER DATABASE administration command.
- Improved memory performance for customers running large numbers of databases, there is a new shared cache (replaces the individual caches used by a database); enabled with server.memory.query_cache.sharing_enabled. When using the shared cache, databases may compete for cache space, but may not observe each other’s entries. Size of the shared cache is configured with server.memory.query_cache.shared_cache_num_entries.
- Adapt :param and :params in Cypher Shell to Cypher map based syntax, for example :param {a: 1, b: 1+1}. The existing arrow syntax is also still supported.
Platform & Supportability
- Migration from Neo4j 4.4 to Neo4j 5.7 is supported please follow the migration guide available here.
- Any-to-any version rolling upgrade provides a streamlined upgrade experience and supports from any 5.x to 5.7, then with support for direct upgrades to any version after 5.7.
- Evaluation mode extensions – contact your Neo4j representative or complete the Contact Us form to extend your 30 day trial.
Security
- Upgraded Jettison version to 1.5.4 to fix CVE-2023-1436
- Log a warning if a security provider is listed in dbms.security.authentication_providers or dbms.security.authorization_providers but is not available for use.
Fixes
- Browser
- Fixed bug where plan view downloads got very low resolution.
- Clustering
- Fixed bug where rafted system databases were unable to pass seed validation when the instances had initialmodeconstraints
- Composite/ Fabric
- Fix virtual entities creation from procedure in the composite database.
- Cypher
- Fixed queries using composite indexes and duplicated search terms e.g. a.p1 IN [1, 1, 1] AND a.p2 = 3, could return incorrect results.
- Fixed broken query cancellation (ctrl+c) in Cypher Shell.
- Fixed bug when reusing variable names in merge clauses with multiple relationships.
- Fixed bug with error message “Unexpected error: out of bounds for object” when ORDER BY has a literal in certain cases.
- Fixed seeking for an empty array causes an empty result even if a match existed in the index.
- Kernel
- Fixed an issue where a temporary read-only setting for a database could become permanent for some Lucene indexes.
- ‘neo4j-admin report’ now correctly captures kubernetes style configs
- Fixed a bug where some data would be lost from index during a full online backup. The data would still be present in the store, but the index would be inconsistent. Affected index types are FULLTEXT or TEXT and the data would only be lost on the backup client, the server would still have the correct data.
- Fixed an issue where recovery would temporarily hold onto more memory than necessary, making it more likely for recovery to run out of heap on recovering very large transactions.
- Packaging
- JVM additional configuration set by environment variable will now stop overriding default JVM configurations.
- Attempting to load invalid NEO4J_PLUGINS values will produce a helpful error message. For example, NEO4J_PLUGINS='[“gds”]’ will now return: “gds” is not a known Neo4j plugin. Options are: apoc apoc-core bloom graph-algorithms graph-data-science graphql n10s streams
- Security
- Fixed a bug where dropping a remote alias would not clean up access privileges correctly, causing any user with a role that has the privilege to fail to authorize.
Neo4j 5.6 (24 March 2023)
Highlights
The following products have been included in the distribution – available in /products directory unless stated otherwise – and are fully compatible with this release.- APOC 5.6.0 – The most popular community library developed for the database, is fully supported (included in Labs directory).
- Bloom 5.x-2.7.0 – A beautiful and expressive data visualization tool to quickly explore and interact with Neo4j’s graph data platform – no coding required. Please refer to the release notes for details. (Requires a License)
- Browser 5.4.0 – Neo4j Browser is a tool for developers to interact with the graph. It is the default interface for both Enterprise and Community Editions (included in the /libs directory) of the Neo4j database.
- Neo4j Graph Data Science 2.3.2 is compatible versions of the connected data analytics and machine learning platform that helps you understand the connections in big data to answer critical questions and improve predictions. Please refer to the release notes for further details. (GDS Enterprise requires a Licence. )
- Neo4j Ops Manager 1.4.3 is a UI-based tool that enables Administrators to operate and observe all of their Neo4j Database Management Servers. Now includes support for Neo4j’s any-to-any upgrade. Please refer to the release notes for details. (Included in Enterprise).
Surface for Developers and Data Scientists
- Support for bookmarks in HTTP Cypher Transactional API.
- Support for CALL {} IN TRANSACTIONS in HTTP Cypher Transactional API using the single request endpoint (e.g db/neo4j/tx/commit)
- NotificationCode class including severity level, category, title and code available in the public API
Language and Graph Model
- Introduce COLLECT Subqueries to collect the results of the subquery into a list.
Scale and Availability
- Server Tags can be used in place of Server Groups.
- Deprecate dbms.cluster.secondaryReplicationToggle please use dbms.cluster.secondaryReplicationDisable.
Operability & Observability
- SHOW SETTINGS Cypher command lists all the configuration settings, replacing the need for the procedure dbms.listConfig.
- Server Tags can be created using Cypher commands e.g. ALTER SERVER “Server01″ SET OPTIONS {tags:”us-west”}.
Platform & Supportability
- Migration from Neo4j 4.4 to Neo4j 5.6 is supported please follow the migration guide available here.
- Any-to-any version rolling upgrade provides a streamlined upgrade experience and supports from any 5.x version to 5.6, then with support for direct upgrades to any version after 5.6.
- Docker additional configuration settings via environment variable for JVM will now stop overriding default JVM configurations.
- Invalid NEO4J_PLUGINS values provide a helpful error message. For example: NEO4J_PLUGINS='[“gds”]’ will now return: “gds” is not a known Neo4j plugin. Options are: apoc apoc-core bloom graph-algorithms graph-data-science graphql n10s streams
Fixes
- Clustering
-
- Revert setting name back to dbms.maxdatabases from server
- Composite/ Fabric
- Fix possible deadlock in transaction termination
- Cypher
- Fixed seeking for an empty array would lead to an empty result even if a match existed in the index.
- Fixed bug for MERGE queries in pipelined runtime.
- Fixed bug where unnecessary sort was planned for some queries beginning with an OPTIONAL MATCH.
- Kernel
- Fixed an issue with migrate-configuration admin command where plugin settings were incorrectly handled
- Fixed an issue where the importer could interpret a non-existent node ID from the relationships data as one of the imported nodes. A flag –strict has been added to the import command to control this added strict validation of the node IDs and is enabled by default. Running import with strict check enabled may have a negative performance impact during relationship import.
- Fixed neo4j-admin database info –from-path path validation on paths external to standard config, which incorrectly failed on otherwise valid paths to databases.
- Fixed issue with console appenders in server-logs.xml
Neo4j 5.5 (16 Feb 2023)
Highlights
The following products have been included in the distribution – available in /products directory unless stated otherwise – and are fully compatible with this release.- APOC 5.5.0 – The most popular community library developed for the database, is fully supported (included in Labs directory). Please refer to the change log for details
- Bloom 5.x-2.6.1 – A beautiful and expressive data visualization tool to quickly explore and interact with Neo4j’s graph data platform – no coding required. Please refer to the release notes for details. (Requires a License)
- Browser 5.4.0 – Neo4j Browser is a tool for developers to interact with the graph. It is the default interface for both Enterprise and Community Editions (included in the /libs directory) of the Neo4j database.
- Neo4j Graph Data Science 2.3.1 is a compatible version of the connected data analytics and machine learning platform that helps you understand the connections in big data to answer critical questions and improve predictions. Please refer to the release notes for further details. (GDS Enterprise requires a Licence. )
- Neo4j Ops Manager 1.4.1 is a UI-based tool that enables Administrators to operate and observe all of their Neo4j Database Management Servers. Now includes support for Neo4j’s any-to-any upgrade. Please refer to the release notes for details. (Included in Enterprise).
Surface for Developers and Data Scientists
- Simplified query API in the official language drivers (Java, Python, .Net, JavaScript and Go) Complex aspects of the API are automated for users, with sensible default behaviors appropriate for all deployment modalities encapsulated in a Driver.ExecuteQuery API. Tagged as experimental.
Language and Graph Model
- Plan count store lookup for relationship endpoints.
- Deprecate differently ordered variables in UNION Clauses.
Scale and Availability
- ALTER DATABASE can update the topology from a single primary to many primaries.
Operability & Observability
- neo4j-admin copy can perform in-place compact/clean-up of a database, setting the target to be the same as the source
- New command neo4j-admin server validate-config performs configuration validation without starting the server.
Platform & Supportability
- Migration from Neo4j 4.4 to Neo4j 5.x is supported please follow the migration guide available here.
- Any-to-any version rolling upgrade provides a streamlined upgrade experience and supports from 5.0 to 5.2, then with support for direct upgrades to any version after 5.5.
- Prompts user to confirm that backups have been taken before the database is migrated from Neo4j 4.4 to 5.x.
- Accept the evaluation license in Docker when you don’t have a commercial license.
Security
- Retry calls to the OpenID Connect discovery endpoint if they do not succeed initially. This applies on initial database startup and if the configuration is updated with dbms.setConfigValue.
Fixes
- Clustering
- Bug fix where a server went back and forth between pipeline and catch up mode even if there was no load.
- Prevent system database bootstrapping with too few Raft members when there are discovery restarts between publishing the Raft member id and observing successful publication.
- Fix issue where server-side routed transactions might not be retried when encountering transient errors
- Fixed Neo.DatabaseError.General.UnknownError message: Cannot invoke “org.neo4j.driver.summary.InputPosition.offset()” because “pos” is null. This happens when queries that produce certain notifications are re-routed to another cluster member with server-side routing.
- Cypher
- Eagerness performed on node or relationships property or label when returning a full entity node.
- Repeating a relationship variable in a pattern will not return any results and issue a warning, because a relationship is not permitted to be traversed more than once.
- Fixed a bug where an OPTIONAL MATCH with shortestPath, followed by DISTINCT, would fail during planning.
- Fix a bug where SKIP and LIMIT are ignored for simple COUNT(…) aggregation queries that were solved with a CountFromCountStore plan.
- Fix bug in scoping with self referencing variables in a CREATE clause used in conjunction with list comprehension.
- Fix bug in MERGE ()-[:R]-()
- Kernel
- Fixed an issue with property key names in importer CSV header couldn’t be parsed if they contained : characters. Now this works if the header entry also specifies a property type, e.g. my-key:with-colons:string
- Recovery logging and dependencies adaptation
- Fixed reporting of JVM memory metrics
- Packaging
- Fix for system databases which cannot be migrated from Neo4j 4.4 to 5.x, users upgrading with deb/ rpm were left in an unrecoverable situation requiring a rebuild. During the upgrade the data directory is now moved to a new location to prevent data loss. Full upgrade instructions are available at: https://development.neo4j.dev/docs/upgrade-migration-guide/current/version-5/
- Fixed Ops Manager Server and Agent packaging, neo4j-enterprise-5.5.0-<distibution> has increased by approximately 123Mb.
- Security
- Fix a bug where group to role mappings defined for OpenID connect in dbms.security.oidc.<provider>.authorization.group_to_role_mapping were not matched correctly with claims containing capital letters.
- Upgraded Apache Shiro from 1.10.1 to 1.11.0. This version includes fixes for CVE-2023-22602
Neo4j 5.4 (26 Jan 2023)
Highlights
Products included
The following products have been included in the distribution – available in /products directory unless stated otherwise – and are fully compatible with this release.- APOC Core 5.4.1 – The most popular community library developed for the database, is fully supported (included in Labs directory). Please refer to the changelog for details.
- Bloom 2.6.1 – A beautiful and expressive data visualization tool to quickly explore and interact with Neo4j’s graph data platform – no coding required. Please refer to the release notes for details. (Requires a License)
- Browser 5.4.0 – Neo4j Browser is a tool for developers to interact with the graph. It is the default interface for both Enterprise and Community Editions (included in the /libs directory) of the Neo4j database.
- Neo4j Graph Data Science 2.2.7 is a compatible version of the connected data analytics and machine learning platform that helps you understand the connections in big data to answer critical questions and improve predictions. (GDS Enterprise requires a Licence. )
- Neo4j Ops Manager 1.3.3 is a UI-based tool that enables Administrators to operate and observe all of their Neo4j Database Management Servers. Now includes support for Neo4j’s any-to-any upgrade. Please refer to the release notes for details. (Included in Enterprise).
Surface for Developers and Data Scientists
- Browser updated to driver for 5.3.0
- Browser handles connections to, and setting parameters for Composite databases.
- Browser includes alias names in the database selector.
- Browser clears metadata when switching databases.
- Browser displays product evaluation/ trial banners.
- Browser handles lost connection.
- Drivers respond faster on failed routing discovery with more actionable messages
- Python driver serialization of Pythonic object types (NumPy arrays, Pandas dataframes, series and arrays, Tuples)
Language and Graph Model
- Generates warnings for queries with relationship type expressions that can never be fulfilled.
- Introduce new operator, IntersectionNodeByLabelsScan, for more efficient handling of queries like MATCH (n:A&B&C).
Scale and Availability
- Deprecate server.groups for initial.server.tags
Operability & Observability
- Command completion scripts for neo4j and neo4j-admin clients for Unix are installed automatically with deb and rpm.
Platform & Supportability
- Users can accept the trial license during install with the installers or NEO4J_ACCEPT_LICENSE_AGREEMENT=eval. While in trial mode they will receive reminders in Browser and Cypher Shell. The selection is logged in the neo4j.log file.
- Migration from Neo4j 4.4 to Neo4j 5.4 is supported please follow the migration guide available here.
- Any-to-any version rolling upgrade provides a streamlined upgrade experience and supports from 5.0 to 5.4, then with support for direct upgrades to any version after 5.4.
- Upgrading from 4.4 to 5.x prompts users to confirm that backups have been taken before continuing the upgrade. During the upgrade the data directory is also moved to a new location to prevent data loss.
Security
- JWT claims specified in dbms.security.oidc.<provider>.claims.groups may now contain a single group returned as a string as well as a list of groups as was previously required.
Fixes
- Browser
- Fix bug where email was not supported as a username in :server user list.
- Fix performance issues with browser background metadata for RBAC users.
- Fix indent formatting in nested objects.
- Fix relationship stylings not getting applied.
- Fix role cluster role incorrectly reported as leader.
- Fix :auto didn’t handle newlines.
- Cypher
- Fixed problem where Cypher queries with DELETE inside CALL would not return correct results. The fix was to insert a missing Eager operator.
- Fixed show database entries with undetermined roles null are returned rather than unknown.
- Fixed a bug where frequently executed queries were never re-planned. This could happen if the time between executions of a query was always less than cypher.min_replan_interval, and cache space was generous enough.
- Fixed bug for list literals with IN expressions.
- Kernel
- Fixed an issue in import where some date value types didn’t handle empty values from the CSV files.
- Fixed a couple of small issues with TX log rotation.
- Fixes a performance issue creating Lucene indexes where workers ended up waiting unnecessarily on other threads for merging internal Lucene segment files.
- Packaging
- Resolved: upgrade using the deb or rpm packages left in an unrecoverable situation where Neo4j will not start because of an non migratable system database: Fix: the data directory is now moved to a new location to prevent data loss. The system database must be rebuilt entirely on upgrade. Full upgrade instructions are available at: https://development.neo4j.dev/docs/upgrade-migration-guide/current/version-5/
- Security
- Fixed some security issues.
- Fixed bug in privilege evaluation for the ALTER DATABASE command, where it was possible to bypass denied SET DATABASE ACCESS privilege by leveraging ALTER DATABASE privilege instead.
Please refer to the changelog for full details of the changes.
Neo4j 5.3 (15 Dec 2022)
Highlights
Products included
The following products have been included in the distribution – available in /products directory unless stated otherwise – and are fully compatible with this release.- APOC Core 5.3.0 – The most popular community library developed for the database, is fully supported (included in Labs directory). Please refer to the changelog for details.
- Bloom 2.5.1 – A beautiful and expressive data visualization tool to quickly explore and interact with Neo4j’s graph data platform – no coding required. Please refer to the release notes for details. (Requires a License)
- Browser 2.5.3 – Neo4j Browser is a tool for developers to interact with the graph. It is the default interface for both Enterprise and Community Editions (included in the /libs directory) of the Neo4j database.
- Neo4j Graph Data Science 2.2.6 is a connected data analytics and machine learning platform that helps you understand the connections in big data to answer critical questions and improve predictions. Please refer to the release notes for further details. (GDS Enterprise requires a Licence. )
- Neo4j Ops Manager 1.3.1 is a UI-based tool that enables Administrators to operate and observe all of their Neo4j Database Management Servers. Now includes support for Neo4j’s any-to-any upgrade. Please refer to the release notes for details. (Included in Enterprise).
Surface for Developers and Data Scientists
- Improve messaging in Browser when newly created databases startup.
- Browser is able to connect to members in an Autonomous Cluster even when they do not host a default database.
Language and Graph Model
- A faster implementation of the shortest path algorithm.
- Extend subquery support in Exists and Count expressions to allow full non-updating subqueries.
Write and Import Performance
- Multiple :ID columns can be specified in the admin import CSV header to form composite IDs referable from the relationship CSV data.
Read and Export Performance
- Introduce NodeByElementIdSeek, DirectedRelationshipByElementIdSeek and UndirectedRelationshipByElementIdSeek for logical plans to improve searches with ElementID.
Scale and Availability
- Quarantine user databases if recovery fails at startup. A quarantined state will indicate that something is wrong with the store and that manual intervention is required.
- Routing procedure returns all servers which host the given database as routers, including secondaries too.
Cloud Native Operations
- Docker image will fail to start if the specified password length is less than dbms.security.auth_minimum_password_length. The cause will not be visible on console output, but will be logged.
Operability & Observability
- SHOW DATABASES displays roles (primary/secondary) for stopped databases.
- SHOW DATABASES returns databases from offline servers within Autonomous Clusters.
Platform & Supportability
- Migration from Neo4j 4.4 to Neo4j 5.3 is supported please follow the migration guide available here.
- Any-to-any version rolling upgrade provides a streamlined upgrade experience and supports from 5.1 to 5.3, then with support for direct upgrades to any version after 5.3.
Security
- Password length requirement for creating and alter users. Default 8 characters but can be modified by using configuration setting dbms.security.auth_minimum_password_length
- Validate that URIs used for communicating with OpenId Connect identity providers use the HTTPS scheme. This is required by the specification, connecting to identity providers over HTTP is no longer supported – customers will no longer be able to connect.
Fixes
- Browser
- Fix sysinfo dependency on a setting removed in Neo4j 5.0.
- Fix northwind data not loading properly due to https redirect.
- Clustering
- Fixed leak of drivers and connection pools with server side routing.
- Cypher
- Fix plan value hash joins when the properties are wrapped in a function call.
- Fix error Exception closing multiple resources when plans use Expand(Into).
- Fixed a bug where an updating query might get stuck in an infinite loop during planning.
- Fix issue where a high frequency of ALTER ALIAS would create a large number of threads.
- Fabric
- Fix issue where temporal functions failed to run directly on composite databases.
- Kernel
- Fixed a bug where neo4j-admin database import incremental would both miss enforcing uniqueness of node key constraints and leave them in an inconsistent state after the import.
- Fixed a bug where neo4j-admin database import incremental could cause indexes to contain nodes/relationships that violated property existence constraints in them even though these nodes/relationships never made it into the imported data.
Neo4j 5.2 (21 Nov 2022)
Highlights
Products included
The following products have been included in the distribution – available in /products directory unless stated otherwise – and are fully compatible with this release.- APOC 5.2.1 – The most popular community library developed for the database, is fully supported (included in Labs directory).
- Bloom 2.5.1 – A beautiful and expressive data visualization tool to quickly explore and interact with Neo4j’s graph data platform – no coding required. Please refer to the release notes for details. (Requires a License)
- Browser 5.0.0 – Neo4j Browser is a tool for developers to interact with the graph. It is the default interface for both Enterprise and Community Editions (included in the /libs directory) of the Neo4j database.
- Neo4j Graph Data Science 2.2.4 is a connected data analytics and machine learning platform that helps you understand the connections in big data to answer critical questions and improve predictions. Please refer to the release notes for further details. (GDS Enterprise requires a License. )
- Neo4j Ops Manager 1.2.2 is a UI-based tool that enables Administrators to operate and observe all of their Neo4j Database Management Servers. Now includes support for Neo4j’s any-to-any upgrade. Please refer to the release notes for details. (Included in Enterprise).
Language and Graph Model
- graph.propertiesByName() retrieves properties from graphs in a COMPOSITE database
- Deprecated the same relationship variable for multiple variable length relationships e.g. MATCH ()-[r*]->(), ()-[r*]->() and will be removed in a future version.
Write and Import Performance
- New default value 70% of heap for ‘dbms.memory.transaction.total.max’ to reduce the likelihood of memory intensive transactions from running out of memory.
Read and Export Performance
- Added new types to org.neo4j.graphdb.schema.ConstraintType in the Core API.
Scale and Availability
- DRYRUN explains what the outcome of command will be on a cluster – without executing it.
- Created ‘synonyms’ cluster.raft. and cluster.storecopy for the metrics cluster.core.cluster.readreplica.
- Helm Charts for Neo4j 5 support Autonomous Clustering, and automatically deploy the network load balancer in the Kubernetes Cluster.
Platform & Supportability
- Migration from Neo4j 4.4 to Neo4j 5.2 is supported please follow the migration guide available here.
- Any-to-any version rolling upgrade provides a streamlined upgrade experience and supports from 5.0 to 5.2, then with support for direct upgrades to any version after 5.2.
- Packaging information file provided under neo4j home.
- Upgraded Apache Shiro (included) from 1.9.1 to 1.10.0.
Fixes
- Composite / Fabric
- Fix bug with map projection in Fabric, where the value of the map projection is returned outside a subquery.
- Autonomous Clustering
- Fix bug where store copy failed to retry against certain remote servers due to issues with address locking logic.
- Bug fix where a member in a two member raft group couldn’t be drained since it was wrongly considered unsafe.
- Bug fix where the wrong artifact was chosen for databases with the same name but different database ids.
- Cypher
- Fixed a bug in pipelined execution graph construction, that could cause some queries with UNION inside an updating subquery to fail with the message “Could not find downstream argumentStateBuffer with id ArgumentStateMapId(x).”
- Fix bug in Expand(Into) where we could fail to find existing relationships if the same node is expanded multiple times.
- Fix a bug where pressing ctrl+c in Cypher Shell would leave you in an infinite loop of IOException: Input/Output error errors.
- Kernel
- Fix edge case where active transactions metrics were inconsistently decremented on closing a transaction, which led to <prefix>.database.transaction.active_read to potentially appear negative.
- Fixed possible crashes when using very small page cache sizes.
- Security
- Bump commons-text 1.9 -> 1.10.0 so as to address CVE-2022-42889
Neo4j 5.1 (24 October 2022)
The General Availability ReleaseHighlights
Products included
The following products have been included in the distribution – available in /products directory – and are fully compatible with this release.- Bloom 2.4.1 – A beautiful and expressive data visualization tool to quickly explore and interact with Neo4j’s graph data platform – no coding required. Please refer to the release notes for more details of what is available in this release. (Requires a License)
- Neo4j Browser 5.0.0 – Browser is a tool for developers to interact with the graph. It is the default interface for both Enterprise and Community Editions of the Neo4j database.
- Neo4j Graph Data Science 2.2.2 is a connected data analytics and machine learning platform that helps you understand the connections in big data to answer critical questions and improve predictions. Please refer to the release notes for more details of what is available in this release. (GDS Enterprise requires a License)
- Neo4j Ops Manager 1.2 is a UI-based tool that enables Administrators to operate and observe all of their Neo4j Database Management Servers. Please refer to the release notes for more details of what is available in this release. (Included in Enterprise).
Surface for Developers and Data Scientists
- Improved messaging in Browser for startup of newly created databases
- Browser support connecting to cluster members without a default database.
- Procedures can specify an analyzer for Full Text queries
Language and Graph Model
- Include Europe/Kyiv in the list of time zones in Cypher to, as per IANA 2020b.
Write and Import Performance
- Incremental Import CSV header supports id-type to specify the value type for ID for a group e.g: id:ID(MyGroup){label:MyLabel, id-type: int}.
Read and Export Performance
- Trigram Analyzer provides significantly faster Full Text searches.
- Range seek Index Searches are consistent with non-Indexed range searches – does not match Not a Number (NaN).
Scale and Availability
- Autonomous Clusters support Server Side Routing for Reads
- Set or update the TOPOLOGY without specifying PRIMARY so that you can keep the defaults or existing settings.
- Default database is created and allocated on a best-effort basis to initial members during dbms creation.
Platform & Supportability
- Migration from Neo4j 4.4 to Neo4j 5.1 is supported please follow the migration guide available here.
- Any-to-any version rolling upgrade provides a streamlined upgrade experience and supports from 5.0 to 5.1, then with support for direct upgrades to any version after 5.1.
Fixes
- APIs
- Fixes a memory leak issue when using the Transactional HTTP API (GitHub ref)
- Browser
- Fix sysinfo depending on a setting no longer in 5.0.
- Fix northwind data not loading properly due to https redirect.
- Autonomous Clustering
- Fix deadlock in RaftDrainingService area
- Cypher
- Fix issue where performance regressed for queries with “impossible predicates”
- Fix bug where a user could change the database topology with incorrect privileges.
- Fix bug in pipelined runtime where some queries using assertingMultiNodeIndexSeekOperator would fail incorrectly with Merge did not find a matching node…. For example in queries like UNWIND [0,1] AS id MERGE (n:A:B {id: id}), if there is a uniqueness constraint on the id property for both A and B labels.
- Fix bug in pipelined runtime where AssertingMultiNodeIndexSeekOperator failed to perform locking index seeks. This could lead to failures when running concurrent transactions in queries like MERGE (n:A:B {id: x}) when we have a uniqueness constraint on id for both labels A and B.
- Fixed bug where DROP DATABASE … IF EXISTS and ALTER DATABASE … IF EXISTS … could give DatabaseNotFoundException when there exists a remote database alias with the name.
- Fixed bug for having * and order by id in same RETURN clause
- Fix a bug where SHOW DATABASES may not include all servers for a database if the servers have the same value for server.bolt.advertised_address
- Fix a bug with memory tracking in CALL IN TRANSACTION that could lead to an exception with the message “Expected non-negative long value …”.
- Fix bug where columns could be swapped for UNION queries.
- Fix a bug in pipelined runtime that can cause incorrect row ordering in queries that leverage order and contain an aggregation.
- Kernel
- Fixes a bug that caused XML logging files not to be included in neo4j-admin server report
Neo4j 5.0 (06 October 2022)
The Limited Availability ReleaseHighlights
Surface for Developers and Data Scientists
- Browser 5.0 is a tool for developers to interact with the graph, and includes the following new features
- Zoom to cursor on scroll in visualization
- Zoom graph to fit after initial visualization animation
- Editor displays full database name
- Clear credentials in connection form on disconnect
- Update :help articles on INDEX & CONSTRAINT
- Note The Version and Info report the version as 5.0.0 but the Jar is named neo4j-browser-4.4.7.jar
- Exceptions and Errors provide is_retryable() property, which indicates whether a retry behavior is recommended for the exception.
- asyncio Python functions have been added to the Python Driver, including cancellation.
- Python driver supports Pandas dataframes export Neo4j result sets to integrate into common workflows for data scientists.
- Query String and Parameters in the results objects in the Go driver have been renamed, replacing the inconsistent ‘Statement’ object with the consistent ‘Query’ object.
- New unique (reused) element ID can be used by applications, including those deployed with Fabric, to identify graph elements, their type and the database it originates from especially. The identifier is available using the elementID() function in Cypher – and the id will be reused when a graph element is deleted.
- Notifications -Updates severity on some of the existing notifications. Also, updates status code accordingly (removing Warning from the name if it now has severity Information).
- Traversal Framework for Neo4j 5 is available and the documentation has been improved to provide clear guidance on use and limitations.REMOVAL of the deprecated version and version_info of the Result Summary object.
- REMOVAL of the deprecated Session#reset in the Java driver.
- REMOVAL of deprecated HTTP API endpoints where the endpoint begins with /db/data/transaction/. Please use the endpoints that include the database name (e.g. /db/neo4j/tx/commit.
Language and Graph Model
- Graph Pattern Matching has been
improved:
- New inline Relationship patterns: MATCH (a)-[r:R WHERE r.p >10]-(b)
- Improved label expressions in MATCH clauses. Nodes and relationships can be filtered using more sophisticated label and type boolean expressions such as & for logical AND (V:L1&L2), | for logical OR (V:L1|L2), ! for negation (V:!L4), % for any (V:%) and () for grouping (V:(L1&L2)|(L3& !L4)).
- Allow reference to
variables in other path elements:
- MATCH (a)-[r:R WHERE r.p > b.p + a.p]-(b)
- MATCH (a WHERE b.prop > 100)-[r]-(b)
- Additions to Cypher
- Allow underscores in numeric literals, except at the start.
- COUNT { .. } expression replaces size().
- EXISTS {} can be used in all expressions.
- isNan function returns whether a value is or is not a number.
- Neo4j APOC 5 Library (available in /labs directory) is the most-widely used extension library for Neo4j. It includes procedures, providing functionality for utilities, conversions, graph updates, and more. Comes with Engineering support for security and severity 1 fixes. APOC Extended has been moved to a community supported repository.
- REMOVAL of the deprecated BTREE index type.
- REMOVAL of the deprecated CYPHER 3.5 mode
- Cypher Deprecations, additions & removals: full details are available here.
Read and Export Performance
- RANGE and POINT indexes can be used to speed up MATCH queries.
- Removed support for BTREE Indexes – before migrating from Neo4j 4.4, ensure you have migrated to the new RANGE and POINT Index types and deleted the BTREE indexes (refer to the Migration Guide for details).
- Lists included in FULLTEXT indexes – strings and arrays of strings are included in Full Text Indexes.
- Faster K-Hop Queries a new Cypher runtime operator (BSFPruningVarExpand) speeds up K-Hop queries.
- Auto-parameterize partially parameterized queries to improve query performance.
- SLOTTED Runtime in Community Edition replaces INTERPRETED and significantly improves query performance.
Write and Import Performance
- Incremental Offline Import appends new nodes with properties and new relationships between existing or new nodes within an existing database at an equivalent speed to Offline Import.
- PIPELINED Runtime support for write operations subqueries (CALL { }) that perform write operations can now be run on the faster PIPELINED runtime.
- No Eager for DETACH DELETE (n) in CALL IN TRANSACTIONS – the planner performs memory efficient deletes for full database deletions by avoiding planning eager operations.
Scale and Availability
- Autonomous Clustering (Enterprise) provides
- Autonomous Clustering offer horizontal elastic scale to run larger clusters, with more databases without administrative overhead.
- Administrators can specify the number of database copies to be replicated within a cluster so that they are available on a subset of servers.
- The cluster decides which databases are allocated to which servers. The allocation may change as servers are added and removed over time.
- Cypher’s COMPOSITE DATABASE provides real time Fabric configuration (Enterprise) – create, update and remove Fabric configurations without a restart, whether the database is within the same Autonomous Cluster, or hosted remotely.
- Removed the Multi-DC license setting (Enterprise).
Cloud Native Operations
- IMMUTABLE privilege command (Enterprise) enables Administrators to lockdown the database to restrict administer privileges.
- Server-Side Routing is enabled by default (Enterprise).
Operability & Observability
- Neo4j-admin all admin functionalities have been consolidated into a single tool, and all commands have been grouped by scope. There is an optional neo4j-admin conf file and individual conf files for each command so that there is more control over values provided for each command.
- New namespaces for configuration settings in neo4j.conf clear and consistent use of namespaces to ensure settings are applied appropriately at the database or database management level.
- Procedures for validating config settings: The procedure ListConfig returns additional information about configuration settings. New procedure CheckConfigValue performs dry-run validation of new setting values.
- Cypher-shell provides auto completion of commands.
- Cypher-shell read access when there is no leader (Enterprise) read operations may be performed via cypher-shell using the neo4j:// scheme even when the cluster has no leader. Writes will return an error.
- Cypher-shell environment variables for URI or address use either NEO4J_URI and a new parameter –uri or NEO4J_ADDRESS to match the existing parameter –address.
- CREATE DATABASE FROM URI enables Administrators to create a database by restoring from a backup on remote storage (HTTP, HTTPS, S3.)
- New backup subsystem (Enterprise)
provides
- Full and differential backup to an immutable file, and aggregation to compile a chain of backups into a full backup.
- Differential backup reduces storage requirements by 85% and provides point-in-time restore on timestamps or transaction ids.
- A new backup API for backup management and operability and target multiple URIs in a single backup command to support Autonomous Clusters.
- The Backup subsystem from Neo4j 4x is available as neo4j-admin database legacy-backup and legacy-restore.
- Strict validation for configuration settings by default to ensure the servers do not attempt to start with incorrect configuration (server.config.strict_validation.enabled). Turn off strict validation to enable start up, and log warnings.
- New namespaces for Metrics (Enterprise) consistent with the Database or Database Management Server
- Neo4j.log has log rotation enabled by default – defaults are max file size is 20 MBytes (SizeBasedTriggeringPolicy), max number of log files is 7 (DefaultRolloverStrategy)
- All logging is controlled by log4j, including neo4j.log, configuration settings are located in the $NEO4J_HOME/conf folder in the user-logs.xml used for neo4j.log and server-logs.xml used for debug, security, http and query log. Query log uses the same format as neo4j.log
- Order transaction log files by creation time in debug.log and not alphabetical sorting.
- Destination database name is included in the debug.log when the neo4j-admin database import command is used.
- Transaction metadata included in Cypher-shell queries so that logs record the source of the query.
- Cypher-shell logging (-log) Support can use cypher-shell to replicate problems with the Java Driver or Bolt without having to edit the client application.
Security
- Cypher-shell impersonation (Enterprise) use and or test user impersonation via Cypher-shell
Platform & Supportability
- Requires Scala 2.13 (included) and Java JDK 17 – full details of System Requirements are available here.
- New Support Terms – Refer to
Support Terms for full details – in summary
- The Major release is supported with Hotfixes only until the first Minor release, each Minor release is supported with Hotfixes until the next Minor release.
- Hotfixes will only be released between Minor releases in exceptional cases, e.g. High Severity Security fix, and will receive product support until the next Minor release.
- In order to maintain Product Support for new bug fixes and feature enhancements, customers must apply the latest Minor release.
- Migration from Neo4j 4.4 to Neo4j 5 In order to migrate from Neo4j 4.4.x to Neo4j 5 follow the migration guide available here.
- Any-to-any version rolling upgrade provides a streamlined upgrade experience from 5.0 onwards; upgrade is possible from any 5.x version to any later version of 5.y e.g. 5.2 to 5.6.
- Log acceptance of the enterprise agreement in neo4j.log
- Transaction state memory allocation configured to use ON_HEAP tx state by default as this benefits most workloads observed in Aura.
- Consistent write throughput with Corretto JVM on AWS Graviton 2 performance investigation demonstrated a consistent write throughput vs Oracle JVM on the AWS Graviton 2, and Intel architectures.