Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
363 changes: 20 additions & 343 deletions modules/ROOT/pages/changelogs.adoc
Original file line number Diff line number Diff line change
@@ -1,355 +1,32 @@
:description: This page lists all changes to status codes per Neo4j version.
= Changes to status codes per Neo4j version
:description: This page lists changes to the error framework and deprecations.

== Neo4j 2025.01
**New:**
[options="header", cols="<1m,<1"]
|===
| GQLSTATUS
| Neo4j code
= Changes and deprecations

| 01N80
| Neo.ClientNotification.Cluster.ServerFailed
== 2025.05

| 01N81
| Neo.ClientNotification.Cluster.ServerCatchingUp
Starting from 2025.05, the `failureReason` in the JSON template of the query log, is deprecated and switched off by default.
Use the `errorInfo` entry instead.

| 01N82
| Neo.ClientNotification.Cluster.ServerNotAvailable
For more information about `errorInfo`, refer to link:https://neo4j.com/docs/operations-manual/current/monitoring/logging/#gql-error-information[Operations manual -> Logging -> GQL error information].

| 03N85
| Neo.ClientNotification.Cluster.ServerCaughtUp
== 2025.04

|===
Using the error messages programmatically is deprecated and might change in a future release.
Therefore, parsing the error messages or the status descriptions and incorporating them into scripts is not recommended.
If you need to handle errors programmatically, please use the GQLSTATUS error codes, for example, `22NC5`.

== 2025.01

//Starting from 2025.01, when using Cypher 25, queries using `WAIT` return the notifications listed above instead of result rows.
//The behaviour for Cypher 5 remains unchanged.
// * The diagnostic record also contains a `_status_parameters` field, which represents a map that contains all variable parts of the status description, such as labels, database names, Cypher clauses, etc.
// This field is used to provide more detailed information about the error.

== Neo4j 5.26
A new JSON template is available for the query log, which is the default set in _server_logs.xml_. +
For more details, see the link:https://neo4j.com/docs/operations-manual/current/monitoring/logging/#_json_format_log_entries[Operations manual -> Monitoring -> Logging].

**New:**

[options="header", cols="<1m,<1"]
|===
ifndef::backend-pdf[]
[discrete.glossary]
== Glossary

| GQLSTATUS
| Neo4j code

| 01N72
| Neo.ClientNotification.Statement.InsecureProtocol

| 42I50
| Neo.ClientError.Schema.TokenLengthError

|===

Starting from 5.26, Neo4j errors sent over drivers include new fields,
such as GQLSTATUS code, StatusDescription, and DiagnosticRecord.
For more information, see xref:errors/index.adoc#gqlstatus-error-object[GQL-status error object].


== Neo4j 5.25

Starting from 5.25, the query log includes the GQL error information under the JSON object `errorInfo`.
For more information, see link:https://neo4j.com/docs/operations-manual/current/monitoring/logging/#gql-error-information[Operations Manual -> GQL error information].

== Neo4j 5.24

**New:**

[options="header", cols="<1m,<1"]
|===

| GQLSTATUS
| Neo4j code

| 00N72
| Neo.ClientNotification.Security.AuthProviderNotDefined

| 01G11
| Neo.ClientNotification.Statement.AggregationSkippedNull

| 01N71
| Neo.ClientNotification.Security.ExternalAuthNotEnabled

| 03N61
| Neo.ClientNotification.Statement.RedundantOptionalProcedure

| 03N62
| Neo.ClientNotification.Statement.RedundantOptionalSubquery

| N/A
| Neo.TransientError.Invalid.ResourceExhaustion

|===

== Neo4j 5.23

From version 5.23, Neo4j has a new GqlStatusObject API in addition to the existing Notification API.

The GqlStatusObject API provides information about the status of a Cypher query or command execution in compliance with the GQL standard.
It includes GQLSTATUS code, StatusDescription, and DiagnosticRecord.
For more information, see xref:notifications/index.adoc#gqlstatus-notification-object[GQL-status notification object].

== Neo4j 5.17

**New:**

[source, status codes, role="noheader"]
-----
Neo.ClientNotification.Cluster.RequestedTopologyMatchedCurrentTopology
Neo.ClientNotification.Schema.IndexOrConstraintAlreadyExists
Neo.ClientNotification.Schema.IndexOrConstraintDoesNotExist
Neo.ClientError.Statement.InvalidTargetDatabaseError
-----

== Neo4j 5.15

**New:**

[source, status codes, role="noheader"]
-----
Neo.ClientNotification.Cluster.CordonedServersExistedDuringAllocation
-----

== Neo4j 5.14

**New:**

[source, status codes, role="noheader"]
-----
Neo.ClientNotification.Cluster.NoDatabasesReallocated
Neo.ClientNotification.Statement.SideEffectVisibility
-----

**Changed**

The usage of `Neo.ClientNotification.Statement.RuntimeExperimental` has been removed.

== Neo4j 5.13

**New:**

[source, status codes, role="noheader"]
-----
Neo.ClientNotification.Cluster.ServerAlreadyEnabled
Neo.ClientNotification.Cluster.ServerAlreadyCordoned
Neo.ClientError.ChangeDataCapture.InvalidIdentifier
Neo.TransientError.ChangeDataCapture.FutureIdentifier
Neo.DatabaseError.ChangeDataCapture.Disabled
Neo.DatabaseError.ChangeDataCapture.ScanFailure
-----

== Neo4j 5.10

**New:**

[source, status codes, role="noheader"]
-----
Neo.TransientError.Transaction.QueryExecutionFailedOnTransaction
-----

== Neo4j 5.9

**New:**

[source, status codes, role="noheader"]
-----
Neo.ClientNotification.Security.CommandHasNoEffect
Neo.ClientNotification.Security.ImpossibleRevokeCommand
-----

== Neo4j 5.7

**New:**

[source, status codes, role="noheader"]
-----
Neo.ClientError.Transacton.TransactionTimedOutClientConfiguration
Neo.ClientError.Routing.DbmsInPanic
Neo.ClientError.Routing.RoutingFailed
-----

== Neo4j 5.5

**New:**

[source, status codes, role="noheader"]
-----
Neo.ClientNotification.Statement.RepeatedRelationshipReference
Neo.ClientError.Statement.RemoteExecutionClientError
Neo.TransientError.Statement.RemoteExecutionTransientError
-----

== Neo4j 5.4

**New:**

[source, status codes, role="noheader"]
-----
Neo.ClientNotification.Statement.UnsatisfiableRelationshipTypeExpression
-----

== Neo4j 5.3

**New:**

[source, status codes, role="noheader"]
-----
Neo.DatabaseError.Transaction.TransactionTerminationFailed
-----


== Neo4j 5.0

**New:**

[source, status codes, role="noheader"]
-----
Neo.ClientNotification.Database.HomeDatabaseNotFound
Neo.ClientNotification.Request.DeprecatedFormat
Neo.ClientNotification.Schema.HintedIndexNotFound
Neo.ClientNotification.Statement.CartesianProduct
Neo.ClientNotification.Statement.CodeGenerationFailed
Neo.ClientNotification.Statement.DynamicProperty
Neo.ClientNotification.Statement.EagerOperator
Neo.ClientNotification.Statement.ExhaustiveShortestPath
Neo.ClientNotification.Statement.NoApplicableIndex
Neo.ClientNotification.Statement.RuntimeExperimental
Neo.ClientNotification.Statement.SubqueryVariableShadowing
Neo.ClientNotification.Statement.UnboundedVariableLengthPattern
Neo.ClientNotification.Statement.ParameterNotProvided
Neo.ClientError.Statement.UnsupportedOperationError

-----

**Removed:**

[source, status codes, role="noheader"]
-----
Neo.ClientError.Statement.CodeGenerationFailed
Neo.TransientError.Transaction.TransientTransactionFailure
Neo.ClientNotification.Statement.CartesianProductWarning
Neo.ClientNotification.Statement.DynamicPropertyWarning
Neo.ClientNotification.Statement.EagerOperatorWarning
Neo.ClientNotification.Statement.ExhaustiveShortestPathWarning
Neo.ClientNotification.Statement.ExperimentalFeature
Neo.ClientNotification.Statement.MissingAlias
Neo.ClientNotification.Statement.NoApplicableIndexWarning
Neo.ClientNotification.Statement.SubqueryVariableShadowingWarning
Neo.ClientNotification.Statement.UnboundedVariableLengthPatternWarning

-----

== Neo4j 4.4

**New:**

[source, status codes, role="noheader"]
-----
Neo.ClientError.Statement.UnsupportedAdministrationCommand
Neo.DatabaseError.Transaction.LinkedTransactionError
Neo.TransientError.Transaction.LeaderSwitch
Neo.ClientError.Database.IllegalAliasChain
-----


== Neo4j 4.3

**New:**

[source, status codes, role="noheader"]
-----
Neo.ClientError.General.UpgradeRequired
Neo.TransientError.Statement.ExecutionTimeout
-----


== Neo4j 4.2

**New:**

[source, status codes, role="noheader"]
-----
Neo.ClientNotification.Statement.MissingAlias
Neo.ClientNotification.Statement.SubqueryVariableShadowingWarning
Neo.TransientError.Transaction.TransientTransactionFailure
-----

== Neo4j 4.1

**New:**

[source, status codes, role="noheader"]
-----
Neo.ClientError.Cluster.Routing
Neo.ClientError.General.TransactionOutOfMemoryError
Neo.ClientError.Statement.AccessMode
Neo.DatabaseError.Statement.RemoteExecutionFailed
Neo.TransientError.General.MemoryPoolOutOfMemoryError
-----

**Removed:**

[source, status codes, role="noheader"]
-----
Neo.ClientError.Cluster.TransactionSizeExceedsLimit
Neo.DatabaseError.Cluster.SerializationFailure
Neo.TransientError.General.TransactionOutOfMemoryError
-----

== Neo4j 4.0

**New:**

[source, status codes, role="noheader"]
-----
Neo.ClientError.Cluster.TransactionSizeExceedsLimit
Neo.ClientError.Database.DatabaseNotFound
Neo.ClientError.Database.ExistingDatabaseFound
Neo.ClientError.Fabric.AccessMode
Neo.ClientError.Schema.ConstraintViolation
Neo.ClientError.Schema.ConstraintWithNameAlreadyExists
Neo.ClientError.Schema.EquivalentSchemaRuleAlreadyExists
Neo.ClientError.Schema.IndexMultipleFound
Neo.ClientError.Schema.IndexWithNameAlreadyExists
Neo.ClientError.Statement.NotSystemDatabaseError
Neo.ClientError.Statement.RuntimeUnsupportedError
Neo.ClientError.Transaction.InvalidBookmarkMixture
Neo.DatabaseError.Cluster.SerializationFailure
Neo.DatabaseError.Database.DatabaseLimitReached
Neo.DatabaseError.Database.UnableToStartDatabase
Neo.DatabaseError.Database.Unknown
Neo.DatabaseError.Fabric.RemoteExecutionFailed
Neo.DatabaseError.Schema.TokenLimitReached
Neo.DatabaseError.Statement.CodeGenerationFailed
Neo.TransientError.Database.DatabaseUnavailable
Neo.TransientError.General.TransactionMemoryLimit
Neo.TransientError.General.TransactionOutOfMemoryError
Neo.TransientError.Transaction.BookmarkTimeout
Neo.TransientError.Transaction.LeaseExpired
Neo.TransientError.Transaction.MaximumTransactionLimitReached
-----

**Removed:**

[source, status codes, role="noheader"]
-----
Neo.ClientError.LegacyIndex.LegacyIndexNotFound
Neo.ClientError.Request.TransactionRequired
Neo.ClientError.Schema.ConstraintVerificationFailed
Neo.ClientError.Security.EncryptionRequired
Neo.ClientError.Statement.LabelNotFound
Neo.ClientNotification.Statement.CreateUniqueUnavailableWarning
Neo.ClientNotification.Statement.JoinHintUnsupportedWarning
Neo.ClientNotification.Statement.PlannerUnavailableWarning
Neo.ClientNotification.Statement.PlannerUnsupportedWarning
Neo.DatabaseError.Schema.LabelLimitReached
Neo.TransientError.Cluster.NoLeaderAvailable
Neo.TransientError.General.DatabaseUnavailable
Neo.TransientError.Network.CommunicationError
Neo.TransientError.Schema.SchemaModifiedConcurrently
Neo.TransientError.Transaction.InstanceStateChanged
Neo.TransientError.Transaction.LockSessionExpired
-----
include::partial$glossary.adoc[]
endif::[]
2 changes: 1 addition & 1 deletion modules/ROOT/pages/errors/index.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ On the driver side, the Neo4jException is extended with the corresponding method
The driver receives the Failure Bolt message and extracts the status code and the error message.
Then, it constructs an exception with the status code, error message, and other relevant information, and sends it to the client.

// Starting from 2025.01, the diagnostic record also contains a `_status_parameters` field, which represens a map that contains all variable parts of the status description, such as labels, database names, Cypher clauses, etc.
// Starting from 2025.01, the diagnostic record also contains a `_status_parameters` field, which represents a map that contains all variable parts of the status description, such as labels, database names, Cypher clauses, etc.
// This field is used to provide more detailed information about the error.

== Query logging
Expand Down
2 changes: 1 addition & 1 deletion modules/ROOT/pages/notifications/index.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ Additional helper methods are exposed for some useful fields.

!`_classification` ! The Neo4j category of the notification.
! `_position` ! The position, given by row and column, where the notification is relevant in the query text.
! `_status_parameters`! A map that contains all variable parts of the status description.
// ! `_status_parameters`! A map that contains all variable parts of the status description.
!===
|===

Expand Down