Skip to content

Commit 06fac3b

Browse files
Merge branch 'dev' into dynamic2
2 parents 051e14e + afeeb5a commit 06fac3b

File tree

16 files changed

+250
-199
lines changed

16 files changed

+250
-199
lines changed

README.adoc

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
= Neo4j Cypher Manual
22

3+
This page covers the following topics:
4+
5+
* xref:README.adoc#building-locally[]
6+
* xref:README.adoc#raising-prs[]
7+
* xref:README.adoc#documenting-changes[]
8+
* xref:README.adoc#cypher-gql[]
9+
10+
11+
[[building-locally]]
312
== Building locally
413

514
=== Prereqs
@@ -39,7 +48,7 @@ When you run `npm start`, the project is monitored for updates to asciidoc files
3948

4049
If a change to an asciidoc file is detected, the site is automatically rebuilt.
4150

42-
51+
[[raising-prs]]
4352
== Raising PRs
4453

4554

@@ -68,3 +77,43 @@ There are a few edge cases where we might want to work only on the current branc
6877
** Create a feature branch from `dev`, to be merged into `dev` when appropriate.
6978
* When a new version is ready to published, the `5.x` branch will get a git tag, named with the exact version (for example, **5.1.0**), signifying that this point-in-time marks the completion of the work for that minor release.
7079
* Updates merged into the `dev` branch for the next release are cherry-picked into the `5.x` branch.
80+
81+
[[documenting-changes]]
82+
== Documenting changes to Cypher
83+
84+
New, updated, deprecated, and removed features must be recorded on the xref:modules/ROOT/pages/deprecations-additions-removals-compatibility.adoc[Deprecations, additions, and compatibility] page.
85+
86+
New and deprecated features should also be marked with a label:
87+
88+
* If the impacted feature has its own header in the Cypher Manual, use the following:
89+
90+
....
91+
[role=label--new-5.x]
92+
== Header
93+
....
94+
95+
....
96+
[role=label--deprecated]
97+
== Header
98+
....
99+
100+
* If the impacted feature is documented within a table (such as a return column in a `SHOW` command), use the following:
101+
102+
`featureX` label:new[Introduced in 5.x] +
103+
`featureY` label:deprecated[]
104+
105+
Labels can be difficult to apply to updated features.
106+
In these cases, it is often preferable to note the change in a sentence.
107+
For example: "As of Neo4j 5.x, `featureX` supports ..."
108+
109+
Removed features should be deleted from the Cypher Manual.
110+
111+
[[cypher-gql]]
112+
== Cypher and GQL
113+
114+
When documenting a new Cypher feature, its relationship with GQL must be considered:
115+
116+
* If the feature is part of GQL's mandatory features, it should be recorded on the page xref:modules/ROOT/pages/appendix/gql-conformance/supported-mandatory.adoc[Supported mandatory GQL features].
117+
* If the feature is part of GQL's optional features, it should be recorded on the page xref:modules/ROOT/pages/appendix/gql-conformance/supported-optional.adoc[Supported optional GQL features].
118+
* if the feature adds functionality for which there exists an analogous, optional GQL feature, it should be recorded on the page xref:modules/ROOT/pages/appendix/gql-conformance/analogous-cypher.adoc[Optional GQL features and analogous Cypher].
119+
* If the feature adds functionality for which there exists no GQL equivalent, it should be recorded on the page xref:modules/ROOT/pages/appendix/gql-conformance/additional-cypher.adoc[Additional Cypher features].

modules/ROOT/pages/clauses/listing-settings.adoc

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -180,13 +180,13 @@ For a full list of all available settings in Neo4j, refer to link:{neo4j-docs-ba
180180
== Listing settings with filtering on output columns
181181

182182
The listed settings can be filtered by using the `WHERE` clause.
183-
For example, the following query returns the name, value, and description of the first three settings starting with 'dbms':
183+
For example, the following query returns the name, value, and description of the first three settings starting with 'server':
184184

185185
.Query
186186
[source, cypher]
187187
----
188188
SHOW SETTINGS YIELD name, value, description
189-
WHERE name STARTS WITH 'dbms'
189+
WHERE name STARTS WITH 'server'
190190
RETURN name, value, description
191191
LIMIT 3
192192
----
@@ -196,17 +196,17 @@ LIMIT 3
196196
|===
197197
| name | value | description
198198

199-
| "dbms.cluster.catchup.client_inactivity_timeout"
200-
| "10m"
201-
| "The catchup protocol times out if the given duration elapses with no network activity. Every message received by the client from the server extends the timeout duration."
199+
| "server.backup.enabled"
200+
| "true"
201+
| "Enable support for running online backups."
202202

203-
| "dbms.cluster.discovery.endpoints"
204-
| null
205-
| "A comma-separated list of endpoints that a server should contact in order to discover other cluster members. Typically, all cluster members, including the current server, must be specified in this list. The setting configures the endpoints for Discovery service V1."
203+
| "server.backup.exec_connector.command"
204+
| ""
205+
| "Command to execute for ExecDataConnector list"
206206

207-
| "dbms.cluster.discovery.log_level"
208-
| "WARN"
209-
| "The level of middleware logging."
207+
| "server.backup.exec_connector.scheme"
208+
| ""
209+
| "Schemes ExecDataConnector will match on"
210210

211211
3+d|Rows: 3
212212
|===

modules/ROOT/pages/clauses/load-csv.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ You can import data from a number of different cloud storages:
175175

176176
* xref:clauses/load-csv.adoc#azure-cloud-storage[Azure Cloud Storage]
177177
* xref:clauses/load-csv.adoc#google-cloud-storage[Google Cloud Storage]
178-
* ref:clauses/load-csv.adoc#aws-s3[AWS S3]
178+
* xref:clauses/load-csv.adoc#aws-s3[AWS S3]
179179

180180
See link:{neo4j-docs-base-uri}/operations-manual/current/backup-restore/restore-dump/#load-dump-cloud-storage[Operations Manual -> Load a dump from a cloud storage] on how to set up access to cloud storages.
181181

modules/ROOT/pages/constraints/managing-constraints.adoc

Lines changed: 0 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -910,7 +910,6 @@ Constraint already exists: Constraint( id=7, name='book_title_year', type='UNIQU
910910
=== Constraints and indexes
911911

912912
* xref:constraints/managing-constraints.adoc#constraints-and-backing-indexes[]
913-
* xref:constraints/managing-constraints.adoc#create-constraint-with-index-provider[]
914913
* xref:constraints/managing-constraints.adoc#constraint-failures-and-indexes[]
915914

916915
[[constraints-and-backing-indexes]]
@@ -994,60 +993,6 @@ SHOW INDEXES WHERE owningConstraint IS NOT NULL
994993
[NOTE]
995994
Property existence and property type constraints are not backed by indexes.
996995

997-
[[create-constraint-with-index-provider]]
998-
==== Creating constraints with an index provider
999-
1000-
Because property uniqueness and key constraints have backing indexes, an index provider can be provided when creating these constraints using the `OPTIONS` clause and the `indexProvider` option.
1001-
1002-
The only valid value for the index provider is:
1003-
1004-
* `range-1.0` label:default[]
1005-
1006-
1007-
.Create a node key constraint with a specified index provider
1008-
======
1009-
1010-
.Create a constraint requiring `Actor` nodes to have a unique `surname` property as a node key, specifying `range-1.0` as index provider
1011-
[source, cypher]
1012-
----
1013-
CREATE CONSTRAINT constraint_with_provider
1014-
FOR (actor:Actor) REQUIRE actor.surname IS NODE KEY
1015-
OPTIONS {
1016-
indexProvider: 'range-1.0'
1017-
}
1018-
----
1019-
1020-
.Result
1021-
[source, queryresult]
1022-
----
1023-
Added 1 constraint.
1024-
----
1025-
1026-
======
1027-
1028-
.Create a relationship property uniqueness constraint with a specified index provider
1029-
======
1030-
1031-
.Create a constraint requiring `SEQUEL_OF` relationships to have a unique combination of `order`, `seriesTitle`, and `number` properties, specifying `range-1.0` as index provider
1032-
[source, cypher]
1033-
----
1034-
CREATE CONSTRAINT rel_constraint_with_options
1035-
FOR ()-[sequel:SEQUEL_OF]-() REQUIRE (sequel.order, sequel.seriesTitle, sequel.number) IS UNIQUE
1036-
OPTIONS {
1037-
indexProvider: 'range-1.0'
1038-
}
1039-
----
1040-
1041-
.Result
1042-
[source, queryresult]
1043-
----
1044-
Added 1 constraint.
1045-
----
1046-
1047-
======
1048-
1049-
There are no valid index configuration values for the constraint-backing range indexes.
1050-
1051996
[[constraint-failures-and-indexes]]
1052997
==== Constraint failures and indexes
1053998

@@ -1509,7 +1454,6 @@ SHOW CONSTRAINTS
15091454
| 10 | "author_name" | "NODE_PROPERTY_EXISTENCE" | "NODE" | ["Author"] | ["name"] | NULL | NULL |
15101455
| 3 | "book_isbn" | "UNIQUENESS" | "NODE" | ["Book"] | ["isbn"] | "book_isbn" | NULL |
15111456
| 7 | "book_title_year" | "UNIQUENESS" | "NODE" | ["Book"] | ["title", "publicationYear"] | "book_title_year" | NULL |
1512-
| 28 | "constraint_with_provider" | "NODE_KEY" | "NODE" | ["Actor"] | ["surname"] | "constraint_with_provider" | NULL |
15131457
| 17 | "director_imdbId" | "NODE_KEY" | "NODE" | ["Director"] | ["imdbId"] | "director_imdbId" | NULL |
15141458
| 23 | "knows_since_how" | "RELATIONSHIP_KEY" | "RELATIONSHIP" | ["KNOWS"] | ["since", "how"] | "knows_since_how" | NULL |
15151459
| 14 | "movie_tagline" | "NODE_PROPERTY_TYPE" | "NODE" | ["Movie"] | ["tagline"] | NULL | "STRING | LIST<STRING NOT NULL>" |
@@ -1519,7 +1463,6 @@ SHOW CONSTRAINTS
15191463
| 13 | "part_of" | "RELATIONSHIP_PROPERTY_TYPE" | "RELATIONSHIP" | ["PART_OF"] | ["order"] | NULL | "INTEGER" |
15201464
| 15 | "part_of_tags" | "RELATIONSHIP_PROPERTY_TYPE" | "RELATIONSHIP" | ["PART_OF"] | ["tags"] | NULL | "STRING | LIST<STRING NOT NULL>" |
15211465
| 9 | "prequels" | "RELATIONSHIP_UNIQUENESS" | "RELATIONSHIP" | ["PREQUEL_OF"] | ["order", "author"] | "prequels" | NULL |
1522-
| 30 | "rel_constraint_with_options" | "RELATIONSHIP_UNIQUENESS" | "RELATIONSHIP" | ["SEQUEL_OF"] | ["order", "seriesTitle", "number"] | "rel_constraint_with_options" | NULL |
15231466
| 26 | "rel_exist_param" | "RELATIONSHIP_PROPERTY_EXISTENCE" | "RELATIONSHIP" | ["WROTE"] | ["published"] | NULL | NULL |
15241467
| 5 | "sequels" | "RELATIONSHIP_UNIQUENESS" | "RELATIONSHIP" | ["SEQUEL_OF"] | ["order"] | "sequels" | NULL |
15251468
| 11 | "wrote_year" | "RELATIONSHIP_PROPERTY_EXISTENCE" | "RELATIONSHIP" | ["WROTE"] | ["year"] | NULL | NULL |
@@ -1549,7 +1492,6 @@ SHOW CONSTRAINTS YIELD *
15491492
| 10 | "author_name" | "NODE_PROPERTY_EXISTENCE" | "NODE" | ["Author"] | ["name"] | NULL | NULL | NULL | "CREATE CONSTRAINT `author_name` FOR (n:`Author`) REQUIRE (n.`name`) IS NOT NULL" |
15501493
| 3 | "book_isbn" | "UNIQUENESS" | "NODE" | ["Book"] | ["isbn"] | "book_isbn" | NULL | {indexConfig: {}, indexProvider: "range-1.0"} | "CREATE CONSTRAINT `book_isbn` FOR (n:`Book`) REQUIRE (n.`isbn`) IS UNIQUE" |
15511494
| 7 | "book_title_year" | "UNIQUENESS" | "NODE" | ["Book"] | ["title", "publicationYear"] | "book_title_year" | NULL | {indexConfig: {}, indexProvider: "range-1.0"} | "CREATE CONSTRAINT `book_title_year` FOR (n:`Book`) REQUIRE (n.`title`, n.`publicationYear`) IS UNIQUE" |
1552-
| 28 | "constraint_with_provider" | "NODE_KEY" | "NODE" | ["Actor"] | ["surname"] | "constraint_with_provider" | NULL | {indexConfig: {}, indexProvider: "range-1.0"} | "CREATE CONSTRAINT `constraint_with_provider` FOR (n:`Actor`) REQUIRE (n.`surname`) IS NODE KEY" |
15531495
| 17 | "director_imdbId" | "NODE_KEY" | "NODE" | ["Director"] | ["imdbId"] | "director_imdbId" | NULL | {indexConfig: {}, indexProvider: "range-1.0"} | "CREATE CONSTRAINT `director_imdbId` FOR (n:`Director`) REQUIRE (n.`imdbId`) IS NODE KEY" |
15541496
| 23 | "knows_since_how" | "RELATIONSHIP_KEY" | "RELATIONSHIP" | ["KNOWS"] | ["since", "how"] | "knows_since_how" | NULL | {indexConfig: {}, indexProvider: "range-1.0"} | "CREATE CONSTRAINT `knows_since_how` FOR ()-[r:`KNOWS`]-() REQUIRE (r.`since`, r.`how`) IS RELATIONSHIP KEY" |
15551497
| 14 | "movie_tagline" | "NODE_PROPERTY_TYPE" | "NODE" | ["Movie"] | ["tagline"] | NULL | "STRING | LIST<STRING NOT NULL>" | NULL | "CREATE CONSTRAINT `movie_tagline` FOR (n:`Movie`) REQUIRE (n.`tagline`) IS :: STRING | LIST<STRING NOT NULL>" |
@@ -1559,7 +1501,6 @@ SHOW CONSTRAINTS YIELD *
15591501
| 13 | "part_of" | "RELATIONSHIP_PROPERTY_TYPE" | "RELATIONSHIP" | ["PART_OF"] | ["order"] | NULL | "INTEGER" | NULL | "CREATE CONSTRAINT `part_of` FOR ()-[r:`PART_OF`]-() REQUIRE (r.`order`) IS :: INTEGER" |
15601502
| 15 | "part_of_tags" | "RELATIONSHIP_PROPERTY_TYPE" | "RELATIONSHIP" | ["PART_OF"] | ["tags"] | NULL | "STRING | LIST<STRING NOT NULL>" | NULL | "CREATE CONSTRAINT `part_of_tags` FOR ()-[r:`PART_OF`]-() REQUIRE (r.`tags`) IS :: STRING | LIST<STRING NOT NULL>" |
15611503
| 9 | "prequels" | "RELATIONSHIP_UNIQUENESS" | "RELATIONSHIP" | ["PREQUEL_OF"] | ["order", "author"] | "prequels" | NULL | {indexConfig: {}, indexProvider: "range-1.0"} | "CREATE CONSTRAINT `prequels` FOR ()-[r:`PREQUEL_OF`]-() REQUIRE (r.`order`, r.`author`) IS UNIQUE" |
1562-
| 30 | "rel_constraint_with_options" | "RELATIONSHIP_UNIQUENESS" | "RELATIONSHIP" | ["SEQUEL_OF"] | ["order", "seriesTitle", "number"] | "rel_constraint_with_options" | NULL | {indexConfig: {}, indexProvider: "range-1.0"} | "CREATE CONSTRAINT `rel_constraint_with_options` FOR ()-[r:`SEQUEL_OF`]-() REQUIRE (r.`order`, r.`seriesTitle`, r.`number`) IS UNIQUE" |
15631504
| 26 | "rel_exist_param" | "RELATIONSHIP_PROPERTY_EXISTENCE" | "RELATIONSHIP" | ["WROTE"] | ["published"] | NULL | NULL | NULL | "CREATE CONSTRAINT `rel_exist_param` FOR ()-[r:`WROTE`]-() REQUIRE (r.`published`) IS NOT NULL" |
15641505
| 5 | "sequels" | "RELATIONSHIP_UNIQUENESS" | "RELATIONSHIP" | ["SEQUEL_OF"] | ["order"] | "sequels" | NULL | {indexConfig: {}, indexProvider: "range-1.0"} | "CREATE CONSTRAINT `sequels` FOR ()-[r:`SEQUEL_OF`]-() REQUIRE (r.`order`) IS UNIQUE" |
15651506
| 11 | "wrote_year" | "RELATIONSHIP_PROPERTY_EXISTENCE" | "RELATIONSHIP" | ["WROTE"] | ["year"] | NULL | NULL | NULL | "CREATE CONSTRAINT `wrote_year` FOR ()-[r:`WROTE`]-() REQUIRE (r.`year`) IS NOT NULL" |
@@ -1594,7 +1535,6 @@ SHOW KEY CONSTRAINTS
15941535
| id | name | type | entityType | labelsOrTypes | properties | ownedIndex | propertyType |
15951536
+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
15961537
| 21 | "actor_fullname" | "NODE_KEY" | "NODE" | ["Actor"] | ["firstname", "surname"] | "actor_fullname" | NULL |
1597-
| 28 | "constraint_with_provider" | "NODE_KEY" | "NODE" | ["Actor"] | ["surname"] | "constraint_with_provider" | NULL |
15981538
| 17 | "director_imdbId" | "NODE_KEY" | "NODE" | ["Director"] | ["imdbId"] | "director_imdbId" | NULL |
15991539
| 23 | "knows_since_how" | "RELATIONSHIP_KEY" | "RELATIONSHIP" | ["KNOWS"] | ["since", "how"] | "knows_since_how" | NULL |
16001540
| 19 | "ownershipId" | "RELATIONSHIP_KEY" | "RELATIONSHIP" | ["OWNS"] | ["ownershipId"] | "ownershipId" | NULL |
@@ -1627,7 +1567,6 @@ WHERE entityType = 'RELATIONSHIP'
16271567
| 13 | "part_of" | "RELATIONSHIP_PROPERTY_TYPE" | "RELATIONSHIP" | ["PART_OF"] | ["order"] | NULL | "INTEGER" |
16281568
| 15 | "part_of_tags" | "RELATIONSHIP_PROPERTY_TYPE" | "RELATIONSHIP" | ["PART_OF"] | ["tags"] | NULL | "STRING | LIST<STRING NOT NULL>" |
16291569
| 9 | "prequels" | "RELATIONSHIP_UNIQUENESS" | "RELATIONSHIP" | ["PREQUEL_OF"] | ["order", "author"] | "prequels" | NULL |
1630-
| 30 | "rel_constraint_with_options" | "RELATIONSHIP_UNIQUENESS" | "RELATIONSHIP" | ["SEQUEL_OF"] | ["order", "seriesTitle", "number"] | "rel_constraint_with_options" | NULL |
16311570
| 26 | "rel_exist_param" | "RELATIONSHIP_PROPERTY_EXISTENCE" | "RELATIONSHIP" | ["WROTE"] | ["published"] | NULL | NULL |
16321571
| 5 | "sequels" | "RELATIONSHIP_UNIQUENESS" | "RELATIONSHIP" | ["SEQUEL_OF"] | ["order"] | "sequels" | NULL |
16331572
| 11 | "wrote_year" | "RELATIONSHIP_PROPERTY_EXISTENCE" | "RELATIONSHIP" | ["WROTE"] | ["year"] | NULL | NULL |
@@ -1669,7 +1608,6 @@ YIELD name, type, createStatement
16691608
| "part_of" | "RELATIONSHIP_PROPERTY_TYPE" | "CREATE CONSTRAINT `part_of` FOR ()-[r:`PART_OF`]-() REQUIRE (r.`order`) IS :: INTEGER" |
16701609
| "part_of_tags" | "RELATIONSHIP_PROPERTY_TYPE" | "CREATE CONSTRAINT `part_of_tags` FOR ()-[r:`PART_OF`]-() REQUIRE (r.`tags`) IS :: STRING | LIST<STRING NOT NULL>" |
16711610
| "prequels" | "RELATIONSHIP_UNIQUENESS" | "CREATE CONSTRAINT `prequels` FOR ()-[r:`PREQUEL_OF`]-() REQUIRE (r.`order`, r.`author`) IS UNIQUE" |
1672-
| "rel_constraint_with_options" | "RELATIONSHIP_UNIQUENESS" | "CREATE CONSTRAINT `rel_constraint_with_options` FOR ()-[r:`SEQUEL_OF`]-() REQUIRE (r.`order`, r.`seriesTitle`, r.`number`) IS UNIQUE" |
16731611
| "rel_exist_param" | "RELATIONSHIP_PROPERTY_EXISTENCE" | "CREATE CONSTRAINT `rel_exist_param` FOR ()-[r:`WROTE`]-() REQUIRE (r.`published`) IS NOT NULL" |
16741612
| "sequels" | "RELATIONSHIP_UNIQUENESS" | "CREATE CONSTRAINT `sequels` FOR ()-[r:`SEQUEL_OF`]-() REQUIRE (r.`order`) IS UNIQUE" |
16751613
| "wrote_year" | "RELATIONSHIP_PROPERTY_EXISTENCE" | "CREATE CONSTRAINT `wrote_year` FOR ()-[r:`WROTE`]-() REQUIRE (r.`year`) IS NOT NULL" |

0 commit comments

Comments
 (0)