Skip to content

Commit afc004e

Browse files
authored
Merge branch 'cypher-25' into imagesrefresh
2 parents 70fc0e7 + 4f20911 commit afc004e

38 files changed

+228
-79
lines changed

modules/ROOT/pages/appendix/gql-conformance/additional-cypher.adoc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,10 @@ Either the pattern already exists, or it needs to be created.
7272
| xref:expressions/list-expressions.adoc#list-comprehension[List comprehension]
7373
| Syntactic construct for creating a `LIST` based on existing lists.
7474

75-
| xref:values-and-types/maps.adoc#cypher-map-comprehension[Map projection]
75+
| xref:expressions/map-expressions.adoc#map-projection[Map projection]
7676
| Constructs `MAP` projections from nodes, relationships, and other `MAP` values.
7777

78-
| xref:values-and-types/lists.adoc#cypher-pattern-comprehension[Pattern comprehension]
78+
| xref:expressions/list-expressions.adoc#pattern-comprehension[Pattern comprehension]
7979
| Syntactic construct for creating a `LIST` based on matchings of a pattern.
8080
|===
8181

@@ -389,12 +389,12 @@ It is only supported in the xref:clauses/use.adoc[`USE`] clause.
389389
| xref:functions/spatial.adoc#functions-point[`point()`]
390390
| Returns a 2D or 3D point object, given two or respectively three coordinate values in the Cartesian coordinate system or WGS 84 geographic coordinate system.
391391

392-
| xref:functions/spatial.adoc#functions-point-distance[`point.distance()`]
392+
| xref:functions/spatial.adoc#functions-distance[`point.distance()`]
393393
| Returns a `FLOAT` representing the distance between any two points in the same CRS.
394394
If the points are in the WGS 84 CRS, the function returns the geodesic distance (i.e., the shortest path along the curved surface of the Earth).
395395
If the points are in a Cartesian CRS, the function returns the Euclidean distance (i.e., the shortest straight-line distance in a flat, planar space).
396396

397-
| xref:functions/spatial.adoc#functions-point-withinBBox[`point.withinBBox()`]
397+
| xref:functions/spatial.adoc#functions-withinBBox[`point.withinBBox()`]
398398
| Returns true if the provided point is within the bounding box defined by the two provided points.
399399

400400
|===

modules/ROOT/pages/appendix/gql-conformance/index.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
:description: Overview of Cypher's conformance to GQL.
22
= GQL conformance
33

4-
*Last updated*: 4 March 2025 +
4+
*Last updated*: 2 June 2025 +
55
*Neo4j version*: 2025.06
66

77
GQL is the new link:https://www.iso.org/home.html[ISO] International Standard query language for graph databases.
@@ -47,4 +47,4 @@ For more information, see xref:syntax/parsing.adoc#_using_unicodes_in_cypher[Par
4747
* Cypher supports the following mandatory GQL property types: `BOOLEAN` (`BOOL`), `FLOAT` footnote:[The `FLOAT` type in Cypher always represents a 64-bit double-precision floating point number.], `INTEGER` (`SIGNED INTEGER`, or `INT`)footnote:[The `INTEGER` type in Cypher always represents a 64-bit `INTEGER`.], and `STRING` (`VARCHAR`).
4848
+
4949
Cypher also supports the following optional GQL property types: `DATE`, `DURATION`, `LIST<INNER_TYPE NOT NULL>` (`ARRAY<INNER_TYPE NOT NULL>`, `INNER_TYPE LIST`, or `INNER_TYPE ARRAY`)footnote:[The `INNER_TYPE` cannot be a `LIST` type.], `LOCAL DATETIME` (`TIMESTAMP WITHOUT TIME ZONE`), `LOCAL TIME` (`TIME WITHOUT TIME ZONE`), `POINT`, `ZONED DATETIME` (`TIME WITH TIME ZONE`), and `ZONED TIME` (`TIMESTAMP WITH TIME ZONE`).
50-
For more information, see xref:values-and-types/property-structural-constructed.adoc#_property_types[Values and types -> property types].
50+
For more information, see xref:values-and-types/property-structural-constructed.adoc#property-types[Values and types -> property types].

modules/ROOT/pages/appendix/gql-conformance/supported-mandatory.adoc

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,24 @@ The below table is instead listed in order of their appearance in the link:https
1111
| Documentation
1212
| Comment
1313

14+
| 4.9.2
15+
| GQL-status objects
16+
| link:https://neo4j.com/docs/status-codes/current/[Status Codes for Errors & Notifications]
17+
| Neo4j exposes successful execution results, errors, exceptions, and warnings as GQL-status objects.
18+
1419
| 4.11
1520
| Graph pattern matching
1621
| xref:patterns/index.adoc[]
1722
|
1823

1924
| 4.13
2025
| GQL object types
21-
| xref:values-and-types/property-structural-constructed.adoc#structural-types[Structural types], xref:values-and-types/property-structural-constructed.adoc#type-synonyms[Types and their synonyms].
26+
| xref:values-and-types/property-structural-constructed.adoc#structural-types[Structural types], xref:values-and-types/property-structural-constructed.adoc#types-synonyms[Types and their synonyms].
2227
| Includes: `NODE` (`ANY NODE`, `VERTEX`, `ANY VERTEX`) and `RELATIONSHIP` (`ANY RELATIONSHIP`, `EDGE`, `ANY EDGE`).
2328

2429
| 4.16
2530
| Predefined value types
26-
| xref:values-and-types/property-structural-constructed.adoc#property-types[Property types], xref:values-and-types/property-structural-constructed.adoc#type-synonyms[Types and their synonyms].
31+
| xref:values-and-types/property-structural-constructed.adoc#property-types[Property types], xref:values-and-types/property-structural-constructed.adoc#types-synonyms[Types and their synonyms].
2732
| Includes: `BOOLEAN` (`BOOL`), `FLOAT`, `INTEGER` (`SIGNED INTEGER`, `INT`), and `STRING` (`VARCHAR`).
2833

2934
Cypher supports the boolean type predicate for `true`, `false`, and `null` but does not support the GQL keyword `UNKNOWN`.
@@ -122,7 +127,7 @@ The only way to guarantee row order in Neo4j is to use xref:clauses/order-by.ado
122127

123128
| 16.17
124129
| <sort specification list>
125-
| xref:clauses/order-by.adoc#order-nodes-in-descending-order[Order results in ascending or descending order]
130+
| xref:clauses/order-by.adoc#ascending-descending-order[Ascending and descending order]
126131
|
127132

128133
| 16.19
@@ -137,7 +142,7 @@ The only way to guarantee row order in Neo4j is to use xref:clauses/order-by.ado
137142

138143
| 19.4
139144
| <exists predicate>
140-
| xref:functions/predicate.adoc#function-exists[`exists()`]
145+
| xref:functions/predicate.adoc#functions-exists[`exists()`]
141146
|
142147

143148
| 19.5
@@ -173,7 +178,7 @@ In Cypher, current user details can be seen using the link:{neo4j-docs-base-uri}
173178

174179
| 20.9
175180
| <aggregate function>
176-
| xref:functions/aggregating.adoc#functions-avg[`avg()`], xref:functions/aggregating.adoc#functions-count[`count()`], xref:functions/aggregating.adoc#functions-max[`max`], xref:functions/aggregating.adoc#functions-mind[`min()`], xref:functions/aggregating.adoc#functions-sum[`sum()`]
181+
| xref:functions/aggregating.adoc#functions-avg[`avg()`], xref:functions/aggregating.adoc#functions-count[`count()`], xref:functions/aggregating.adoc#functions-max[`max`], xref:functions/aggregating.adoc#functions-min[`min()`], xref:functions/aggregating.adoc#functions-sum[`sum()`]
177182
| Cypher and GQL handle `null` values differently for the `sum()` function when queries return 0 rows.
178183
For example, `RETURN sum(<expr>)` on an empty table returns `null` in GQL, but in Cypher it returns `0`.
179184

modules/ROOT/pages/appendix/gql-conformance/unsupported-mandatory.adoc

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,6 @@ The below table is instead listed in order of their appearance in the link:https
1414
| Description
1515
| Comment and similar Neo4j functionality
1616

17-
| 4.9.2
18-
| GQL-status objects
19-
| Exposing successful execution results, errors, exceptions, and warnings as GQL-status objects.
20-
2117
| 7.1-7.3
2218
| Session management
2319
| GQL defines the following session commands: `SESSION SET`, `SESSION RESET`, and `SESSION CLOSE`.

modules/ROOT/pages/clauses/clause-composition.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -974,7 +974,7 @@ materialize the table of intermediate results before executing the next clause.
974974
This approach would consume a lot of memory for materializing the tables of intermediate results and would generally not perform well.
975975

976976
Instead, Cypher will in general try to interleave the execution of clauses.
977-
This is called xref::planning-and-tuning/execution-plans.adoc#laze-eager-evaluation[lazy evaluation].
977+
This is called xref::planning-and-tuning/execution-plans.adoc#lazy-eager-evaluation[lazy evaluation].
978978
It only materializes intermediate results when needed.
979979
In many read-write queries it is unproblematic to execute clauses interleaved, but when it is not,
980980
Cypher must ensure that the table of intermediate results gets materialized at the right time(s).

modules/ROOT/pages/clauses/filter.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ Because `WHERE` is a subclause qualifying a described pattern, it can be used in
202202
----
203203
WITH 35 AS minAge
204204
MATCH (a:Person WHERE a.name = 'Andy')-[:KNOWS]->(b:Person WHERE b.age > minAge)
205-
RETURN b.name AS name`
205+
RETURN b.name AS name
206206
----
207207
.Result
208208
[role="queryresult",options="header,footer",cols="1*<m"]

modules/ROOT/pages/clauses/index.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ These comprise clauses to create, show, and drop indexes and constraints.
275275
|===
276276
| Clause | Description
277277

278-
m| xref:indexes/search-performance-indexes/managing-indexes.adoc#indexes-syntax[CREATE \| SHOW \| DROP INDEX]
278+
m| xref:indexes/syntax.adoc[CREATE \| SHOW \| DROP INDEX]
279279
| Create, show or drop an index.
280280

281281
m| xref::constraints/syntax.adoc[CREATE \| SHOW \| DROP CONSTRAINT]

modules/ROOT/pages/clauses/let.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ ORDER BY price
216216
| "Chocolate" | 5 | TRUE | 'Budget'
217217
| "Coffee" | 10 | TRUE | 'Budget'
218218
| "Headphones" | 250 | TRUE | 'Budget'
219-
| "Phone" | 600 | FALSE | 'High-end'
219+
| "Phone" | 500 | FALSE | 'High-end'
220220
| "Laptop" | 1000 | FALSE | 'High-end'
221221
222222
4+d|Rows: 5

modules/ROOT/pages/clauses/match.adoc

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ For a list of all label expressions supported by Cypher, see xref:patterns/refer
147147

148148
The `MATCH` clause allows you to specify relationship patterns of varying complexity to retrieve from a graph.
149149
Unlike a node pattern, a relationship pattern cannot be used in a `MATCH` clause without node patterns at both ends.
150-
For more information about relationship patterns, see xref:patterns/fixed-length-patterns#relationship patterns[Patterns -> Relationship patterns].
150+
For more information about relationship patterns, see xref:patterns/fixed-length-patterns#relationship-patterns[Patterns -> Relationship patterns].
151151

152152
[NOTE]
153153
Relationships will only be matched once inside a single pattern.
@@ -643,3 +643,7 @@ This is because the xref:planning-and-tuning/execution-plans.adoc[Cypher planner
643643

644644
As a result, `MATCH` queries using dynamic values cannot leverage xref:planning-and-tuning/operators/operators-detail.adoc#leaf-operators[index scans or seeks] and must instead use the xref:planning-and-tuning/operators/operators-detail.adoc#query-plan-all-nodes-scan[`AllNodesScan`] operator, which reads all nodes from the node store and is therefore more costly.
645645

646+
[[further-reading]]
647+
=== Further reading
648+
649+
link:https://medium.com/neo4j/cypher-dynamism-a-step-toward-simpler-and-more-secure-queries-70fab8a815b2[Neo4j Developer Blog: Cypher Dynamism: A Step Toward Simpler and More Secure Queries]

modules/ROOT/pages/clauses/merge.adoc

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -375,20 +375,21 @@ Cannot merge the following relationship because of null property value for 'sinc
375375

376376
[NOTE]
377377
====
378-
As of Neo4j 5.20, specifying a property of an entity (node or relationship) by referring to the property of another entity in the same `MERGE` clause is deprecated.
378+
Specifying a property of an entity (node or relationship) by referring to the property of another entity within the same `MERGE` clause is not allowed.
379379
380-
For example, referring to `charlie.bornIn` in the property definition of `oliver.bornIn` is deprecated.
380+
For example, referring to `charlie.bornIn` in the property definition of `oliver.bornIn` is not allowed.
381381
382382
.Query
383-
[source, cypher]
383+
[source, cypher, role=test-fail]
384384
----
385385
MERGE (charlie:Person {name: 'Charlie Sheen', bornIn: 'New York'})-[:ACTED_IN]->(movie:Movie)<-[:DIRECTED]-(oliver:Person {name: 'Oliver Stone', bornIn: charlie.bornIn})
386386
RETURN movie
387387
----
388388
389-
[source, deprecation]
389+
.Error message
390+
[source, error]
390391
----
391-
Merging an entity (charlie) and referencing that entity in a property definition in the same MERGE is deprecated.
392+
The Node variable 'charlie' is referencing a Node that is created in the same MERGE clause which is not allowed. Please only reference variables created in earlier clauses
392393
----
393394
====
394395

@@ -422,7 +423,7 @@ Instead, a new `Movie` node is created.
422423
=== Merge on an undirected relationship
423424

424425
`MERGE` can also be used without specifying the direction of a relationship.
425-
Cypher will first try to xref:clauses/match.adoc#_match_on_an_undirected_relationship[match the relationship in both directions].
426+
Cypher will first try to match the relationship in both directions.
426427
If the relationship does not exist in either direction, it will create one left to right.
427428

428429
.Query

0 commit comments

Comments
 (0)