From a1d3dc285b26329809f9f8e54b3cc5a8b4a0a216 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jens=20Pryce-=C3=85klundh?= <112686610+JPryce-Aklundh@users.noreply.github.com> Date: Thu, 11 May 2023 14:53:13 +0200 Subject: [PATCH] add release information --- .../access-control/dbms-administration.adoc | 2 + .../ROOT/pages/administration/databases.adoc | 4 +- .../ROOT/pages/administration/servers.adoc | 9 +-- modules/ROOT/pages/clauses/call-subquery.adoc | 3 + .../ROOT/pages/clauses/listing-settings.adoc | 5 +- modules/ROOT/pages/constraints/examples.adoc | 4 ++ modules/ROOT/pages/constraints/index.adoc | 4 ++ modules/ROOT/pages/constraints/syntax.adoc | 1 + ...ions-additions-removals-compatibility.adoc | 58 ++++++++++++++++++- .../ROOT/pages/execution-plans/operators.adoc | 4 ++ .../pages/indexes-for-search-performance.adoc | 12 ++-- modules/ROOT/pages/syntax/expressions.adoc | 14 +++++ 12 files changed, 104 insertions(+), 16 deletions(-) diff --git a/modules/ROOT/pages/administration/access-control/dbms-administration.adoc b/modules/ROOT/pages/administration/access-control/dbms-administration.adoc index 900c30032..af66a453b 100644 --- a/modules/ROOT/pages/administration/access-control/dbms-administration.adoc +++ b/modules/ROOT/pages/administration/access-control/dbms-administration.adoc @@ -1959,6 +1959,8 @@ a|Rows: 2 [[access-control-dbms-administration-setting]] == The DBMS `SETTING` privileges +_This feature was introduced in Neo4j 5.6._ + The ability to show configuration settings can be granted via the `SHOW SETTING` privilege. A role with this privilege is allowed to query the configuration settings matched by the xref::administration/access-control/dbms-administration.adoc#access-control-name-globbing[name-globbing]. diff --git a/modules/ROOT/pages/administration/databases.adoc b/modules/ROOT/pages/administration/databases.adoc index 62203e85d..882e4b986 100644 --- a/modules/ROOT/pages/administration/databases.adoc +++ b/modules/ROOT/pages/administration/databases.adoc @@ -309,7 +309,7 @@ If a user has not been granted `ACCESS` privilege to any databases nor any of th ==== [NOTE] ==== -Databases hosted on servers that are offline are also returned by the `SHOW DATABASES` command. +As of Neo4j 5.3, databases hosted on servers that are offline are also returned by the `SHOW DATABASES` command. For such databases, the `address` column displays `NULL`, the `currentStatus` column displays `unknown`, and the `statusMessage` displays `Server is unavailable`. ==== @@ -1117,6 +1117,8 @@ To ensure the database to be dropped is standard and not composite, the user fir [[administration-wait-nowait]] == Wait options +_The_ `WAIT` _subclause was added as an option to the_ `ALTER DATABASE` _command in Neo4j 5.7._ + Aside from `SHOW DATABASES`, all database management commands accept an optional `WAIT`/`NOWAIT` clause. The `WAIT`/`NOWAIT` clause allows you to specify a time limit in which the command must complete and return. diff --git a/modules/ROOT/pages/administration/servers.adoc b/modules/ROOT/pages/administration/servers.adoc index b12574073..7cd283545 100644 --- a/modules/ROOT/pages/administration/servers.adoc +++ b/modules/ROOT/pages/administration/servers.adoc @@ -322,6 +322,7 @@ This may not be specified in combination with `allowedDatabases`. | tags | list of server tags | List of server tags used during database allocation and for load balancing and routing policies. +label:new[Introduced in 5.6] |=== [NOTE] @@ -370,6 +371,7 @@ This may not be specified in combination with `allowedDatabases`. | tags | list of server tags | List of server tags used during database allocation and for load balancing and routing policies. +label:new[Introduced in 5.6] |=== [NOTE] @@ -394,9 +396,12 @@ The new name of the server must be unique. [[server-management-reallocate]] == Reallocate databases +_The_ `DRYRUN` _feature was introduced in Neo4j 5.2._ + After enabling a server, `REALLOCATE DATABASES` can be used to make the cluster re-balance databases across all servers that are part of the cluster. Using `DRYRUN REALLOCATE DATABASE` returns a view of how the databases would have been re-balanced if the command was executed without `DRYRUN`: + .Result [options="header,footer", width="100%", cols="m,m,m,m,m,m"] |=== @@ -406,10 +411,6 @@ Using `DRYRUN REALLOCATE DATABASE` returns a view of how the databases would hav | "db3" | "server-1" | "00000000-94ff-4ede-87be-3d741b795480" | "server-5" | "00000003-0df7-4057-81fd-1cf43c9ef5f7" | "primary" |=== -[NOTE] -==== -`DRYRUN` is introduced in Neo4j 5.2, and thus is not available in earlier minor releases of v5. -==== [role=not-on-aura] [[server-management-deallocate]] diff --git a/modules/ROOT/pages/clauses/call-subquery.adoc b/modules/ROOT/pages/clauses/call-subquery.adoc index 4dbbd751b..4b941a231 100644 --- a/modules/ROOT/pages/clauses/call-subquery.adoc +++ b/modules/ROOT/pages/clauses/call-subquery.adoc @@ -607,6 +607,9 @@ For larger data sets, you might want to use larger batch sizes, such as `10000 R ==== === Error behaviour [[txs_error_behaviour]] + +_This feature was introduced in Neo4j 5.7._ + Users can choose one of three different option flags to control the behaviour in case of an error occurring in any of the inner transactions of `+CALL { ... } IN TRANSACTIONS+`: diff --git a/modules/ROOT/pages/clauses/listing-settings.adoc b/modules/ROOT/pages/clauses/listing-settings.adoc index 733de59a5..83181740c 100644 --- a/modules/ROOT/pages/clauses/listing-settings.adoc +++ b/modules/ROOT/pages/clauses/listing-settings.adoc @@ -3,10 +3,7 @@ [[query-listing-settings]] = SHOW SETTINGS -[abstract] --- -This section explains the `SHOW SETTINGS` command. --- +_This feature was introduced in Neo4j 5.6._ Listing the configuration settings on a server can be done with `SHOW SETTINGS`. diff --git a/modules/ROOT/pages/constraints/examples.adoc b/modules/ROOT/pages/constraints/examples.adoc index beaf0db61..5a4848e86 100644 --- a/modules/ROOT/pages/constraints/examples.adoc +++ b/modules/ROOT/pages/constraints/examples.adoc @@ -322,6 +322,8 @@ RETURN book1, book2 [[constraints-examples-relationship-uniqueness]] == Relationship property uniqueness constraints +_This feature was introduced in Neo4j 5.7._ + A relationship property uniqueness constraint ensures that all relationships with a particular relationship type have a set of defined properties whose combined value is unique when existing. * xref::constraints/examples.adoc#constraints-create-a-relationship-uniqueness-constraints[] @@ -1400,6 +1402,8 @@ RETURN actor, 'non-existing' AS reason [[constraints-examples-relationship-key]] == Relationship key constraints +_This feature was introduced in Neo4j 5.7._ + A relationship key constraint ensures that all relationships with a particular relationship type have a set of defined properties whose combined value is unique. It also ensures that all properties in the set are present. diff --git a/modules/ROOT/pages/constraints/index.adoc b/modules/ROOT/pages/constraints/index.adoc index ac1ab9687..03e8b3deb 100644 --- a/modules/ROOT/pages/constraints/index.adoc +++ b/modules/ROOT/pages/constraints/index.adoc @@ -19,6 +19,8 @@ For property uniqueness constraints on multiple properties, the combination of t Node property uniqueness constraints do not require all nodes to have a unique value for the properties listed (nodes without all properties are not subject to this rule). *Unique relationship property constraints*:: +_This feature was introduced in Neo4j 5.7._ ++ Unique relationship property constraints, or relationship property uniqueness constraints, ensure that property values are unique for all relationships with a specific type. For property uniqueness constraints on multiple properties, the combination of the property values is unique. Relationship property uniqueness constraints do not require all relationships to have a unique value for the properties listed (relationships without all properties are not subject to this rule). @@ -48,6 +50,8 @@ Queries attempting to do any of the following will fail: * Update the properties so that the combination of property values is no longer unique. *Relationship key constraints* label:enterprise-edition[]:: +_This feature was introduced in Neo4j 5.7._ ++ Relationship key constraints ensure that, for a given type and set of properties: + [lowerroman] diff --git a/modules/ROOT/pages/constraints/syntax.adoc b/modules/ROOT/pages/constraints/syntax.adoc index 75cf3d014..74a2db407 100644 --- a/modules/ROOT/pages/constraints/syntax.adoc +++ b/modules/ROOT/pages/constraints/syntax.adoc @@ -261,6 +261,7 @@ This is the default if none is given. |UNIQUE[NESS] | Returns all property uniqueness constraints, for both nodes and relationships. +_This feature was introduced in Neo4j 5.3._ |NODE [PROPERTY] EXIST[ENCE] | Returns the node property existence constraints. diff --git a/modules/ROOT/pages/deprecations-additions-removals-compatibility.adoc b/modules/ROOT/pages/deprecations-additions-removals-compatibility.adoc index d1549c094..d7799b7b5 100644 --- a/modules/ROOT/pages/deprecations-additions-removals-compatibility.adoc +++ b/modules/ROOT/pages/deprecations-additions-removals-compatibility.adoc @@ -13,6 +13,24 @@ Replacement syntax for deprecated and removed features are also indicated. [[cypher-deprecations-additions-removals-5.8]] == Version 5.8 +=== New features + +[cols="2", options="header"] +|=== +| Feature +| Details + +a| +label:functionality[] +label:new[] + +New operator: `AssertSameRelationship` + +a| +The `AssertSameRelationship` operator is used to ensure that no relationship property uniqueness constraints are violated in the slotted and interpreted runtime. +More information can be found xref::execution-plans/operators.adoc#query-plan-assert-same-relationship[here]. + +|=== === Updated features [cols="2", options="header"] @@ -50,7 +68,7 @@ The `trackedSince` column returns the time when usage statistics tracking starte a| label:functionality[] label:new[] -[source, syntax] +[source, syntax, role=noheader] ---- CALL { @@ -161,6 +179,7 @@ The existing `UNIQUENESS` filter will now return both node and relationship prop === New features + [cols="2", options="header"] |=== | Feature @@ -168,7 +187,23 @@ The existing `UNIQUENESS` filter will now return both node and relationship prop a| label:functionality[] -label:added[] +label:new[] + +`server.tag` + +a| New functionality to change tags at runtime via `ALTER SERVER`. +More information can be found xref::administration/servers.adoc#server-management-alter-server[here]. + +|=== + +[cols="2", options="header"] +|=== +| Feature +| Details + +a| +label:functionality[] +label:new[] [source, cypher, role="noheader"] ---- COLLECT { @@ -215,6 +250,25 @@ New privilege that controls a user's access to desired configuration settings. [[cypher-deprecations-additions-removals-5.5]] == Version 5.5 +=== New features + +[cols="2", options="header"] +|=== +| Feature +| Details + +a| +label:functionality[] +label:new[] + +New operator: `IntersectionNodeByLabelsScan` + +a| +The `IntersectionNodeByLabelsScan` operator fetches all nodes that have all of the provided labels from the node label index. +More information can be found xref::execution-plans/operators.adoc#query-plan-intersection-node-by-labels-scan[here]. + +|=== + === Deprecated features [cols="2", options="header"] diff --git a/modules/ROOT/pages/execution-plans/operators.adoc b/modules/ROOT/pages/execution-plans/operators.adoc index 88bdb919f..381611138 100644 --- a/modules/ROOT/pages/execution-plans/operators.adoc +++ b/modules/ROOT/pages/execution-plans/operators.adoc @@ -737,6 +737,8 @@ Total database accesses: 13, total allocated memory: 184 // IntersectionNodeByLabelsScan // New in 5.4 +_This feature was introduced in Neo4j 5.5._ + The `IntersectionNodeByLabelsScan` operator fetches all nodes that have all of the provided labels from the node label index. ====== @@ -2826,6 +2828,8 @@ Total database accesses: 2, total allocated memory: 64 == Assert Same Relationship // AssertSameRelationship +_This feature was introduced in Neo4j 5.8._ + The `AssertSameRelationship` operator is used to ensure that no relationship property uniqueness constraints are violated in the slotted and interpreted runtime. The example looks for the presence of a `WORKS_IN` relationship with the supplied `id` and `badgeNumber`. If it can't be found, then it will be created. diff --git a/modules/ROOT/pages/indexes-for-search-performance.adoc b/modules/ROOT/pages/indexes-for-search-performance.adoc index 11beac547..2734ed7fa 100644 --- a/modules/ROOT/pages/indexes-for-search-performance.adoc +++ b/modules/ROOT/pages/indexes-for-search-performance.adoc @@ -212,7 +212,8 @@ ON (r.propertyName) More details about the syntax descriptions can be found xref:administration/index.adoc#administration-syntax[here]. -Text indexes have two index providers available, `text-2.0` (default) and `text-1.0` (deprecated), and no supported index configuration. +As of Neo4j 5.1, text indexes have two index providers available, `text-2.0` (default) and `text-1.0` (deprecated), and no supported index configuration. + [NOTE] ==== @@ -663,20 +664,21 @@ This command will produce a table with the following columns: | The name of the constraint the index is associated with or `null` if the index is not associated with any constraint. label:default-output[] | `STRING` -// New in 5.8 | `lastRead` | The last time the index was used for reading. -Returns `null` if the index has not been read since `trackedSince`, or if the statistics are not tracked. label:default-output[] +Returns `null` if the index has not been read since `trackedSince`, or if the statistics are not tracked. +label:default-output[] +label:new[Introduced in 5.8] | `DATETIME` -// New in 5.8 | `readCount` | The number of read queries that have been issued to this index since `trackedSince`, or `null` if the statistics are not tracked. label:default-output[] +label:new[Introduced in 5.8] | `INTEGER` -// New in 5.8 | `trackedSince` | The time when usage statistics tracking started for this index, or `null` if the statistics are not tracked. +label:new[Introduced in 5.8] | `DATETIME` | `options` diff --git a/modules/ROOT/pages/syntax/expressions.adoc b/modules/ROOT/pages/syntax/expressions.adoc index 5a8d9ac4d..5ca74f3cf 100644 --- a/modules/ROOT/pages/syntax/expressions.adoc +++ b/modules/ROOT/pages/syntax/expressions.adoc @@ -518,6 +518,8 @@ RETURN person.name AS name, EXISTS { [[existential-subquery-with-union]] ==== `EXISTS` subquery with a `UNION` +_This feature was introduced in Neo4j 5.3._ + `Exists` can be used with a `UNION` clause, and the `RETURN` clauses are not required. It is worth noting that if one branch has a `RETURN` clause, then all branches require one. The below example demonstrates that if one of the `UNION` branches was to return at least one row, the entire `EXISTS` expression will evaluate to true. @@ -549,6 +551,8 @@ RETURN [[existential-subquery-with-with]] ==== `EXISTS` subquery with `WITH` +_This feature was introduced in Neo4j 5.3._ + Variables from the outside scope are visible for the entire subquery, even when using a `WITH` clause. This means that shadowing of these variables is not allowed. An outside scope variable is shadowed when a newly introduced variable within the inner scope is defined with the same variable. @@ -579,6 +583,8 @@ RETURN person.name AS name [[existential-subquery-with-return]] ==== `EXISTS` subquery with `RETURN` +_This feature was introduced in Neo4j 5.3._ + `EXISTS` subqueries do not require a `RETURN` clause at the end of the subquery. If one is present, it does not need to be aliased, which is different compared to xref::clauses/call-subquery.adoc[`CALL` subqueries]. Any variables returned in an `EXISTS` subquery will not be available after the subquery. @@ -669,6 +675,8 @@ RETURN person.name AS name [[count-subquery-with-union]] ==== `COUNT` subquery with a `UNION` +_This feature was introduced in Neo4j 5.3._ + `COUNT` can be used with a `UNION` clause. If the `UNION` clause is distinct, the `RETURN` clause is required. `UNION ALL` clauses do not require the `RETURN` clause. However, it is worth noting that if one branch has a `RETURN` clause, then all require one. The below example shows the count of pets each person has by using a `UNION` clause: @@ -702,6 +710,8 @@ RETURN [[count-subquery-with-with]] ==== `COUNT` subquery with `WITH` +_This feature was introduced in Neo4j 5.3._ + Variables from the outside scope are visible for the entire subquery, even when using a `WITH` clause. This means that shadowing of these variables is not allowed. An outside scope variable is shadowed when a newly introduced variable within the inner scope is defined with the same variable. @@ -839,6 +849,8 @@ RETURN COUNT { (person)-[:HAS_DOG]->(:Dog) } AS numDogs, [[count-subquery-with-return]] ==== `COUNT` subquery with `RETURN` +_This feature was introduced in Neo4j 5.3._ + `COUNT` subqueries do not require a `RETURN` clause at the end of the subquery. If one is present, it does not need to be aliased. This is a difference compared to from xref::clauses/call-subquery.adoc[`CALL` subqueries]. Any variables returned in a `COUNT` subquery will not be available after the subquery. @@ -866,6 +878,8 @@ RETURN person.name AS name [[collect-subqueries]] === `COLLECT` subqueries +_This feature was introduced in Neo4j 5.6._ + A `COLLECT` subquery expression can be used to create a list with the rows returned by a given subquery. Any non-writing query is allowed.