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
Copy file name to clipboardExpand all lines: modules/ROOT/pages/changelogs.adoc
-7Lines changed: 0 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,15 +1,8 @@
1
1
:description: This page lists all changes to status codes per Neo4j version.
2
2
= Changes to status codes per Neo4j version
3
3
4
-
== Neo4j 5.26
5
-
6
-
**Changed:**
7
-
Using differently ordered return items in a `UNION [ALL]` clause has been undeprecated following cost-benefit analysis and valuable user feedback.
8
-
9
4
== Neo4j 5.25
10
5
11
-
**New:**
12
-
13
6
Starting from 5.25, the query log includes the GQL error information under the JSON object `errorInfo`.
14
7
For more information, see link:https://neo4j.com/docs/operations-manual/current/monitoring/logging/#gql-error-information[Operations Manual -> GQL error information].
Copy file name to clipboardExpand all lines: modules/ROOT/pages/errors/all-errors.adoc
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,13 +2,13 @@
2
2
3
3
4
4
[[neo4j-errors]]
5
-
= List of Neo4j codes
5
+
= List of Neo4j error codes
6
6
7
7
This page lists the current Neo4j error codes, which will be replaced by xref:errors/gql-errors.adoc[GQLSTATUS error codes] in the future.
8
8
9
9
Error codes are returned by the server when the execution of a query fails.
10
10
They always have the severity level `ERROR`.
11
-
Errors are grouped based on the type of the Neo4j status code:
11
+
Errors are grouped based on the type of the Neo4j code:
12
12
13
13
Client errors::
14
14
These errors are caused by the client (user input or user application) and are usually related to the request itself.
@@ -17,11 +17,11 @@ The Neo4j codes for client errors have the prefix `Neo.ClientError`.
17
17
Transient errors::
18
18
These errors are detected by the server and are usually related to some kind of database unavailability, such as limits reached, out-of-memory, timeouts, etc.
19
19
The error can be temporary, and the request could succeed if retried.
20
-
The Neo4j status codes for transient errors have the prefix Neo.`TransientError`.
20
+
The Neo4j codes for transient errors have the prefix Neo.`TransientError`.
21
21
22
22
Database errors::
23
23
These errors are caused by the database and are usually related to the database state.
24
-
The Neo4j status codes for database errors have the prefix `Neo.DatabaseError`.
24
+
The Neo4j codes for database errors have the prefix `Neo.DatabaseError`.
25
25
26
26
This page contains lists of all Neo4j errors, grouped by type.
Copy file name to clipboardExpand all lines: modules/ROOT/pages/errors/index.adoc
+27-30Lines changed: 27 additions & 30 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,31 +3,37 @@
3
3
= Server errors
4
4
5
5
The Neo4j DBMS returns a server error to indicate that the outcome of a Cypher query or command execution is unsuccessful.
6
+
The driver receives these erors and sends them to the Neo4j tools (e.g. Browser, Bloom, Cypher Shell) or the user application, which display them to the user.
6
7
7
-
Starting from version 5.25, the Neo4j error codes have an additional GQL-status object along with the Neo4j exception that provides information about the status of a Cypher query or command execution in compliance with the link:https://www.iso.org/standard/76120.html[ISO/IEC 39075:2024(en) - Information technology - Database languages - GQL Standard].
8
+
Starting from version 5.26, the Neo4j error codes have an additional GQL-status object along with the Neo4j exception that provides information about the status of a Cypher query or command execution in compliance with the link:https://www.iso.org/standard/76120.html[ISO/IEC 39075:2024(en) - Information technology - Database languages - GQL Standard].
9
+
This additional GQL-status object is also displayed in the query log from Neo4j 5.25.
10
+
For more information, see link:https://neo4j.com/docs/operations-manual/current/monitoring/logging/#gql-error-information[Operations Manual -> GQL error information].
8
11
9
12
[NOTE]
10
13
====
11
-
This additional GQL-status object is currently displayed only in the query log.
12
-
For more information, see link:https://neo4j.com/docs/operations-manual/current/monitoring/logging/#gql-error-information[Operations Manual -> GQL error information].
14
+
The default GQLSTATUS code 50N42 is returned when an exception does not have a GQL-status object.
15
+
Starting from Neo4j 5.25, we started adding GQL objects to exceptions.
16
+
Therefore, you can expect many 50N42 codes during this transition period.
17
+
However, it is important not to rely on this default code, as future Neo4j versions might change it by adding an appropriate GQL object to the exception.
18
+
Additionally, GQL codes for external procedures are not yet stable.
13
19
====
14
20
15
-
This page describes the GQL-status object and the Neo4j error frameworks, their structure, the objects they provide for errors, and how to interpret them.
16
-
It also explains the error internals and the server-driver compatibility for both the GQLSTATUS and errors.
21
+
This page describes the GQL-status and the Neo4j-status object frameworks for errors, their structure, the objects they provide for errors, and how to interpret them.
22
+
It also explains the error internals and the server-driver compatibility for both the GQLSTATUS and errors.
17
23
18
24
[role=label--version-5.25]
19
25
[[gqlstatus-error-object]]
20
26
== GQL-status error object
21
27
22
-
In the GQL-status object framework, errors are an implementation-defined subset of the GQL-status objects that cover exceptions.
23
-
24
-
In GQL, the execution of a query from user to server always has an outcome, called the _execution outcome_.
25
-
The execution outcome is a list of GQL-status objects ordered by the following precedence rules:
28
+
In the GQL-status object framework, when a user executes a query to the server, it always produces a result known as the _execution outcome_.
29
+
If an error occurs during execution, the outcome is recorded as an exception condition, indicating a failed outcome with no result.
30
+
The execution outcome for errors is represented as a list of GQL-status objects with a failed outcome, which are organized according to the following precedence rules:
26
31
27
32
. Every exception that results in a transaction rollback takes precedence over other exceptions.
28
33
. Every exception takes precedence over any completion condition.
34
+
For completion conditions, see the xref:notifications/index.adoc#gqlstatus-notification-object[GQL-status notification object].
29
35
30
-
The GQL-status object also includes the Neo4j-specific information, such as the severity level and the error classification.
36
+
The GQL-status object also includes Neo4j-specific information, such as severity level and error classification.
31
37
32
38
Each GQL-status object consists of the following fields:
33
39
@@ -39,10 +45,11 @@ a| A 5-character string that is the concatenation of a 2-character class code fo
39
45
|StatusDescription
40
46
a| A human-readable description of the GQLSTATUS, which consists of a condition, a subcondition, and an optional additional text about the condition.
41
47
The condition and subcondition are textual representations of the class and subclass codes, respectively.
48
+
The format is `error: condition - subcondition. AdditionalInfo`.
42
49
The subcondition for the subclass 000 is empty.
43
50
| DiagnosticRecord
44
51
a| Extra information about the status, given as key-value pairs, both on the server and driver side.
45
-
To retrieve the full diagnostic record, you can use the `diagnosticRecord()` method on both the server and driver sides.
52
+
To retrieve the full diagnostic record, you can use the `diagnosticRecord()` on the server side or the corresponding method on the driver sides.
46
53
Additional helper methods are exposed for some useful fields.
47
54
[cols="<1s,<4"]
48
55
!===
@@ -57,16 +64,15 @@ Additional helper methods are exposed for some useful fields.
57
64
!===
58
65
|===
59
66
60
-
A GQL-status error object can also contain an optional wrapped GQL-status object.
61
-
This wrapped object is referred to as a `cause` and used to provide additional, more specific diagnostic information.
67
+
A GQL-status error object can also contain an optional GQL-status object that represents the cause of the error and is used to provide additional, more specific diagnostic information.
62
68
63
69
[[gqlstatus-neo4j-defined-codes]]
64
70
== Classes of GQLSTATUS error codes
65
71
66
72
The GQLSTATUS codes are divided into classes and subclasses.
67
73
The class code is a 2-character string that indicates the general condition of the status, such as connection exception, data exception, etc.
68
74
The subclass code is a 3-character string that provides more detailed information about the condition.
69
-
The Neo4j-define subclasses start with N, followed by a 2-digit number, while the ones that do not start with N are standard-defined subclasses.
75
+
//Currently, the Neo4j-defined subclasses start with N or I, followed by a 2-digit number, while the standard-defined subclasses start with 0-4 or A, B, C, D, E, F, G, or H and a 2-digit number.
70
76
71
77
The following table lists the GQLSTATUS classes and their meanings:
72
78
@@ -94,10 +100,10 @@ The following table lists the GQLSTATUS classes and their meanings:
94
100
| procedure exception
95
101
|===
96
102
97
-
[[-error-object]]
98
-
== Neo4j error object
103
+
[[neo4j-error-object]]
104
+
== Neo4j-status error object
99
105
100
-
The Neo4j error object contains diagnostic information representing the *unsuccessful* outcome of a Cypher query or command execution, including severity, status code, category, description, message, and position in the query text where the error is relevant.
106
+
The Neo4j-status object for errors contains diagnostic information representing the *unsuccessful* outcome of a Cypher query or command execution, including severity, status code, category, description, message, and position in the query text where the error is relevant.
101
107
Depending on the application, some of the fields from the error object might not be visible.
102
108
103
109
The error object consists of the following fields:
@@ -164,8 +170,8 @@ Most of these implement the `HasStatus` interface, which means they have a statu
164
170
165
171
On the server side, an exception contains normal Java constructors and methods like `getMessage()`, `getCause()`, etc., and additionally the `status()` method from the `HasStatus` API, which returns the status code.
166
172
167
-
Starting from 5.25, the exceptions also get new compulsary fields for `gqlStatus`, `statusDescription`, `diagnosticRecord`, and an optional field for `cause`.
168
-
The cause field is a wrapped underlying Neo4j exception, which in turn has its own GQLSTATUS, statusdescription, diagnostic record, and message. +
173
+
The exceptions also get new compulsary fields for `gqlStatus`, `statusDescription`, `diagnosticRecord`, and an optional field for `cause`.
174
+
The cause field in turn has its own GQLSTATUS, statusdescription, diagnostic record, and message. +
169
175
The `getMessage()` method is kept as Java exceptions inherently have this method.
170
176
And a new classification field is added to cover the division of client errors, transient errors, and database errors, which today is part of the Neo4j code.
171
177
All of these fields construct the GQLSTATUS object, which is sent to the driver as part of the Failure Bolt message.
@@ -186,18 +192,9 @@ As the clients can have separate driver versions, they may have different error
186
192
187
193
In Neo4j 5.25, the default JSON template for the query log is updated to include `errorInfo` entry.
188
194
This entry contains `GQLSTATUS`, `statusDescription`, `classification`, `position` (if applicable), and `cause` (if applicable) with the same entries.
189
-
The `failureReason` entry is deprecated from 5.26.
190
-
191
-
[NOTE]
192
-
====
193
-
The default GQLSTATUS code 50N42 is returned when an exception does not have a GQL-status object.
194
-
Starting from Neo4j 5.25, we started adding GQL objects to exceptions.
195
-
Therefore, you can expect many 50N42 codes during this transition period.
196
-
However, it is important not to rely on this default code, as future Neo4j versions might change it by adding an appropriate GQL object to the exception.
197
-
Additionally, GQL codes for external procedures are not yet stable.
198
-
====
195
+
//The `failureReason` entry is deprecated from ...
199
196
200
-
// Starting from Neo4j 2025.01, a new JSON template is available for the query log, which is the default set in server_log.xml.
197
+
// Starting from Neo4j 2025.01, a new JSON template is available for the query log, which is the default set in _server_log.xml_.
201
198
// It contains the `errorInfo` entry, but not the `failureReason` entry, which is switched off by default.
Copy file name to clipboardExpand all lines: modules/ROOT/pages/notifications/index.adoc
+18-23Lines changed: 18 additions & 23 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,43 +3,38 @@
3
3
[[notifications]]
4
4
= Server notifications
5
5
6
-
After a successful query execution, the Neo4j server sends notifications to provide advice on how to improve the query's quality or give additional information about the query execution.
6
+
After a successful query execution, the Neo4j server sends notifications to give additional information about the query execution or provide advice on how to improve the query's quality.
7
7
The driver receives these notifications and sends them to the Neo4j tools (e.g. Browser, Bloom, Cypher Shell) or the user application, which display them to the user.
8
8
9
9
From version 5.23, Neo4j has a new GqlStatusObject API in addition to the existing Notification API (deprecated since 5.26).
10
10
The GqlStatusObject API provides information about the status of a Cypher query or command execution in compliance with the link:https://www.iso.org/standard/76120.html[ISO/IEC 39075:2024(en) - Information technology - Database languages - GQL Standard].
11
11
12
-
This page describes the GQL-status object and the Neo4j notification frameworks, their structure, the objects they provide for notifications, and how to interpret them.
12
+
This page describes the GQL-status object and the Neo4j notification frameworks, their structure, the objects they provide for notification, and how to interpret them.
13
13
It also explains the server notification grouping and filtering, the notification internals, and the server-driver compatibility for both the Notification and GqlStatusObject APIs.
14
14
15
15
[role=label--version-5.23]
16
16
[[gqlstatus-notification-object]]
17
17
== GQL-status notification object
18
18
19
-
In the GQL-status object framework, notifications are an implementation-defined subset of the GQL-status objects that cover informational notes and warnings, but not errors, `SUCCESS`, `NO DATA`, or `OMITTED RESULT`.
20
-
For the latter, see <<general-codes-for-success, General codes for success>>. +
21
-
22
-
In GQL, the execution of a query from user to server always has an outcome, called the _execution outcome_.
23
-
The execution outcome is a list of GQL-status objects, ordered by the following precedence, where the first object in the list is the primary GQL-status object:
19
+
In the GQL-status object framework, when a user executes a query to the server, it always produces a result known as the _execution outcome_.
20
+
If no error occurs during execution, the outcome is recorded as a completion condition, indicating a successful result with a regular non-empty result, an omitted result, or no data.
21
+
It is represented as a list of GQL-status objects, which are organized according to the following precedence rules, where the first object in the list is the primary GQL-status object:
24
22
25
23
. `NO DATA` has precedence over `WARNING`.
26
24
. `WARNING` has precedence over the `SUCCESSFUL COMPLETION` subclass.
27
25
. `SUCCESSFUL COMPLETION` subclass has precedence over `INFORMATIONAL`.
28
26
. `INFORMATIONAL` is the condition with the least precedence.
29
27
28
+
For more information about `SUCCESSFUL COMPLETION`, `NO DATA`, or `OMITTED RESULT`, see <<general-codes-for-success, General codes for success>>. +
29
+
The GQL-status object can contain multiple GQL-status objects, where each object represents a different condition of the query execution.
30
30
The primary GQL-status object describes the condition with the greatest precedence and is always present.
31
31
All other GQL-status objects in the list are additional GQL-status objects.
32
32
33
-
The GQL-status object also includes the Neo4j-specific information, such as the severity level and the classification of the notification, which can be used for filtering.
33
+
The GQL-status object also includes Neo4j-specific information, such as severity level and notification classification, which can be used for filtering.
34
34
For more information about notification grouping and filtering, see <<notification-grouping-and-filtering>>.
35
35
36
36
Each GQL-status object consists of the following fields:
37
-
— A GQLSTATUS, which is a character string identifying a condition as defined in Subclause 23.1,
38
-
“GQLSTATUS”.
39
-
— A status description, which is a character string describing the GQLSTATUS.
40
-
— A record with diagnostic information as defined in Subclause 23.2, “Diagnostic records”.
41
-
— An optional nested GQL-status object for providing additional diagnostic information, such as a
42
-
cause.
37
+
43
38
.GQLSTATUS notification object
44
39
[cols="<1s,<4"]
45
40
|===
@@ -50,7 +45,7 @@ a| A human-readable description of the GQLSTATUS, which consists of a condition,
50
45
The condition and subcondition are textual representations of the class and subclass codes, respectively.
51
46
| DiagnosticRecord
52
47
a| Extra information about the status, given as key-value pairs, both on the server and driver side.
53
-
To retrieve the full diagnostic record, you can use the `diagnosticRecord()` method on both the server and driver sides.
48
+
To retrieve the full diagnostic record, you can use the `diagnosticRecord()` on the server side or the corresponding method on the driver sides.
54
49
Additional helper methods are exposed for some useful fields.
55
50
[cols="<1s,<4"]
56
51
!===
@@ -154,21 +149,21 @@ The following table lists the Neo4j-defined groups of GQLSTATUS codes and their
154
149
|===
155
150
156
151
[role=label--deprecated-5.26]
157
-
[[-notification-object]]
158
-
== notification object
152
+
[[neo4j-notification-object]]
153
+
== Neo4j-status notification object
159
154
160
-
The Neo4j notification object contains diagnostic information representing the successful outcome of a Cypher query or command execution, including severity, the `ClientNotification` code, category, title, description, and position in the query text where the notification is relevant.
155
+
The Neo4j-status object for notifications contains diagnostic information representing the successful outcome of a Cypher query or command execution, including severity, the `ClientNotification` code, category, title, description, and position in the query text where the notification is relevant.
161
156
Depending on the application, some of the fields from the notification object might not be visible.
162
157
163
-
The notification object consists of the following fields:
158
+
The notification object consists of the following fields:
164
159
165
-
.Neo4j notification object
160
+
.Neo4j notification object
166
161
[cols="<1s,<4"]
167
162
|===
168
-
|Neo4j code
169
-
a|The Neo4j status code in the form of `Neo.ClientNotification.[SubType].[Name]`.
163
+
|Neo4j code
164
+
a|The Neo4j code in the form of `Neo.ClientNotification.[SubType].[Name]`.
0 commit comments