You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
| Introduced `OPTIONAL CALL` for optionally executing a xref:clauses/call.adoc#optiona-call[procedure] or xref:subqueries/call-subquery.adoc#optional-call[subquery] `CALL`.
87
+
| Introduced `OPTIONAL CALL` for optionally executing a xref:clauses/call.adoc#optional-call[procedure] or xref:subqueries/call-subquery.adoc#optional-call[subquery] `CALL`.
88
88
Similar to xref:clauses/optional-match.adoc[`OPTIONAL MATCH`], any empty rows produced by the `OPTIONAL CALL` will return `null` and not affect the remainder of the procedure or subquery evaluation.
89
89
90
90
a|
@@ -134,6 +134,18 @@ REMOVE n[$prop]
134
134
----
135
135
| Added the ability to dynamically reference properties in xref:clauses/set.adoc#set-dynamically-a-property[SET] and xref:clauses/remove.adoc#remove-remove-a-property-dynamically[REMOVE] clauses.
136
136
137
+
a|
138
+
label:functionality[]
139
+
label:new[]
140
+
[source, cypher, role=noheader]
141
+
----
142
+
DROP [COMPOSITE] DATABASE ... [RESTRICT \| CASCADE ALIAS[ES]]
143
+
----
144
+
145
+
| Added the ability to drop database aliases while deleting a database.
146
+
This will affect local database aliases targeting the database and constituent database aliases belonging to the composite database.
147
+
For more information, see link:{neo4j-docs-base-uri}/operations-manual/{page-version}/database-administration/standard-databases/delete-databases/#delete-databases-with-aliases[Delete a database with local database aliases targeting it] and link:{neo4j-docs-base-uri}/operations-manual/{page-version}/database-administration/composite-databases/delete-composite-databases/#composite-databases-delete-with-aliases[Delete a composite database with constituent database aliases].
148
+
137
149
a|
138
150
label:functionality[]
139
151
label:new[]
@@ -146,6 +158,62 @@ RETURN a.name, a.year
146
158
147
159
| Extension of the xref:clauses/load-csv.adoc#azure-cloud-storage[LOAD CSV] clause to allow loading CSV files from Azure Cloud Storage URIs.
148
160
161
+
a|
162
+
label:functionality[]
163
+
label:new[]
164
+
[source, cypher, role=noheader]
165
+
----
166
+
CREATE USER bob
167
+
SET AUTH 'externalProviderName' {
168
+
SET ID 'userIdForExternalProvider'
169
+
}
170
+
SET AUTH 'native' {
171
+
SET PASSWORD 'password'
172
+
SET PASSWORD CHANGE REQUIRED
173
+
}
174
+
----
175
+
| Added the ability set which link:{neo4j-docs-base-uri}/operations-manual/{page-version}/authentication-authorization/auth-providers[auth providers] apply to a user (Enterprise Edition).
176
+
177
+
Administration of the native (username / password) auth via the new syntax is also now supported (Community Edition).
178
+
179
+
a|
180
+
label:functionality[]
181
+
label:new[]
182
+
[source, cypher, role=noheader]
183
+
----
184
+
ALTER USER bob
185
+
REMOVE AUTH 'native'
186
+
SET AUTH 'externalProviderName' {
187
+
SET ID 'userIdForExternalProvider'
188
+
}
189
+
----
190
+
| Added the ability add and remove user link:{neo4j-docs-base-uri}/operations-manual/{page-version}/authentication-authorization/auth-providers[auth providers] via the `ALTER USER` command.
191
+
192
+
Setting the native (username / password) auth provider via this new syntax is also supported (Community Edition), but removing any auth provider or setting a non-native auth provider is only supported in Enterprise Edition.
193
+
194
+
195
+
a|
196
+
label:functionality[]
197
+
label:new[]
198
+
[source, cypher, role="noheader"]
199
+
----
200
+
SHOW USERS WITH AUTH
201
+
----
202
+
a|
203
+
New support for `WITH AUTH` to allow display users' auth providers with a separate row per user per auth provider.
204
+
205
+
a|
206
+
label:functionality[]
207
+
label:new[] +
208
+
[source, cypher, role="noheader"]
209
+
----
210
+
SET AUTH
211
+
----
212
+
a|
213
+
New privilege that allows a user to modify user link:{neo4j-docs-base-uri}/operations-manual/{page-version}/authentication-authorization/auth-providers[auth providers].
214
+
This is a sub-privilege of the `ALTER USER` privilege.
215
+
Like all `GRANT`/`DENY` commands this is only available in Enterprise Edition.
216
+
149
217
|===
150
218
151
219
[[cypher-deprecations-additions-removals-5.23]]
@@ -277,6 +345,23 @@ The column is a `STRING` value specifying a replacement function/procedure if th
277
345
| Feature
278
346
| Details
279
347
348
+
a|
349
+
label:functionality[]
350
+
label:new[]
351
+
[source, cypher, role=noheader]
352
+
----
353
+
GRANT READ {*} ON GRAPH * FOR (n) WHERE n.securityLevel > 3 TO regularUsers
354
+
----
355
+
[source, cypher, role=noheader]
356
+
----
357
+
GRANT TRAVERSE ON GRAPH * FOR (n:Email) WHERE n.classification IS NULL TO regularUsers
358
+
----
359
+
[source, cypher, role=noheader]
360
+
----
361
+
DENY MATCH {*} ON GRAPH * FOR (n) WHERE n.classification <> 'UNCLASSIFIED' TO regularUsers
362
+
----
363
+
| Introduction of link:{neo4j-docs-base-uri}/operations-manual/{page-version}/authentication-authorization/property-based-access-control[property-based access control] for read privileges. The ability to read, traverse and match nodes based on node property values is now supported in Enterprise Edition.
364
+
280
365
a|
281
366
label:functionality[]
282
367
label:new[]
@@ -288,7 +373,6 @@ RETURN a.name, a.year
288
373
----
289
374
| Extension of the xref:clauses/load-csv.adoc#google-cloud-storage[LOAD CSV] clause to allow loading CSV files from Google Cloud Storage URIs.
@@ -432,60 +426,60 @@ Similar to xref:clauses/optional-match.adoc[`OPTIONAL MATCH`] any empty rows pro
432
426
.Difference between using `CALL` and `OPTIONAL CALL`
433
427
====
434
428
435
-
This example, which finds the friends of each `Player` and xref:functions/aggregating.adoc#functions-count[counts] the number of friends per player, highlights the difference between using `CALL` and `OPTIONAL CALL`.
429
+
This example, which finds the team that each `Player` plays for, highlights the difference between using `CALL` and `OPTIONAL CALL`.
436
430
437
431
.Regular subquery `CALL`
438
432
[source, cypher]
439
433
----
440
434
MATCH (p:Player)
441
435
CALL (p) {
442
-
MATCH (p)-[:FRIEND_OF]->(friend:Player)
443
-
RETURN friend
436
+
MATCH (p)-[:PLAYS_FOR]->(team:Team)
437
+
RETURN team
444
438
}
445
-
RETURN p.name AS playerName, count(friend) AS numberOfFriends
@@ -495,8 +489,8 @@ Now, all `Player` nodes, regardless of whether they have any friends or not, are
495
489
[[call-execution-order]]
496
490
== Execution order of CALL subqueries
497
491
498
-
The order in which subqueries are executed is not defined.
499
-
If a query result depends on the order of execution of subqueries, an `ORDER BY` clause should precede the `CALL` clause.
492
+
The order in which rows from the outer scope are passed into subqueries is not defined.
493
+
If the results of the subquery depend on the order of these rows, use an `ORDER BY` clause before the `CALL` clause to guarantee a specific processing order for the rows.
@@ -641,39 +635,33 @@ The result of the `CALL` subquery is the combined result of evaluating the subqu
641
635
642
636
.`CALL` subquery changing returned rows of outer query
643
637
====
644
-
The following example finds the name of each `Player` and the names of their friends.
645
-
No rows are returned for the `Player` nodes without any `FRIEND_OF` relationships, the number of results of the subquery thus changed the number of results of the enclosing query.
638
+
The following example finds the name of each `Player` and the team they play for.
639
+
No rows are returned for `Player C`, since they are not connected to a `Team` with a `PLAYS_FOR` relationship.
640
+
The number of results of the subquery thus changed the number of results of the enclosing query.
* `CALL` subqueries optimize data handling and query efficiency, and can perform changes to the database.
773
761
774
-
* `CALL` subqueries enable progressive data transformation and can accumulate results across multiple row executions.
762
+
* `CALL` subqueries allow for row-by-row data transformation and enable the accumulation of results across multiple rows, facilitating complex operations that depend on intermediate or aggregated data.
775
763
776
764
* `CALL` subqueries can only refer to variables from the enclosing query if they are explicitly imported by either a variable scope clause or an importing `WITH` clause (deprecated).
0 commit comments