Skip to content

Commit 3920527

Browse files
Merge branch 'dev' into shortest_performance
2 parents 0e16555 + 219ff14 commit 3920527

File tree

6 files changed

+34
-15
lines changed

6 files changed

+34
-15
lines changed

modules/ROOT/pages/clauses/match.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -654,9 +654,9 @@ The table below outlines performance caveats for specific Neo4j versions.
654654
| 2025.08 -- current
655655
| The Cypher planner is able to leverage xref:indexes/search-performance-indexes/using-indexes.adoc#token-lookup-indexes[token lookup indexes] when matching node labels and relationship types dynamically.
656656
This is enabled by the introduction of three new query plan operators:
657-
xref:planning-and-tuning/operators/operators-detail.adoc#query-plan-dynamic-node-label-lookup[`DynamicNodeLabelLookup`], xref:planning-and-tuning/operators/operators-detail.adoc#query-plan-dynamic-directed-relationship-type-lookup[`DynamicDirectedRelationshipTypeLookup`], and xref:planning-and-tuning/operators/operators-detail.adoc#query-plan-dynamic-undirected-relationship-type-lookup[`DynamicUndirectedRelationshipTypeLookup`].
657+
xref:planning-and-tuning/operators/operators-detail.adoc#query-plan-dynamic-label-node-lookup[`DynamicLabelNodeLookup`], xref:planning-and-tuning/operators/operators-detail.adoc#query-plan-dynamic-directed-relationship-type-lookup[`DynamicDirectedRelationshipTypeLookup`], and xref:planning-and-tuning/operators/operators-detail.adoc#query-plan-dynamic-undirected-relationship-type-lookup[`DynamicUndirectedRelationshipTypeLookup`].
658658
It is not, however, able to use indexes on property values.
659-
For example, `MATCH (n:$(Label) {foo: bar})` will not use any indexes on `n.foo` but can use a `DynamicNodeLabelLookup` on `$(label)`.
659+
For example, `MATCH (n:$(Label) {foo: bar})` will not use any indexes on `n.foo` but can use a `DynamicLabelNodeLookup` on `$(label)`.
660660

661661
|===
662662

modules/ROOT/pages/clauses/merge.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -755,8 +755,8 @@ The table below outlines performance caveats for specific Neo4j versions.
755755
| 2025.08 -- current
756756
| The Cypher planner is able to leverage xref:indexes/search-performance-indexes/using-indexes.adoc#token-lookup-indexes[token lookup indexes] when matching node labels and relationship types dynamically.
757757
This is enabled by the introduction of three new query plan operators:
758-
xref:planning-and-tuning/operators/operators-detail.adoc#query-plan-dynamic-node-label-lookup[`DynamicNodeLabelLookup`], xref:planning-and-tuning/operators/operators-detail.adoc#query-plan-dynamic-directed-relationship-type-lookup[`DynamicDirectedRelationshipTypeLookup`], and xref:planning-and-tuning/operators/operators-detail.adoc#query-plan-dynamic-undirected-relationship-type-lookup[`DynamicUndirectedRelationshipTypeLookup`].
758+
xref:planning-and-tuning/operators/operators-detail.adoc#query-plan-dynamic-label-node-lookup[`DynamicLabelNodeLookup`], xref:planning-and-tuning/operators/operators-detail.adoc#query-plan-dynamic-directed-relationship-type-lookup[`DynamicDirectedRelationshipTypeLookup`], and xref:planning-and-tuning/operators/operators-detail.adoc#query-plan-dynamic-undirected-relationship-type-lookup[`DynamicUndirectedRelationshipTypeLookup`].
759759
It is not, however, able to use indexes on property values.
760-
For example, `MERGE (n:$(Label) {foo: bar})` will not use any indexes on `n.foo` but can use a `DynamicNodeLabelLookup` on `$(label)`.
760+
For example, `MERGE (n:$(Label) {foo: bar})` will not use any indexes on `n.foo` but can use a `DynamicLabelNodeLookup` on `$(label)`.
761761

762762
|===

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ RETURN people.name
4444
----
4545

4646
| Cypher can now leverage xref:indexes/search-performance-indexes/using-indexes.adoc#token-lookup-indexes[token lookup indexes] when planning queries with xref:clauses/match.adoc#dynamic-match[dynamic labels and relationship types].
47-
This is enabled by the introduction of three new query plan operators: xref:planning-and-tuning/operators/operators-detail.adoc#query-plan-dynamic-node-label-lookup[`DynamicNodeLabelLookup`], xref:planning-and-tuning/operators/operators-detail.adoc#query-plan-dynamic-directed-relationship-type-lookup[`DynamicDirectedRelationshipTypeLookup`], and xref:planning-and-tuning/operators/operators-detail.adoc#query-plan-dynamic-undirected-relationship-type-lookup[`DynamicUndirectedRelationshipTypeLookup`].
47+
This is enabled by the introduction of three new query plan operators: xref:planning-and-tuning/operators/operators-detail.adoc#query-plan-dynamic-label-node-lookup[`DynamicLabelNodeLookup`], xref:planning-and-tuning/operators/operators-detail.adoc#query-plan-dynamic-directed-relationship-type-lookup[`DynamicDirectedRelationshipTypeLookup`], and xref:planning-and-tuning/operators/operators-detail.adoc#query-plan-dynamic-undirected-relationship-type-lookup[`DynamicUndirectedRelationshipTypeLookup`].
4848
|===
4949

5050
=== New in Cypher 25

modules/ROOT/pages/genai-integrations.adoc

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -92,12 +92,12 @@ The embeddings are stored as properties on nodes or relationships with the type
9292
====
9393
9494
.Create an embedding property for the Godfather
95-
[source,cypher,role=test-skip]
95+
[source,cypher]
9696
----
9797
MATCH (m:Movie {title:'Godfather, The'})
9898
WHERE m.plot IS NOT NULL AND m.title IS NOT NULL
9999
WITH m, m.title || ' ' || m.plot AS titleAndPlot // <1>
100-
WITH m, genai.vector.encode(titleAndPlot, 'OpenAI', { token: $token }) AS propertyVector // <2>
100+
WITH m, genai.vector.encode(titleAndPlot, 'OpenAI', { token: $openaiToken }) AS propertyVector // <2>
101101
CALL db.create.setNodeVectorProperty(m, 'embedding', propertyVector) // <3>
102102
RETURN m.embedding AS embedding
103103
----
@@ -155,14 +155,14 @@ Each returned row contains the following columns:
155155
.Create embeddings from a limited number of properties and store them
156156
====
157157
158-
[source, cypher, role=test-skip]
158+
[source, cypher]
159159
----
160160
MATCH (m:Movie WHERE m.plot IS NOT NULL)
161161
WITH m
162162
LIMIT 20
163163
WITH collect(m) AS moviesList // <1>
164164
WITH moviesList, [movie IN moviesList | movie.title || ': ' || movie.plot] AS batch // <2>
165-
CALL genai.vector.encodeBatch(batch, 'OpenAI', { token: $token }) YIELD index, vector
165+
CALL genai.vector.encodeBatch(batch, 'OpenAI', { token: $openaiToken }) YIELD index, vector
166166
WITH moviesList, index, vector
167167
CALL db.create.setNodeVectorProperty(moviesList[index], 'embedding', vector) // <3>
168168
----
@@ -174,7 +174,7 @@ CALL db.create.setNodeVectorProperty(moviesList[index], 'embedding', vector) //
174174

175175
.Create embeddings from a large number of properties and store them
176176
====
177-
[source, cypher, role=test-skip]
177+
[source, cypher]
178178
----
179179
MATCH (m:Movie WHERE m.plot IS NOT NULL)
180180
WITH collect(m) AS moviesList, // <1>
@@ -183,9 +183,9 @@ WITH collect(m) AS moviesList, // <1>
183183
UNWIND range(0, total-1, batchSize) AS batchStart // <3>
184184
CALL (moviesList, batchStart, batchSize) { // <4>
185185
WITH [movie IN moviesList[batchStart .. batchStart + batchSize] | movie.title || ': ' || movie.plot] AS batch // <5>
186-
CALL genai.vector.encodeBatch(batch, 'OpenAI', { token: $token }) YIELD index, vector
186+
CALL genai.vector.encodeBatch(batch, 'OpenAI', { token: $openaiToken }) YIELD index, vector
187187
CALL db.create.setNodeVectorProperty(moviesList[batchStart + index], 'embedding', vector) // <6>
188-
} IN CONCURRENT TRANSACTIONS OF 1 ROW <7>
188+
} IN CONCURRENT TRANSACTIONS OF 1 ROW // <7>
189189
----
190190
191191
<1> xref:functions/aggregating.adoc#functions-collect[Collect] all returned `Movie` nodes into a `LIST<NODE>`.

modules/ROOT/pages/planning-and-tuning/operators/index.adoc

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,25 @@ Restricts the xref:planning-and-tuning/runtimes/index.adoc[Cypher runtime] to no
212212
| label:yes[]
213213
|
214214

215+
| xref:planning-and-tuning/operators/operators-detail.adoc#query-plan-dynamic-label-node-lookup[DynamicLabelNodeLookup]
216+
| Allows Cypher to use token lookup indexes when planning queries using dynamic node labels.
217+
| label:yes[]
218+
|
219+
| label:new[Introduced in Neo4j 2025.08]
220+
221+
222+
| xref:planning-and-tuning/operators/operators-detail.adoc#query-plan-dynamic-directed-relationship-type-lookup[DynamicDirectedRelationshipTypeLookup]
223+
| Allows Cypher to use token lookup indexes when planning queries using dynamic relationship types in directed relationship patterns.
224+
| label:yes[]
225+
|
226+
| label:new[Introduced in Neo4j 2025.08]
227+
228+
| xref:planning-and-tuning/operators/operators-detail.adoc#query-plan-dynamic-undirected-relationship-type-lookup[DynamicUndirectedRelationshipTypeLookup]
229+
| Allows Cypher to use token lookup indexes when planning queries using dynamic relationship types in undirected relationship patterns.
230+
| label:yes[]
231+
|
232+
| label:new[Introduced in Neo4j 2025.08]
233+
215234
| xref::planning-and-tuning/operators/operators-detail.adoc#query-plan-eager[Eager]
216235
| For isolation purposes, `Eager` ensures that operations affecting subsequent operations are executed fully for the whole dataset before continuing execution.
217236
|

modules/ROOT/pages/planning-and-tuning/operators/operators-detail.adoc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2577,12 +2577,12 @@ Total database accesses: 106
25772577
======
25782578

25792579
[role=label--new-2025.08]
2580-
[[query-plan-dynamic-node-label-lookup]]
2581-
=== Dynamic Node Label Lookup
2580+
[[query-plan-dynamic-label-node-lookup]]
2581+
=== Dynamic Label Node Lookup
25822582

25832583
Allows Cypher to use xref:indexes/search-performance-indexes/using-indexes.adoc#token-lookup-indexes[token lookup indexes] when planning queries using xref:clauses/match.adoc#dynamic-match[dynamic node labels].
25842584

2585-
.DynamicNodeLabelLookup
2585+
.DynamicLabelNodeLookup
25862586
======
25872587
25882588
.Query

0 commit comments

Comments
 (0)