From 7a885fc406d4e9ed973637f3a0a115c950c5028d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jens=20Pryce-=C3=85klundh?= <112686610+JPryce-Aklundh@users.noreply.github.com> Date: Mon, 5 May 2025 11:18:12 +0200 Subject: [PATCH] remove unsupported versions from additions page --- ...ions-additions-removals-compatibility.adoc | 1569 ----------------- 1 file changed, 1569 deletions(-) diff --git a/modules/ROOT/pages/deprecations-additions-removals-compatibility.adoc b/modules/ROOT/pages/deprecations-additions-removals-compatibility.adoc index 84f0d7d9e..e770663bd 100644 --- a/modules/ROOT/pages/deprecations-additions-removals-compatibility.adoc +++ b/modules/ROOT/pages/deprecations-additions-removals-compatibility.adoc @@ -3972,1572 +3972,3 @@ a| New syntax that enables inlining of `WHERE` clauses inside node patterns. |=== - - -[[cypher-deprecations-additions-removals-4.3]] -== Neo4j 4.3 - -=== Deprecated features - -[cols="2", options="header"] -|=== -| Feature -| Details - -a| -label:syntax[] -label:deprecated[] -[source, cypher, role="noheader"] ----- -CREATE CONSTRAINT [name] -ON (node:Label) -ASSERT exists(node.property) ----- -a| Replaced by: -[source, cypher, role="noheader"] ----- -CREATE CONSTRAINT [name] -ON (node:Label) -ASSERT node.property IS NOT NULL ----- - - -a| -label:syntax[] -label:deprecated[] -[source, cypher, role="noheader"] ----- -CREATE CONSTRAINT [name] -ON ()-[rel:REL]-() -ASSERT exists(rel.property) ----- -a| -Replaced by: -[source, cypher, role="noheader"] ----- -CREATE CONSTRAINT [name] -ON ()-[rel:REL]-() -ASSERT rel.property IS NOT NULL ----- - - -a| -label:syntax[] -label:deprecated[] -[source, cypher, role="noheader"] ----- -exists(prop) ----- -a| -Replaced by: -[source, cypher, role="noheader"] ----- -prop IS NOT NULL ----- - - -a| -label:syntax[] -label:deprecated[] -[source, cypher, role="noheader"] ----- -NOT exists(prop) ----- -a| -Replaced by: -[source, cypher, role="noheader"] ----- -prop IS NULL ----- - -a| -label:syntax[] -label:deprecated[] + -`BRIEF [OUTPUT]` for `SHOW INDEXES` and `SHOW CONSTRAINTS`. -a| -Replaced by default output columns. - - -a| -label:syntax[] -label:deprecated[] + -`VERBOSE [OUTPUT]` for `SHOW INDEXES` and `SHOW CONSTRAINTS`. -a| -Replaced by: -[source, cypher, role="noheader"] ----- -YIELD * ----- - -a| -label:syntax[] -label:deprecated[] -[source, cypher, role="noheader"] ----- -SHOW EXISTS CONSTRAINTS ----- -a| -Replaced by: -[source, cypher, role="noheader"] ----- -SHOW [PROPERTY] EXIST[ENCE] CONSTRAINTS ----- -Still allows `BRIEF` and `VERBOSE` but not `YIELD` or `WHERE`. - - -a| -label:syntax[] -label:deprecated[] -[source, cypher, role="noheader"] ----- -SHOW NODE EXISTS CONSTRAINTS ----- -a| -Replaced by: -[source, cypher, role="noheader"] ----- -SHOW NODE [PROPERTY] EXIST[ENCE] CONSTRAINTS ----- -Still allows `BRIEF` and `VERBOSE` but not `YIELD` or `WHERE`. - - -a| -label:syntax[] -label:deprecated[] -[source, cypher, role="noheader"] ----- -SHOW RELATIONSHIP EXISTS CONSTRAINTS ----- -a| -Replaced by: -[source, cypher, role="noheader"] ----- -SHOW RELATIONSHIP [PROPERTY] EXIST[ENCE] CONSTRAINTS ----- -Still allows `BRIEF` and `VERBOSE` but not `YIELD` or `WHERE`. - -a| -label:syntax[] -label:deprecated[] + -For privilege commands: -[source, cypher, role="noheader"] ----- -ON DEFAULT DATABASE ----- -a| -Replaced by: -[source, cypher, role="noheader"] ----- -ON HOME DATABASE ----- - - -a| -label:syntax[] -label:deprecated[] + -For privilege commands: -[source, cypher, role="noheader"] ----- -ON DEFAULT GRAPH ----- -a| -Replaced by: -[source, cypher, role="noheader"] ----- -ON HOME GRAPH ----- - -a| -label:syntax[] -label:deprecated[] -[source, cypher, role="noheader"] ----- -MATCH (a) RETURN (a)--() ----- -a| -Pattern expressions producing lists of paths are deprecated, but they can still be used as existence predicates, for example in `WHERE` clauses. -Instead, use a pattern comprehension: -[source, cypher, role="noheader"] ----- -MATCH (a) RETURN [p=(a)--() \| p] ----- -|=== - -=== Updated features - -[cols="2", options="header"] -|=== -| Feature -| Details - -a| -label:functionality[] -label:updated[] -[source, cypher, role="noheader"] ----- -SHOW INDEXES WHERE ... ----- -a| -Now allows filtering for: -[source, cypher, role="noheader"] ----- -SHOW INDEXES ----- - - -a| -label:functionality[] -label:updated[] -[source, cypher, role="noheader"] ----- -SHOW CONSTRAINTS WHERE ... ----- -a| -Now allows filtering for: -[source, cypher, role="noheader"] ----- -SHOW CONSTRAINTS ----- - - -a| -label:functionality[] -label:updated[] -[source, cypher, role="noheader"] ----- -SHOW INDEXES YIELD ... -[WHERE ...] -[RETURN ...] ----- -a| -Now allows `YIELD`, `WHERE`, and `RETURN` clauses to `SHOW INDEXES` to change the output. - - -a| -label:functionality[] -label:updated[] -[source, cypher, role="noheader"] ----- -SHOW CONSTRAINTS YIELD ... -[WHERE ...] -[RETURN ...] ----- -a| -Now allows `YIELD`, `WHERE`, and `RETURN` clauses to `SHOW CONSTRAINTS` to change the output. - - -a| -label:syntax[] -label:updated[] -[source, cypher, role="noheader"] ----- -SHOW [PROPERTY] EXIST[ENCE] CONSTRAINTS ----- -a| -New syntax for filtering `SHOW CONSTRAINTS` on property existence constraints. + -Allows `YIELD` and `WHERE` but not `BRIEF` or `VERBOSE`. - - -a| -label:syntax[] -label:updated[] -[source, cypher, role="noheader"] ----- -SHOW NODE [PROPERTY] EXIST[ENCE] CONSTRAINTS ----- -a| -New syntax for filtering `SHOW CONSTRAINTS` on node property existence constraints. + -Allows `YIELD` and `WHERE` but not `BRIEF` or `VERBOSE`. - - -a| -label:syntax[] -label:updated[] -[source, cypher, role="noheader"] ----- -SHOW REL[ATIONSHIP] [PROPERTY] EXIST[ENCE] CONSTRAINTS ----- -a| -New syntax for filtering `SHOW CONSTRAINTS` on relationship property existence constraints. + -Allows `YIELD` and `WHERE` but not `BRIEF` or `VERBOSE`. - - -a| -label:functionality[] -label:updated[] -[source, cypher, role="noheader"] ----- -SHOW FULLTEXT INDEXES ----- -a| -Now allows easy filtering for `SHOW INDEXES` on fulltext indexes. + -Allows `YIELD` and `WHERE` but not `BRIEF` or `VERBOSE`. - - -a| -label:functionality[] -label:updated[] -[source, cypher, role="noheader"] ----- -SHOW LOOKUP INDEXES ----- -a| -Now allows easy filtering for `SHOW INDEXES` on token lookup indexes. + -Allows `YIELD` and `WHERE` but not `BRIEF` or `VERBOSE`. -|=== - -=== New features - -[cols="2", options="header"] -|=== -| Feature -| Details - -a| -label:syntax[] -label:new[] -[source, cypher, role="noheader"] ----- -CREATE DATABASE ... -[OPTIONS {...}] ----- -a| -New syntax to pass options to `CREATE DATABASE`. -This can be used to specify a specific cluster node to seed data from. - - -a| -label:syntax[] -label:new[] -[source, cypher, role="noheader"] ----- -CREATE CONSTRAINT [name] -ON (node:Label) -ASSERT node.property IS NOT NULL ----- -a| -New syntax for creating node property existence constraints. - - -a| -label:syntax[] -label:new[] -[source, cypher, role="noheader"] ----- -CREATE CONSTRAINT [name] -ON ()-[rel:REL]-() -ASSERT rel.property IS NOT NULL ----- -a| -New syntax for creating relationship property existence constraints. - - -a| -label:syntax[] -label:new[] -[source, cypher, role="noheader"] ----- -ALTER USER name IF EXISTS ... ----- -a| -Makes altering users idempotent. -If the specified name does not exists, no error is thrown. - - -a| -label:syntax[] -label:new[] -[source, cypher, role="noheader"] ----- -ALTER USER ... -SET HOME DATABASE ... ----- -a| -Now allows setting home database for user. - - -a| -label:syntax[] -label:new[] -[source, cypher, role="noheader"] ----- -ALTER USER ... -REMOVE HOME DATABASE ----- -a| -Now allows removing home database for user. - - -a| -label:syntax[] -label:new[] -[source, cypher, role="noheader"] ----- -CREATE USER ... -SET HOME DATABASE ... ----- -a| -`CREATE USER` now allows setting home database for user. - - -a| -label:syntax[] -label:new[] -[source, cypher, role="noheader"] ----- -SHOW HOME DATABASE ----- -a| -New syntax for showing the home database of the current user. - - -a| -label:syntax[] -label:new[] + -New privilege: -[source, cypher, role="noheader"] ----- -SET USER HOME DATABASE ----- -a| -New Cypher command for administering privilege for changing users home database. - - -a| -label:syntax[] -label:new[] + -For privilege commands: -[source, cypher, role="noheader"] ----- -ON HOME DATABASE ----- -a| -New syntax for privileges affecting home database. - - -a| -label:syntax[] -label:new[] + -For privilege commands: -[source, cypher, role="noheader"] ----- -ON HOME GRAPH ----- -a| -New syntax for privileges affecting home graph. - -a| -label:syntax[] -label:new[] -[source, cypher, role="noheader"] ----- -CREATE FULLTEXT INDEX ... ----- -a| -Allows creating fulltext indexes on nodes or relationships. -They can be dropped by using their name. - -a| -label:functionality[] -label:new[] -[source, cypher, role="noheader"] ----- -CREATE INDEX FOR ()-[r:TYPE]-() ... ----- -a| -Allows creating indexes on relationships with a particular relationship type and property combination. -They can be dropped by using their name. - - -a| -label:functionality[] -label:new[] -[source, cypher, role="noheader"] ----- -CREATE LOOKUP INDEX ... ----- -a| -Create token lookup index for nodes with any labels or relationships with any relationship type. -They can be dropped by using their name. - -a| -label:functionality[] -label:new[] -[source, cypher, role="noheader"] ----- -RENAME ROLE ----- -a| -New Cypher command for changing the name of a role. - - -a| -label:functionality[] -label:new[] -[source, cypher, role="noheader"] ----- -RENAME USER ----- -a| -New Cypher command for changing the name of a user. - - -a| -label:functionality[] -label:new[] -[source, cypher, role="noheader"] ----- -SHOW PROCEDURE[S] -[EXECUTABLE [BY {CURRENT USER \| username}]] -[YIELD ...] -[WHERE ...] -[RETURN ...] ----- -a| -New Cypher commands for listing procedures. - - -a| -label:functionality[] -label:new[] -[source, cypher, role="noheader"] ----- -SHOW [ALL \| BUILT IN \| USER DEFINED] FUNCTION[S] -[EXECUTABLE [BY {CURRENT USER \| username}]] -[YIELD ...] -[WHERE ...] -[RETURN ...] ----- -a| -New Cypher commands for listing functions. - -|=== - - -[[cypher-deprecations-additions-removals-4.2]] -== Neo4j 4.2 - -=== Deprecated features - -[cols="2", options="header"] -|=== -| Feature -| Details - -a| -label:syntax[] -label:deprecated[] -[source, cypher, role="noheader"] ----- -0... ----- -a| -Replaced by `+0o...+`. - - -a| -label:syntax[] -label:deprecated[] -[source, cypher, role="noheader"] ----- -0X... ----- -a| -Only `+0x...+` (lowercase x) is supported. - -a| -label:syntax[] -label:deprecated[] -[source, cypher, role="noheader"] ----- -CALL { RETURN 1 } ----- -a| -Unaliased expressions are deprecated in subquery `RETURN` clauses. Replaced by: -[source, cypher, role="noheader"] ----- -CALL { RETURN 1 AS one } ----- -|=== - -=== Updated features - -[cols="2", options="header"] -|=== -| Feature -| Details - -a| -label:functionality[] -label:updated[] -[source, cypher, role="noheader"] ----- -SHOW ROLE name PRIVILEGES ----- -a| -Can now handle multiple roles. -[source, cypher, role="noheader"] ----- -SHOW ROLES n1, n2, ... PRIVILEGES ----- - - -a| -label:functionality[] -label:updated[] -[source, cypher, role="noheader"] ----- -SHOW USER name PRIVILEGES ----- -a| -Can now handle multiple users. -[source, cypher, role="noheader"] ----- -SHOW USERS n1, n2, ... PRIVILEGES ----- - - -a| -label:functionality[] -label:updated[] -[source, cypher, role="noheader"] ----- -round(expression, precision) ----- -a| -The `round()` function can now take an additional argument to specify rounding precision. - - -a| -label:functionality[] -label:updated[] -[source, cypher, role="noheader"] ----- -round(expression, precision, mode) ----- -a| -The `round()` function can now take two additional arguments to specify rounding precision and rounding mode. -|=== - -=== New features - -[cols="2", options="header"] -|=== -| Feature -| Details - -a| -label:functionality[] -label:new[] -[source, cypher, role="noheader"] ----- -SHOW PRIVILEGES [AS [REVOKE] COMMAND[S]] ----- -a| -Privileges can now be shown as Cypher commands. - -a| -label:syntax[] -label:new[] -[source, cypher, role="noheader"] ----- -DEFAULT GRAPH ----- -a| -New optional part of the Cypher commands for database privileges. - - -a| -label:syntax[] -label:new[] -[source, cypher, role="noheader"] ----- -0o... ----- -a| -Cypher now interprets literals with prefix `0o` as an octal integer literal. - -a| -label:syntax[] -label:new[] -[source, cypher, role="noheader"] ----- -SET [PLAINTEXT \| ENCRYPTED] PASSWORD ----- -a| -For `CREATE USER` and `ALTER USER`, it is now possible to set (or update) a password when the plaintext password is unknown, but the encrypted password is available. - - -a| -label:functionality[] -label:new[] + -New privilege: -[source, cypher, role="noheader"] ----- -EXECUTE ----- -a| -New Cypher commands for administering privileges for executing procedures and user defined functions. -See link:{neo4j-docs-base-uri}/operations-manual/current/authentication-authorization/dbms-administration/#access-control-dbms-administration-execute[The DBMS `EXECUTE` privileges]. - -a| -label:syntax[] -label:new[] -[source, cypher, role="noheader"] ----- -CREATE [BTREE] INDEX ... [OPTIONS {...}] ----- -a| -Allows setting index provider and index configuration when creating an index. - - -a| -label:syntax[] -label:new[] -[source, cypher, role="noheader"] ----- -CREATE CONSTRAINT ... IS NODE KEY [OPTIONS {...}] ----- -a| -Allows setting index provider and index configuration for the backing index when creating a node key constraint. - - -a| -label:syntax[] -label:new[] -[source, cypher, role="noheader"] ----- -CREATE CONSTRAINT ... IS UNIQUE [OPTIONS {...}] ----- -a| -Allows setting index provider and index configuration for the backing index when creating a property uniqueness constraint. - -a| -label:syntax[] -label:new[] -[source, cypher, role="noheader"] ----- -SHOW CURRENT USER ----- -a| -New Cypher command for showing current logged-in user and roles. - - -a| -label:functionality[] -label:new[] -[source, cypher, role="noheader"] ----- -SHOW [ALL \| BTREE] INDEX[ES] [BRIEF \| VERBOSE [OUTPUT]] ----- -a| -New Cypher commands for listing indexes. - -Replaces the procedures `db.indexes`, `db.indexDetails` (verbose), and partially `db.schemaStatements` (verbose). - -a| -label:functionality[] -label:new[] -[source, cypher, role="noheader"] ----- -SHOW [ALL \| UNIQUE \| NODE EXIST[S] \| RELATIONSHIP EXIST[S] \| EXIST[S] \| NODE KEY] CONSTRAINT[S] [BRIEF \| VERBOSE [OUTPUT]] ----- -a| -New Cypher commands for listing constraints. - -Replaces the procedures `db.constraints` and partially `db.schemaStatements` (verbose). - -a| -label:functionality[] -label:new[] + -New privilege: -[source, cypher, role="noheader"] ----- -SHOW INDEX ----- -a| -New Cypher command for administering privilege for listing indexes. - - -a| -label:functionality[] -label:new[] + -New privilege: -[source, cypher, role="noheader"] ----- -SHOW CONSTRAINTS ----- -a| -New Cypher command for administering privilege for listing constraints. -|=== - - -[[cypher-deprecations-additions-removals-4.1.3]] -== Neo4j 4.1.3 - -=== New features - -[cols="2", options="header"] -|=== -| Feature -| Details - -a| -label:syntax[] -label:new[] -[source, cypher, role="noheader"] ----- -CREATE INDEX [name] IF NOT EXISTS FOR ... ----- -a| -Makes index creation idempotent. If an index with the name or schema already exists no error will be thrown. - -a| -label:syntax[] -label:new[] -[source, cypher, role="noheader"] ----- -DROP INDEX name IF EXISTS ----- -a| -Makes index deletion idempotent. If no index with the name exists no error will be thrown. - -a| -label:syntax[] -label:new[] -[source, cypher, role="noheader"] ----- -CREATE CONSTRAINT [name] IF NOT EXISTS ON ... ----- -a| -Makes constraint creation idempotent. If a constraint with the name or type and schema already exists no error will be thrown. - -a| -label:syntax[] -label:new[] -[source, cypher, role="noheader"] ----- -DROP CONSTRAINT name IF EXISTS ----- -a| -Makes constraint deletion idempotent. If no constraint with the name exists no error will be thrown. - -|=== - - -[[cypher-deprecations-additions-removals-4.1]] -== Neo4j 4.1 - -=== Restricted features - -[cols="2", options="header"] -|=== -| Feature -| Details - -a| -label:functionality[] -label:restricted[] -[source, cypher, role="noheader"] ----- -REVOKE ... ----- -a| -No longer revokes sub-privileges when revoking a compound privilege, e.g. when revoking `INDEX MANAGEMENT`, any `CREATE INDEX` and `DROP INDEX` privileges will no longer be revoked. - -a| -label:functionality[] -label:restricted[] -[source, cypher, role="noheader"] ----- -ALL DATABASE PRIVILEGES ----- -a| -No longer includes the privileges `START DATABASE` and `STOP DATABASE`. -|=== - -=== Updated features - -[cols="2", options="header"] -|=== -| Feature -| Details - -a| -label:procedure[] -label:updated[] -[source, cypher, role="noheader"] ----- -queryId ----- -a| -The `queryId` procedure format has changed, and no longer includes the database name. For example, `mydb-query-123` is now `query-123`. This change affects built-in procedures `dbms.listQueries()`, `dbms.listActiveLocks(queryId)`, `dbms.killQueries(queryIds)` `and dbms.killQuery(queryId)`. - -a| -label:functionality[] -label:updated[] -[source, cypher, role="noheader"] ----- -SHOW PRIVILEGES ----- -a| -The returned privileges are a closer match to the original grants and denies, e.g. if granted `MATCH` the command will show that specific privilege and not the `TRAVERSE` and `READ` privileges. Added support for `YIELD` and `WHERE` clauses to allow filtering results. -|=== - -=== New features - -[cols="2", options="header"] -|=== -| Feature -| Details - -a| -label:functionality[] -label:new[] + -New role: -[source, cypher, role="noheader"] ----- -PUBLIC ----- -a| -The `PUBLIC` role is automatically assigned to all users, giving them a set of base privileges. - -a| -label:syntax[] -label:new[] + -For privileges: -[source, cypher, role="noheader"] ----- -REVOKE MATCH ----- -a| -The `MATCH` privilege can now be revoked. - -a| -label:functionality[] -label:new[] -[source, cypher, role="noheader"] ----- -SHOW USERS ----- -a| -New support for `YIELD` and `WHERE` clauses to allow filtering results. - -a| -label:functionality[] -label:new[] -[source, cypher, role="noheader"] ----- -SHOW ROLES ----- -a| -New support for `YIELD` and `WHERE` clauses to allow filtering results. - -a| -label:functionality[] -label:new[] -[source, cypher, role="noheader"] ----- -SHOW DATABASES ----- -a| -New support for `YIELD` and `WHERE` clauses to allow filtering results. - -a| -label:functionality[] -label:new[] + -link:{neo4j-docs-base-uri}/operations-manual/current/authentication-authorization/database-administration/#access-control-database-administration-transaction[TRANSACTION MANAGEMENT] privileges -a| -New Cypher commands for administering transaction management. - -a| -label:functionality[] -label:new[] + -DBMS link:{neo4j-docs-base-uri}/operations-manual/current/authentication-authorization/dbms-administration/#access-control-dbms-administration-user-management[USER MANAGEMENT] privileges -a| -New Cypher commands for administering user management. - -a| -label:functionality[] -label:new[] + -DBMS link:{neo4j-docs-base-uri}/operations-manual/current/authentication-authorization/dbms-administration/#access-control-dbms-administration-database-management[DATABASE MANAGEMENT] privileges -a| -New Cypher commands for administering database management. - -a| -label:functionality[] -label:new[] + -DBMS link:{neo4j-docs-base-uri}/operations-manual/current/authentication-authorization/dbms-administration/#access-control-dbms-administration-privilege-management[PRIVILEGE MANAGEMENT] privileges -a| -New Cypher commands for administering privilege management. - -a| -label:functionality[] -label:new[] -[source, cypher, role="noheader"] ----- -ALL DBMS PRIVILEGES ----- -a| -New Cypher command for administering role, user, database and privilege management. - - -a| -label:functionality[] -label:new[] -[source, cypher, role="noheader"] ----- -ALL GRAPH PRIVILEGES ----- -a| -New Cypher command for administering read and write privileges. - -a| -label:functionality[] -label:new[] + -Write privileges -a| -New Cypher commands for administering write privileges. - -a| -label:functionality[] -label:new[] -[source, cypher, role="noheader"] ----- -ON DEFAULT DATABASE ----- -a| -New optional part of the Cypher commands for database privileges. -|=== - - -[[cypher-deprecations-additions-removals-4.0]] -== Neo4j 4.0 - -=== Removed features - -[cols="2", options="header"] -|=== -| Feature -| Details - -a| -label:function[] -label:removed[] -[source, cypher, role="noheader"] ----- -rels() ----- -a| -Replaced by xref:functions/list.adoc#functions-relationships[relationships()]. - -a| -label:function[] -label:removed[] -[source, cypher, role="noheader"] ----- -toInt() ----- -a| -Replaced by xref:functions/scalar.adoc#functions-tointeger[toInteger()]. - -a| -label:function[] -label:removed[] -[source, cypher, role="noheader"] ----- -lower() ----- -a| -Replaced by xref:functions/string.adoc#functions-tolower[toLower()]. - -a| -label:function[] -label:removed[] -[source, cypher, role="noheader"] ----- -upper() ----- -a| -Replaced by xref:functions/string.adoc#functions-toupper[toUpper()]. - -a| -label:function[] -label:removed[] -[source, cypher, role="noheader"] ----- -extract() ----- -a| -Replaced by xref:expressions/list-expressions.adoc#list-comprehension[list comprehension]. - -a| -label:function[] -label:removed[] -[source, cypher, role="noheader"] ----- -filter() ----- -a| -Replaced by xref:expressions/list-expressions.adoc#list-comprehension[list comprehension]. - -a| -label:functionality[] -label:removed[] + -For Rule planner: -[source, cypher, role="noheader"] ----- -CYPHER planner=rule ----- -a| -The `RULE` planner was removed in 3.2, but still possible to trigger using `START` or `CREATE UNIQUE` clauses. Now it is completely removed. - - -a| -label:functionality[] -label:removed[] + -Explicit indexes -a| -The removal of the `RULE` planner in 3.2 was the beginning of the end for explicit indexes. Now they are completely removed, including the removal of the link:https://neo4j.com/docs/cypher-manual/3.5/schema/index/#explicit-indexes-procedures[built-in procedures for Neo4j 3.3 to 3.5]. - - -a| -label:functionality[] -label:removed[] + -For compiled runtime: -[source, cypher, role="noheader"] ----- -CYPHER runtime=compiled ----- -a| -Replaced by the new `pipelined` runtime which covers a much wider range of queries. - - -a| -label:clause[] -label:removed[] -[source, cypher, role="noheader"] ----- -CREATE UNIQUE ----- -a| -Running queries with this clause will cause a syntax error. - -a| -label:clause[] -label:removed[] -[source, cypher, role="noheader"] ----- -START ----- -a| -Running queries with this clause will cause a syntax error. - -a| -label:syntax[] -label:removed[] -[source, cypher, role="noheader"] ----- -MATCH (n)-[:A\|:B\|:C {foo: 'bar'}]-() RETURN n ----- -a| -Replaced by `MATCH (n)-[:A\|B\|C {foo: 'bar'}]-() RETURN n`. - -a| -label:syntax[] -label:removed[] -[source, cypher, role="noheader"] ----- -MATCH (n)-[x:A\|:B\|:C]-() RETURN n ----- -a| -Replaced by `MATCH (n)-[x:A\|B\|C]-() RETURN n`. - - -a| -label:syntax[] -label:removed[] -[source, cypher, role="noheader"] ----- -MATCH (n)-[x:A\|:B\|:C*]-() RETURN n ----- -a| -Replaced by `MATCH (n)-[x:A\|B\|C*]-() RETURN n`. - - -a| -label:syntax[] -label:removed[] -[source, cypher, role="noheader"] ----- -{parameter} ----- -a| -Replaced by xref:syntax/parameters.adoc[$parameter]. -|=== - -=== Deprecated features - -[cols="2", options="header"] -|=== -| Feature -| Details - -a| -label:syntax[] -label:deprecated[] -[source, cypher, role="noheader"] ----- -MATCH (n)-[rs*]-() RETURN rs ----- -a| -As in Cypher 3.2, this is replaced by: -[source, cypher, role="noheader"] ----- -MATCH p=(n)-[*]-() RETURN relationships(p) AS rs ----- - -a| -label:syntax[] -label:deprecated[] -[source, cypher, role="noheader"] ----- -CREATE INDEX ON :Label(prop) ----- -a| -Replaced by `CREATE INDEX FOR (n:Label) ON (n.prop)`. - -a| -label:syntax[] -label:deprecated[] -[source, cypher, role="noheader"] ----- -DROP INDEX ON :Label(prop) ----- -a| -Replaced by `DROP INDEX name`. - -a| -label:syntax[] -label:deprecated[] -[source, cypher, role="noheader"] ----- -DROP CONSTRAINT ON (n:Label) ASSERT (n.prop) IS NODE KEY ----- -a| -Replaced by `DROP CONSTRAINT name`. - -a| -label:syntax[] -label:deprecated[] -[source, cypher, role="noheader"] ----- -DROP CONSTRAINT ON (n:Label) ASSERT (n.prop) IS UNIQUE ----- -a| -Replaced by `DROP CONSTRAINT name`. - -a| -label:syntax[] -label:deprecated[] -[source, cypher, role="noheader"] ----- -DROP CONSTRAINT ON (n:Label) ASSERT exists(n.prop) ----- -a| -Replaced by `DROP CONSTRAINT name`. - -a| -label:syntax[] -label:deprecated[] -[source, cypher, role="noheader"] ----- -DROP CONSTRAINT ON ()-[r:Type]-() ASSERT exists(r.prop) ----- -a| -Replaced by `DROP CONSTRAINT name`. - -|=== - -=== Restricted features - -[cols="2", options="header"] -|=== -| Feature -| Details - -a| -label:function[] -label:restricted[] -[source, cypher, role="noheader"] ----- -length() ----- -a| -Restricted to only work on paths. See xref:functions/scalar.adoc#functions-length[length()] for more details. - -a| -label:function[] -label:restricted[] -[source, cypher, role="noheader"] ----- -size() ----- -a| -Only works for strings, lists and pattern comprehensions, and no longer works for paths. -For versions above 5.0, use a `COUNT` expression instead: -[source, cypher, role="noheader"] ----- -RETURN COUNT { (a)-[]->(b) } ----- -For versions below 5.0, use a pattern comprehension instead: -[source, cypher, role="noheader"] ----- -RETURN size([ (a)-[]->(b) \| a ]) ----- -See xref:functions/scalar.adoc#functions-size[size()] and xref:subqueries/count.adoc[Count Subqueries] for more details. -|=== - -=== Updated features - -[cols="2", options="header"] -|=== -| Feature -| Details - -a| -label:syntax[] -label:extended[] -[source, cypher, role="noheader"] ----- -CREATE CONSTRAINT [name] ON ... ----- -a| -The create constraint syntax can now include a name. - -The `IS NODE KEY` and `IS UNIQUE` versions of this command replace the procedures `db.createNodeKey` and `db.createUniquePropertyConstraint`, respectively. - -|=== - -=== New features - -[cols="2", options="header"] -|=== -| Feature -| Details - -a| -label:functionality[] -label:new[] + -Pipelined runtime: -[source, cypher, role="noheader"] ----- -CYPHER runtime=pipelined ----- -a| -This Neo4j Enterprise Edition only feature involves a new runtime that has many performance enhancements. - -a| -label:functionality[] -label:new[] + -link:{neo4j-docs-base-uri}/operations-manual/current/database-administration/standard-databases/manage-databases/[Multi-database administration] -a| -New Cypher commands for administering multiple databases. - -a| -label:functionality[] -label:new[] + -link:{neo4j-docs-base-uri}/operations-manual/current/authentication-authorization/[Access control] -a| -New Cypher commands for administering role-based access control. - -a| -label:functionality[] -label:new[] + -link:{neo4j-docs-base-uri}/operations-manual/current/authentication-authorization/manage-privileges/[Fine-grained security] -a| -New Cypher commands for administering dbms, database, graph and sub-graph access control. - -a| -label:syntax[] -label:new[] -[source, cypher, role="noheader"] ----- -CREATE INDEX [name] FOR (n:Label) ON (n.prop) ----- -a| -New syntax for creating indexes, which can include a name. - -Replaces the `db.createIndex` procedure. - -a| -label:syntax[] -label:new[] -[source, cypher, role="noheader"] ----- -DROP INDEX name ----- -a| -xref:indexes/search-performance-indexes/managing-indexes.adoc#indexes-drop-an-index[New command] for dropping an index by name. - - -a| -label:syntax[] -label:new[] -[source, cypher, role="noheader"] ----- -DROP CONSTRAINT name ----- -a| -xref:constraints/managing-constraints.adoc#drop-constraint[New command] for dropping a constraint by name, no matter the type. - - -a| -label:clause[] -label:new[] -[source, cypher, role="noheader"] ----- -WHERE EXISTS {...} ----- -a| -`EXISTS` subqueries are subclauses used to filter the results of a `MATCH`, `OPTIONAL MATCH`, or `WITH` clause. - -a| -label:clause[] -label:new[] -[source, cypher, role="noheader"] ----- -USE neo4j ----- -a| -New clause to specify which graph a query, or query part, is executed against. - -|=== - - -[[cypher-deprecations-additions-removals-3.5]] -== Neo4j 3.5 - -=== 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. - -a| -label:function[] -label:deprecated[] -[source, cypher, role="noheader"] ----- -extract() ----- -a| -Replaced by xref:expressions/list-expressions.adoc#list-comprehension[list comprehension]. - -a| -label:function[] -label:deprecated[] -[source, cypher, role="noheader"] ----- -filter() ----- -a| -Replaced by xref:expressions/list-expressions.adoc#list-comprehension[list comprehension]. -|=== - - -[[cypher-deprecations-additions-removals-3.4]] -== Neo4j 3.4 -[options="header"] -|=== -| Feature | Type | Change | Details -| xref:values-and-types/spatial.adoc[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. -| xref:functions/spatial.adoc#functions-point-cartesian-3d[point() - Cartesian 3D] | Function | Added | -| xref:functions/spatial.adoc#functions-point-wgs84-3d[point() - WGS 84 3D] | Function | Added | -| xref:functions/scalar.adoc#functions-randomuuid[randomUUID()] | Function | Added | -| xref:values-and-types/temporal.adoc[Temporal types] | Functionality | Added | Supports storing, indexing and working with the following temporal types: Date, Time, LocalTime, DateTime, LocalDateTime and Duration. -| xref:functions/temporal/index.adoc[Temporal functions] | Functionality | Added | Functions allowing for the creation and manipulation of values for each temporal type -- _Date_, _Time_, _LocalTime_, _DateTime_, _LocalDateTime_ and _Duration_. -| xref:expressions/temporal-operators.adoc[Temporal operators] | Functionality | Added | Operators allowing for the manipulation of values for each temporal type -- _Date_, _Time_, _LocalTime_, _DateTime_, _LocalDateTime_ and _Duration_. -| xref:functions/string.adoc#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.3]] -== Neo4j 3.3 -[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 link:https://neo4j.com/docs/cypher-manual/3.5/schema/index/#explicit-indexes-procedures[built-in procedures for Neo4j versions 3.3 to 3.5] for accessing explicit indexes. The procedures 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 -| xref:functions/aggregating.adoc#functions-max[max()], xref:functions/aggregating.adoc#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]] -== Neo4j 3.2 -[options="header"] -|=== -| Feature | Type | Change | Details -| `CYPHER planner=rule` (Rule planner) | Functionality | Removed | All queries now use the cost planner. Any query prepended thus will fall back to using Cypher 3.1. -| `CREATE UNIQUE` | Clause | Removed | Running such queries will fall back to using Cypher 3.1 (and use the rule planner) -| `START` | Clause | Removed | Running such queries will fall back to using Cypher 3.1 (and use the rule planner) -| `MATCH (n)-[rs*]-() RETURN rs` | Syntax | Deprecated | Replaced by `MATCH p=(n)-[*]-() RETURN relationships(p) AS rs` -| `MATCH (n)-[:A\|:B\|:C {foo: 'bar'}]-() RETURN n` | Syntax | Deprecated | Replaced by `MATCH (n)-[:A\|B\|C {foo: 'bar'}]-() RETURN n` -| `MATCH (n)-[x:A\|:B\|:C]-() RETURN n` | Syntax | Deprecated | Replaced by `MATCH (n)-[x:A\|B\|C]-() RETURN n` -| `MATCH (n)-[x:A\|:B\|:C*]-() RETURN n` | Syntax | Deprecated | Replaced by `MATCH (n)-[x:A\|B\|C*]-() RETURN n` -| link:/docs/java-reference/5/extending-neo4j/aggregation-functions#extending-neo4j-aggregation-functions[User-defined aggregation functions] | Functionality | Added | -| xref:indexes/search-performance-indexes/managing-indexes.adoc[Composite indexes] | Index | Added | -| xref:constraints/managing-constraints.adoc#create-key-constraint[Node Key] | Index | Added | Neo4j Enterprise Edition only -| `CYPHER runtime=compiled` (Compiled runtime) | Functionality | Added | Neo4j Enterprise Edition only -| xref:functions/list.adoc#functions-reverse-list[reverse()] | Function | Extended | Now also allows a list as input -| xref:functions/aggregating.adoc#functions-max[max()], xref:functions/aggregating.adoc#functions-min[min()] | Function | Extended | Now also supports aggregation over a set containing both strings and numbers -|=== - - -[[cypher-deprecations-additions-removals-3.1]] -== Neo4j 3.1 -[options="header"] -|=== -| Feature | Type | Change | Details -| `rels()` | Function | Deprecated | Replaced by xref:functions/list.adoc#functions-relationships[relationships()] -| `toInt()` | Function | Deprecated | Replaced by xref:functions/scalar.adoc#functions-tointeger[toInteger()] -| `lower()` | Function | Deprecated | Replaced by xref:functions/string.adoc#functions-tolower[toLower()] -| `upper()` | Function | Deprecated | Replaced by xref:functions/string.adoc#functions-toupper[toUpper()] -| xref:functions/scalar.adoc#functions-toboolean[toBoolean()] | Function | Added | -| xref:values-and-types/maps.adoc#cypher-map-projection[Map projection] | Syntax | Added | -| xref:values-and-types/lists.adoc#cypher-pattern-comprehension[Pattern comprehension] | Syntax | Added | -| link:/docs/java-reference/5/extending-neo4j/functions#extending-neo4j-functions[User-defined functions] | Functionality | Added | -| xref:clauses/call.adoc[CALL\...YIELD\...WHERE] | Clause | Extended | Records returned by `YIELD` may be filtered further using `WHERE` -|=== - - -[[cypher-deprecations-additions-removals-3.0]] -== Neo4j 3.0 -[options="header"] -|=== -| Feature | Type | Change | Details -| `has()` | Function | Removed | Replaced by xref:functions/predicate.adoc#functions-exists[exists()] -| `str()` | Function | Removed | Replaced by xref:functions/string.adoc#functions-tostring[toString()] -| `+{parameter}+` | Syntax | Deprecated | Replaced by xref:syntax/parameters.adoc[$parameter] -| xref:functions/scalar.adoc#functions-properties[properties()] | Function | Added | -| xref:clauses/call.adoc[CALL [\...YIELD\]] | Clause | Added | -| xref:functions/spatial.adoc#functions-point-cartesian-2d[point() - Cartesian 2D] | Function | Added | -| xref:functions/spatial.adoc#functions-point-wgs84-2d[point() - WGS 84 2D] | Function | Added | -| xref:functions/spatial.adoc#functions-distance[distance()] | Function | Added | -| link:/docs/java-reference/5/extending-neo4j/procedures#extending-neo4j-procedures[User-defined procedures] | Functionality | Added | -| xref:functions/string.adoc#functions-tostring[toString()] | Function | Extended | Now also allows Boolean values as input -|===