Deprecations, additions and compatibility
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.
Version 4.3
Deprecated features
Feature | Details |
---|---|
Syntax Deprecated
|
Replaced by:
|
Syntax Deprecated
|
Replaced by:
|
Syntax Deprecated
|
Replaced by:
|
Syntax Deprecated
|
Replaced by:
|
Syntax
Deprecated |
Replaced by default output columns. |
Syntax
Deprecated |
Replaced by:
|
Syntax Deprecated
|
Replaced by:
Still allows |
Syntax Deprecated
|
Replaced by:
Still allows |
Syntax Deprecated
|
Replaced by:
Still allows |
Syntax
Deprecated
|
Replaced by:
|
Syntax
Deprecated
|
Replaced by:
|
Syntax Deprecated
|
Pattern expressions producing lists of paths are deprecated, but they can still be used as existence predicates, for example in
|
Updated features
Feature | Details |
---|---|
Functionality Updated
|
Now allows filtering for:
|
Functionality Updated
|
Now allows filtering for:
|
Functionality Updated
|
Now allows |
Functionality Updated
|
Now allows |
Syntax Updated
|
New syntax for filtering |
Syntax Updated
|
New syntax for filtering |
Syntax Updated
|
New syntax for filtering |
Functionality Updated
|
Now allows easy filtering for |
Functionality Updated
|
Now allows easy filtering for |
New features
Feature | Details |
---|---|
Syntax New
|
New syntax to pass options to |
Syntax New
|
New syntax for creating node property existence constraints. |
Syntax New
|
New syntax for creating relationship property existence constraints. |
Syntax New
|
Makes altering users idempotent. If the specified name does not exists, no error is thrown. |
Syntax New
|
Now allows setting home database for user. |
Syntax New
|
Now allows removing home database for user. |
Syntax New
|
|
Syntax New
|
New syntax for showing the home database of the current user. |
Syntax
New
|
New Cypher command for administering privilege for changing users home database. |
Syntax
New
|
New syntax for privileges affecting home database. |
Syntax
New
|
New syntax for privileges affecting home graph. |
Syntax New
|
Allows creating fulltext indexes on nodes or relationships. They can be dropped by using their name. |
Functionality New
|
Allows creating indexes on relationships with a particular relationship type and property combination. They can be dropped by using their name. |
Functionality New
|
Create token lookup index for nodes with any labels or relationships with any relationship type. They can be dropped by using their name. |
Functionality New
|
New Cypher command for changing the name of a role. |
Functionality New
|
New Cypher command for changing the name of a user. |
Functionality New
|
New Cypher commands for listing procedures. |
Functionality New
|
New Cypher commands for listing functions. |
Version 4.2
Deprecated features
Feature | Details |
---|---|
Syntax Deprecated
|
Replaced by |
Syntax Deprecated
|
Only |
Syntax Deprecated
|
Unaliased expressions are deprecated in subquery
|
Updated features
Feature | Details |
---|---|
Functionality Updated
|
Can now handle multiple roles.
|
Functionality Updated
|
Can now handle multiple users.
|
Functionality Updated
|
The |
Functionality Updated
|
The |
New features
Feature | Details |
---|---|
Functionality New
|
Privileges can now be shown as Cypher commands. |
Syntax New
|
New optional part of the Cypher commands for database privileges. |
Syntax New
|
Cypher now interprets literals with prefix |
Syntax New
|
For |
Functionality
New
|
New Cypher commands for administering privileges for executing procedures and user defined functions.
See The DBMS |
Syntax New
|
Allows setting index provider and index configuration when creating an index. |
Syntax New
|
Allows setting index provider and index configuration for the backing index when creating a node key constraint. |
Syntax New
|
Allows setting index provider and index configuration for the backing index when creating a uniqueness constraint. |
Syntax New
|
New Cypher command for showing current logged-in user and roles. |
Functionality New
|
New Cypher commands for listing indexes. Replaces the procedures |
Functionality New
|
New Cypher commands for listing constraints. Replaces the procedures |
Functionality
New
|
New Cypher command for administering privilege for listing indexes. |
Functionality
New
|
New Cypher command for administering privilege for listing constraints. |
Version 4.1.3
New features
Feature | Details |
---|---|
Syntax New
|
Makes index creation idempotent. If an index with the name or schema already exists no error will be thrown. |
Syntax New
|
Makes index deletion idempotent. If no index with the name exists no error will be thrown. |
Syntax New
|
Makes constraint creation idempotent. If a constraint with the name or type and schema already exists no error will be thrown. |
Syntax New
|
Makes constraint deletion idempotent. If no constraint with the name exists no error will be thrown. |
Version 4.1
Restricted features
Feature | Details |
---|---|
Functionality Restricted
|
No longer revokes sub-privileges when revoking a compound privilege, e.g. when revoking |
Functionality Restricted
|
No longer includes the privileges |
Updated features
Feature | Details |
---|---|
Procedure Updated
|
The |
Functionality Updated
|
The returned privileges are a closer match to the original grants and denies, e.g. if granted |
New features
Feature | Details |
---|---|
Functionality
New
|
The |
Syntax
New
|
The |
Functionality New
|
New support for |
Functionality New
|
New support for |
Functionality New
|
New support for |
Functionality
New |
New Cypher commands for administering transaction management. |
Functionality
New |
New Cypher commands for administering user management. |
Functionality
New |
New Cypher commands for administering database management. |
Functionality
New |
New Cypher commands for administering privilege management. |
Functionality New
|
New Cypher command for administering role, user, database and privilege management. |
Functionality New
|
New Cypher command for administering read and write privileges. |
Functionality
New |
New Cypher commands for administering write privileges. |
Functionality New
|
New optional part of the Cypher commands for database privileges. |
Version 4.0
Removed features
Feature | Details |
---|---|
Function Removed
|
Replaced by relationships(). |
Function Removed
|
Replaced by toInteger(). |
Function Removed
|
Replaced by toLower(). |
Function Removed
|
Replaced by toUpper(). |
Function Removed
|
Replaced by list comprehension. |
Function Removed
|
Replaced by list comprehension. |
Functionality
Removed
|
The |
Functionality
Removed |
The removal of the |
Functionality
Removed
|
Replaced by the new |
Clause Removed
|
Running queries with this clause will cause a syntax error. Running with |
Clause Removed
|
Running queries with this clause will cause a syntax error. Running with |
Syntax Removed
|
Replaced by |
Syntax Removed
|
Replaced by |
Syntax Removed
|
Replaced by |
Syntax Removed
|
Replaced by $parameter. |
Deprecated features
Feature | Details |
---|---|
Syntax Deprecated
|
As in Cypher 3.2, this is replaced by:
|
Syntax Deprecated
|
Replaced by |
Syntax Deprecated
|
Replaced by |
Syntax Deprecated
|
Replaced by |
Syntax Deprecated
|
Replaced by |
Syntax Deprecated
|
Replaced by |
Syntax Deprecated
|
Replaced by |
Restricted features
Feature | Details |
---|---|
Function Restricted
|
Restricted to only work on paths. See length() for more details. |
Function Restricted
|
No longer works for paths. Only works for strings, lists and pattern expressions. See size() for more details. |
Updated features
Feature | Details |
---|---|
Syntax Extended
|
The create constraint syntax can now include a name. The |
New features
Feature | Details |
---|---|
Functionality
New
|
This Neo4j Enterprise Edition only feature involves a new runtime that has many performance enhancements. |
Functionality
New |
New Cypher commands for administering multiple databases. |
Functionality
New |
New Cypher commands for administering role-based access control. |
Functionality
New |
New Cypher commands for administering dbms, database, graph and sub-graph access control. |
Syntax New
|
New syntax for creating indexes, which can include a name. Replaces the |
Syntax New
|
New command for dropping an index by name. |
Syntax New
|
New command for dropping a constraint by name, no matter the type. |
Clause New
|
Existential sub-queries are sub-clauses used to filter the results of a |
Clause New
|
New clause to specify which graph a query, or query part, is executed against. |
Version 3.5
Deprecated features
Feature | Details |
---|---|
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. |
Function Deprecated
|
Replaced by list comprehension. |
Function Deprecated
|
Replaced by list comprehension. |
Version 3.4
Feature | Type | Change | Details |
---|---|---|---|
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. |
|
Function |
Added |
||
Function |
Added |
||
Function |
Added |
||
Functionality |
Added |
Supports storing, indexing and working with the following temporal types: Date, Time, LocalTime, DateTime, LocalDateTime and Duration. |
|
Functionality |
Added |
Functions allowing for the creation and manipulation of values for each temporal type — Date, Time, LocalTime, DateTime, LocalDateTime and Duration. |
|
Functionality |
Added |
Operators allowing for the manipulation of values for each temporal type — Date, Time, LocalTime, DateTime, LocalDateTime and Duration. |
|
Function |
Extended |
Now also allows temporal values as input (i.e. values of type Date, Time, LocalTime, DateTime, LocalDateTime or Duration). |
Version 3.3
Feature | Type | Change | Details |
---|---|---|---|
|
Clause |
Removed |
As in Cypher 3.2, any queries using the |
|
Functionality |
Added |
Neo4j Enterprise Edition only |
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 |
Version 3.2
Feature | Type | Change | Details |
---|---|---|---|
|
Functionality |
Removed |
All queries now use the cost planner. Any query prepended thus will fall back to using Cypher 3.1. |
|
Clause |
Removed |
Running such queries will fall back to using Cypher 3.1 (and use the rule planner) |
|
Clause |
Removed |
Running such queries will fall back to using Cypher 3.1 (and use the rule planner) |
|
Syntax |
Deprecated |
Replaced by |
|
Syntax |
Deprecated |
Replaced by |
|
Syntax |
Deprecated |
Replaced by |
|
Syntax |
Deprecated |
Replaced by |
Functionality |
Added |
||
Index |
Added |
||
Index |
Added |
Neo4j Enterprise Edition only |
|
|
Functionality |
Added |
Neo4j Enterprise Edition only |
Function |
Extended |
Now also allows a list as input |
|
Function |
Extended |
Now also supports aggregation over a set containing both strings and numbers |
Version 3.1
Feature | Type | Change | Details |
---|---|---|---|
|
Function |
Deprecated |
Replaced by relationships() |
|
Function |
Deprecated |
Replaced by toInteger() |
|
Function |
Deprecated |
Replaced by toLower() |
|
Function |
Deprecated |
Replaced by toUpper() |
Function |
Added |
||
Syntax |
Added |
||
Syntax |
Added |
||
Functionality |
Added |
||
Clause |
Extended |
Records returned by |
Version 3.0
Feature | Type | Change | Details |
---|---|---|---|
|
Function |
Removed |
Replaced by exists() |
|
Function |
Removed |
Replaced by toString() |
|
Syntax |
Deprecated |
Replaced by $parameter |
Function |
Added |
||
Clause |
Added |
||
Function |
Added |
||
Function |
Added |
||
Function |
Added |
||
Functionality |
Added |
||
Function |
Extended |
Now also allows Boolean values as input |
Compatibility
Neo4j’s ability to support multiple older versions of the Cypher language has changed over time.
In versions prior to Neo4j 3.4, the backwards compatibility layer included the Cypher language parser, planner, and runtime.
All supported versions of Cypher ran on the same Neo4j kernel.
However, this changed in Neo4j 3.4 when the runtime was excluded from the compatibility layer.
When you run, e.g. a |
Older versions of the language can still be accessed if required. There are two ways to select which version to use in queries.
-
Setting a version for all queries: You can configure your database with the configuration parameter
cypher.default_language_version
, and enter which version you’d like to use (see Supported language versions). Every Cypher query will use this version, provided the query hasn’t explicitly been configured as described in the next item below. -
Setting a version on a query by query basis: The other method is to set the version for a particular query. Prepending a query with
CYPHER 3.5
will execute the query with the version of Cypher included in Neo4j 3.5.
Below is an example using the older parameter syntax {param}
:
CYPHER 3.5
MATCH (n:Person)
WHERE n.age > {agelimit}
RETURN n.name, n.age
Without the CYPHER 3.5
prefix this query would fail with a syntax error. With CYPHER 3.5
however, it will only generate a warning and still work.
In Neo4j 4.3 the Cypher parser understands some older language features, even if they are no longer supported by the Neo4j kernel. These features result in runtime errors. See the table at Cypher Version 4.0 for the list of affected features. |
Supported language versions
Neo4j 4.3 supports the following versions of the Cypher language:
-
Neo4j Cypher 3.5
-
Neo4j Cypher 4.2
-
Neo4j Cypher 4.3
Each release of Neo4j supports a limited number of old Cypher Language Versions. When you upgrade to a new release of Neo4j, please make sure that it supports the Cypher language version you need. If not, you may need to modify your queries to work with a newer Cypher language version. |