Skip to content

Commit 2d7c613

Browse files
Merge branch 'dev' into shortest_fix
2 parents 6e0904c + c625be8 commit 2d7c613

File tree

7 files changed

+465
-110
lines changed

7 files changed

+465
-110
lines changed

.github/workflows/docs-pr-checks.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414

1515
# Generate HTML
1616
docs-build-pr:
17-
uses: neo4j/docs-tools/.github/workflows/reusable-docs-build.yml@v1.1.2
17+
uses: neo4j/docs-tools/.github/workflows/reusable-docs-build.yml@v1.2.0
1818
with:
1919
deploy-id: ${{ github.event.number }}
2020
retain-artifacts: 14
@@ -24,7 +24,7 @@ jobs:
2424
# By default, the job fails if there are errors, passes if there are warnings only.
2525
docs-verify-pr:
2626
needs: docs-build-pr
27-
uses: neo4j/docs-tools/.github/workflows/reusable-docs-verify.yml@v1.1.2
27+
uses: neo4j/docs-tools/.github/workflows/reusable-docs-verify.yml@v1.2.0
2828
with:
2929
failOnWarnings: true
3030

@@ -41,7 +41,7 @@ jobs:
4141
steps:
4242
- name: Get file changes
4343
id: get-file-changes
44-
uses: tj-actions/changed-files@cbda684547adc8c052d50711417fa61b428a9f88 # v41.1.2
44+
uses: tj-actions/changed-files@2f7c5bfce28377bc069a65ba478de0a74aa0ca32 # v46.0.1
4545
with:
4646
separator: ','
4747
files_yaml: |
@@ -56,7 +56,7 @@ jobs:
5656
docs-updates-comment-pr:
5757
if: needs.docs-build-pr.outputs.pages-listed == 'success'
5858
needs: [docs-build-pr, docs-changes-pr]
59-
uses: neo4j/docs-tools/.github/workflows/reusable-docs-pr-changes.yml@v1.1.2
59+
uses: neo4j/docs-tools/.github/workflows/reusable-docs-pr-changes.yml@v1.2.0
6060
with:
6161
pages-modified: ${{ needs.docs-changes-pr.outputs.pages-modified }}
6262
pages-added: ${{ needs.docs-changes-pr.outputs.pages-added }}

modules/ROOT/pages/deprecations-additions-removals-compatibility.adoc

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,34 @@ New features are added to the language continuously, and occasionally, some feat
1616
This section lists all of the features that have been removed, deprecated, added, or extended in different Cypher versions.
1717
Replacement syntax for deprecated and removed features are also indicated.
1818

19+
[[cypher-deprecations-additions-removals-2025.03]]
20+
== Neo4j 2025.03
21+
22+
=== New features
23+
24+
[cols="2", options="header"]
25+
|===
26+
| Feature
27+
| Details
28+
29+
a|
30+
label:functionality[]
31+
label:new[]
32+
[source, cypher, role=noheader]
33+
----
34+
UNWIND range(1, 100) AS i
35+
CALL (i) {
36+
MERGE (u:User {id: i})
37+
ON CREATE SET u.created = timestamp()
38+
} IN TRANSACTIONS ON ERROR RETRY 1 SECOND THEN FAIL
39+
----
40+
41+
| New error handling option for `CALL { ... } IN TRANSACTIONS`: `ON ERROR RETRY`.
42+
This option applies an exponential delay between retries for transaction batches failing due to transient errors, with an optional maximum retry duration, and handles failure based on a specified fallback error mode if the transaction does not succeed within the given time.
43+
For more information, see xref:subqueries/subqueries-in-transactions#on-error-retry[`CALL` subqueries in transactions -> `ON ERROR RETRY`].
44+
45+
|===
46+
1947
[[cypher-deprecations-additions-removals-2025.01]]
2048
== Neo4j 2025.01
2149

modules/ROOT/pages/functions/list.adoc

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -230,16 +230,23 @@ Three lists of numbers in the given ranges are returned.
230230

231231
.Details
232232
|===
233-
| *Syntax* 3+| `reduce(accumulator, variable)`
233+
| *Syntax* 3+| `reduce(accumulator = initial, variable IN list \| expression)`
234234
| *Description* 3+| Runs an expression against individual elements of a `LIST<ANY>`, storing the result of the expression in an accumulator.
235-
.3+| *Arguments* | *Name* | *Type* | *Description*
236-
| `accumulator` | `ANY` | A variable that holds the result as the list is iterated.
237-
| `variable` | `LIST<ANY>` | A variable that can be used within the reducing expression.
235+
.6+| *Arguments* | *Name* | *Type* | *Description*
236+
| `accumulator` | `ANY` | A variable that holds the result as the `list` is iterated.
237+
Starts with an `initial` value.
238+
| `initial` | `ANY` | The starting value of the `accumulator`.
239+
| `variable` | `ANY` | A variable that represents each element in the `list` during iteration.
240+
| `list` | `LIST<ANY>` | The `list` that is being iterated over.
241+
| `expression` | `ANY` | An expression that updates the `accumulator` with each iteration.
238242
| *Returns* 3+| `ANY`
239243
|===
240244

241-
This function is analogous to the `fold` or `reduce` method in functional languages such as Lisp and Scala.
242-
245+
.Considerations
246+
|===
247+
|`reduce()` differs from most Cypher functions because it iterates over a list, incrementally updating an accumulator with each element based on an expression, rather than returning a result from a single evaluation.
248+
As such, Cypher's `reduce()` is analogous to the `fold` or `reduce` methods in functional languages such as Lisp and Scala.
249+
|===
243250

244251
.+reduce()+
245252
======

modules/ROOT/pages/functions/predicate.adoc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ CREATE
5353

5454
.Considerations
5555
|===
56+
| `all()` differs from most Cypher functions because it iterates over a list, evaluating an expression for each element, rather than returning a result from a single evaluation.
5657
| `null` is returned if the `list` is `null` or if the `predicate` evaluates to `null` for at least one element and does not evaluate to false for any other element.
5758
| `all()` returns `true` if `list` is empty because there are no elements to falsify the `predicate`.
5859
|===
@@ -123,6 +124,7 @@ RETURN all(i in emptyList WHERE true) as allTrue, all(i in emptyList WHERE false
123124

124125
.Considerations
125126
|===
127+
| `any()` differs from most Cypher functions because it iterates over a list, evaluating an expression for each element, rather than returning a result from a single evaluation.
126128
| `null` is returned if the `list` is `null` or if the `predicate` evaluates to `null` for at least one element and does not evaluate to false for any other element.
127129
| `any()` returns `false` if `list` is empty because there are no elements to satisfy the `predicate`.
128130
|===
@@ -348,6 +350,7 @@ xref:syntax/operators.adoc#cypher-comparison[`IS NULL` or `IS NOT NULL`] should
348350

349351
.Considerations
350352
|===
353+
| `none()` differs from most Cypher functions because it iterates over a list, evaluating an expression for each element, rather than returning a result from a single evaluation.
351354
| `null` is returned if the `list` is `null`, or if the `predicate` evaluates to `null` for at least one element and does not evaluate to `true` for any other element.
352355
| `none()` returns `true` if `list` is empty because there are no elements to violate the `predicate`.
353356
|===
@@ -419,6 +422,7 @@ RETURN none(i IN emptyList WHERE true) as noneTrue, none(i IN emptyList WHERE fa
419422

420423
.Considerations
421424
|===
425+
| `single()` differs from most Cypher functions because it iterates over a list, evaluating an expression for each element, rather than returning a result from a single evaluation.
422426
| `null` is returned if the `list` is `null`, or if the `predicate` evaluates to `null` for at least one element and does not evaluate to `true` for any other element.
423427
| `single()` returns `false` if `list` is empty because there is not exactly one element satisfying the `predicate`.
424428
|===

modules/ROOT/pages/indexes/semantic-indexes/vector-indexes.adoc

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ Use xref:functions/vector.adoc[] to compute the similarity score between two spe
256256
[[performance]]
257257
== Performance suggestions
258258

259-
Vector indexes can take advantage of the incubated Java 20 Vector API for noticeable speed improvements.
259+
Vector indexes can take advantage of the incubated Java Vector API for noticeable speed improvements.
260260
If you are using a compatible version of Java, you can add the following setting to your link:{neo4j-docs-base-uri}/operations-manual/current/configuration/configuration-settings/#config_server.jvm.additional[configuration settings]:
261261

262262
.Configuration settings
@@ -265,6 +265,11 @@ If you are using a compatible version of Java, you can add the following setting
265265
server.jvm.additional=--add-modules=jdk.incubator.vector
266266
----
267267

268+
[NOTE]
269+
While the Neo4j 5 series requires at least Java 17, _at least_ Java 20 is necessary to take advantage of this performance improvement in Neo4j 5.14-5.26.
270+
If you are using Neo4j 2025.01 or later, Java 21 is required.
271+
For more information about what Java versions are supported by different Neo4j versions, see the link:{neo4j-docs-base-uri}/operations-manual/current/installation/requirements/#deployment-requirements-java[Operations Manual -> System requirements -> Java].
272+
268273
[[show-vector-indexes]]
269274
== Show vector indexes
270275

0 commit comments

Comments
 (0)