Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,58 +7,79 @@ Cypher is a language that is constantly evolving.
New features get added to the language continuously, and occasionally, some features become deprecated and are subsequently removed.
--

* <<cypher-deprecations-additions-removals, Removals, deprecations, additions and extensions>>
** <<cypher-deprecations-additions-removals-3.0, Version 3.0>>
** <<cypher-deprecations-additions-removals-3.1, Version 3.1>>
** <<cypher-deprecations-additions-removals-3.2, Version 3.2>>
** <<cypher-deprecations-additions-removals-3.3, Version 3.3>>
** <<cypher-deprecations-additions-removals-3.4, Version 3.4>>
* <<cypher-compatibility, Compatibility>>
* <<cypher-versions, Supported language versions>>
This section list all of the features that have been removed, deprecated, added, or extended in different Cypher versions.
Replacement syntax for deprecated and removed features are also indicated.


[[cypher-deprecations-additions-removals]]
== Removals, deprecations, additions and extensions
[[cypher-deprecations-additions-removals-3.5]]
== Version 3.5

The following tables lists all the features which have been removed, deprecated, added or extended in Cypher.
Replacement syntax for deprecated and removed features are also indicated.
=== Deprecated features

[cols="2", options="header"]
|===
| Feature
| Details

a|
label:functionality[]
label:deprecated[] +
Compiled runtime:
[source, cypher, role="noheader"]
----
CYPHER runtime=compiled
----
a|
The compiled runtime will be discontinued in the next major release. It might still be used for default queries in order to not cause regressions, but explicitly requesting it will not be possible.

[[cypher-deprecations-additions-removals-3.0]]
=== Version 3.0
a|
label:function[]
label:deprecated[]
[source, cypher, role="noheader"]
----
extract()
----
a|
Replaced by <<cypher-list-comprehension,list comprehension>>.

a|
label:function[]
label:deprecated[]
[source, cypher, role="noheader"]
----
filter()
----
a|
Replaced by <<cypher-list-comprehension,list comprehension>>.
|===

[[cypher-deprecations-additions-removals-3.4]]
=== Version 3.4
[options="header"]
|===
| Feature | Type | Change | Details
| `has()` | Function | Removed | Replaced by <<functions-exists, exists()>>
| `str()` | Function | Removed | Replaced by <<functions-tostring, toString()>>
| `+{parameter}+` | Syntax | Deprecated | Replaced by <<cypher-parameters, $parameter>>
| <<functions-properties, properties()>> | Function | Added |
| <<query-call,CALL [\...YIELD]>> | Clause | Added |
| <<functions-point-cartesian-2d,point() - Cartesian 2D>> | Function | Added |
| <<functions-point-wgs84-2d,point() - WGS 84 2D>> | Function | Added |
| <<functions-distance,distance()>> | Function | Added |
| <<java-reference#extending-neo4j-procedures, User-defined procedures>> | Functionality | Added |
| <<functions-tostring, toString()>> | Function | Extended | Now also allows Boolean values as input
| <<cypher-spatial, Spatial point types>> | Functionality | Amendment | A point -- irrespective of which Coordinate Reference System is used -- can be stored as a property and is able to be backed by an index. Prior to this, a point was a virtual property only.
| <<functions-point-cartesian-3d, point() - Cartesian 3D>> | Function | Added |
| <<functions-point-wgs84-3d, point() - WGS 84 3D>> | Function | Added |
| <<functions-randomuuid, randomUUID()>> | Function | Added |
| <<cypher-temporal, Temporal types>> | Functionality | Added | Supports storing, indexing and working with the following temporal types: Date, Time, LocalTime, DateTime, LocalDateTime and Duration.
| <<query-functions-temporal, Temporal functions>> | Functionality | Added | Functions allowing for the creation and manipulation of values for each temporal type -- _Date_, _Time_, _LocalTime_, _DateTime_, _LocalDateTime_ and _Duration_.
| <<query-operators-temporal, Temporal operators>> | Functionality | Added | Operators allowing for the manipulation of values for each temporal type -- _Date_, _Time_, _LocalTime_, _DateTime_, _LocalDateTime_ and _Duration_.
| <<functions-tostring, toString()>> | Function | Extended | Now also allows temporal values as input (i.e. values of type _Date_, _Time_, _LocalTime_, _DateTime_, _LocalDateTime_ or _Duration_).
|===


[[cypher-deprecations-additions-removals-3.1]]
=== Version 3.1
[[cypher-deprecations-additions-removals-3.3]]
=== Version 3.3
[options="header"]
|===
| Feature | Type | Change | Details
| `rels()` | Function | Deprecated | Replaced by <<functions-relationships, relationships()>>
| `toInt()` | Function | Deprecated | Replaced by <<functions-tointeger, toInteger()>>
| `lower()` | Function | Deprecated | Replaced by <<functions-tolower, toLower()>>
| `upper()` | Function | Deprecated | Replaced by <<functions-toupper, toUpper()>>
| <<functions-toboolean,toBoolean()>> | Function | Added |
| <<cypher-map-projection, Map projection>> | Syntax | Added |
| <<cypher-pattern-comprehension, Pattern comprehension>> | Syntax | Added |
| <<java-reference#extending-neo4j-functions, User-defined functions>> | Functionality | Added |
| <<query-call, CALL\...YIELD\...WHERE>> | Clause | Extended | Records returned by `YIELD` may be filtered further using `WHERE`
| `START` | Clause | Removed | As in Cypher 3.2, any queries using the `START` clause will revert back to Cypher 3.1 `planner=rule`.
However, there are <<explicit-indexes-procedures, built-in procedures>> for accessing explicit indexes that will enable users to use the current version of Cypher and the cost planner together with these indexes.
An example of this is `CALL db.index.explicit.searchNodes('my_index','email:me*')`.
| `CYPHER runtime=slotted` (Faster interpreted runtime) | Functionality | Added | Neo4j Enterprise Edition only
| <<functions-max, max()>>, <<functions-min, min()>> | Function | Extended | Now also supports aggregation over sets containing lists of strings and/or numbers, as well as over sets containing strings, numbers, and lists of strings and/or numbers
|===


[[cypher-deprecations-additions-removals-3.2]]
=== Version 3.2
[options="header"]
Expand All @@ -79,42 +100,38 @@ Replacement syntax for deprecated and removed features are also indicated.
| <<functions-max, max()>>, <<functions-min, min()>> | Function | Extended | Now also supports aggregation over a set containing both strings and numbers
|===


[[cypher-deprecations-additions-removals-3.3]]
=== Version 3.3
[[cypher-deprecations-additions-removals-3.1]]
=== Version 3.1
[options="header"]
|===
| Feature | Type | Change | Details
| `START` | Clause | Removed | As in Cypher 3.2, any queries using the `START` clause will revert back to Cypher 3.1 `planner=rule`.
However, there are <<explicit-indexes-procedures, built-in procedures>> for accessing explicit indexes that will enable users to use the current version of Cypher and the cost planner together with these indexes.
An example of this is `CALL db.index.explicit.searchNodes('my_index','email:me*')`.
| `CYPHER runtime=slotted` (Faster interpreted runtime) | Functionality | Added | Neo4j Enterprise Edition only
| <<functions-max, max()>>, <<functions-min, min()>> | Function | Extended | Now also supports aggregation over sets containing lists of strings and/or numbers, as well as over sets containing strings, numbers, and lists of strings and/or numbers
| `rels()` | Function | Deprecated | Replaced by <<functions-relationships, relationships()>>
| `toInt()` | Function | Deprecated | Replaced by <<functions-tointeger, toInteger()>>
| `lower()` | Function | Deprecated | Replaced by <<functions-tolower, toLower()>>
| `upper()` | Function | Deprecated | Replaced by <<functions-toupper, toUpper()>>
| <<functions-toboolean,toBoolean()>> | Function | Added |
| <<cypher-map-projection, Map projection>> | Syntax | Added |
| <<cypher-pattern-comprehension, Pattern comprehension>> | Syntax | Added |
| <<java-reference#extending-neo4j-functions, User-defined functions>> | Functionality | Added |
| <<query-call, CALL\...YIELD\...WHERE>> | Clause | Extended | Records returned by `YIELD` may be filtered further using `WHERE`
|===

[[cypher-deprecations-additions-removals-3.4]]
=== Version 3.4
[options="header"]
|===
| Feature | Type | Change | Details
| <<cypher-spatial, Spatial point types>> | Functionality | Amendment | A point -- irrespective of which Coordinate Reference System is used -- can be stored as a property and is able to be backed by an index. Prior to this, a point was a virtual property only.
| <<functions-point-cartesian-3d, point() - Cartesian 3D>> | Function | Added |
| <<functions-point-wgs84-3d, point() - WGS 84 3D>> | Function | Added |
| <<functions-randomuuid, randomUUID()>> | Function | Added |
| <<cypher-temporal, Temporal types>> | Functionality | Added | Supports storing, indexing and working with the following temporal types: Date, Time, LocalTime, DateTime, LocalDateTime and Duration.
| <<query-functions-temporal, Temporal functions>> | Functionality | Added | Functions allowing for the creation and manipulation of values for each temporal type -- _Date_, _Time_, _LocalTime_, _DateTime_, _LocalDateTime_ and _Duration_.
| <<query-operators-temporal, Temporal operators>> | Functionality | Added | Operators allowing for the manipulation of values for each temporal type -- _Date_, _Time_, _LocalTime_, _DateTime_, _LocalDateTime_ and _Duration_.
| <<functions-tostring, toString()>> | Function | Extended | Now also allows temporal values as input (i.e. values of type _Date_, _Time_, _LocalTime_, _DateTime_, _LocalDateTime_ or _Duration_).
|===
[[cypher-deprecations-additions-removals-3.0]]
=== Version 3.0

[[cypher-deprecations-additions-removals-3.5]]
=== Version 3.5
[options="header"]
|===
| Feature | Type | Change | Details
| `CYPHER runtime=compiled` (Compiled runtime) | Functionality | Deprecated | The compiled runtime will be discontinued in the next major release. It might still be used for default queries in order to not cause regressions, but explicitly requesting it will not be possible.
| `extract()` | Function | Deprecated | Replaced by <<cypher-list-comprehension, list comprehension>>
| `filter()` | Function | Deprecated | Replaced by <<cypher-list-comprehension, list comprehension>>
| `has()` | Function | Removed | Replaced by <<functions-exists, exists()>>
| `str()` | Function | Removed | Replaced by <<functions-tostring, toString()>>
| `+{parameter}+` | Syntax | Deprecated | Replaced by <<cypher-parameters, $parameter>>
| <<functions-properties, properties()>> | Function | Added |
| <<query-call,CALL [\...YIELD]>> | Clause | Added |
| <<functions-point-cartesian-2d,point() - Cartesian 2D>> | Function | Added |
| <<functions-point-wgs84-2d,point() - WGS 84 2D>> | Function | Added |
| <<functions-distance,distance()>> | Function | Added |
| <<java-reference#extending-neo4j-procedures, User-defined procedures>> | Functionality | Added |
| <<functions-tostring, toString()>> | Function | Extended | Now also allows Boolean values as input
|===

[[cypher-compatibility]]
Expand Down