diff --git a/modules/ROOT/pages/changelogs.adoc b/modules/ROOT/pages/changelogs.adoc index dbdd0237..94713641 100644 --- a/modules/ROOT/pages/changelogs.adoc +++ b/modules/ROOT/pages/changelogs.adoc @@ -1,367 +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.11 -**New:** -[options="header", cols="<1m,<1"] -|=== -| GQLSTATUS -| Neo4j code += Changes and deprecations -| 01N83 -| Neo.ClientNotification.Request.UnsupportedType +== 2025.05 -|=== +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. -== Neo4j 2025.01 -**New:** -[options="header", cols="<1m,<1"] -|=== -| GQLSTATUS -| Neo4j code +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]. -| 01N80 -| Neo.ClientNotification.Cluster.ServerFailed +== 2025.04 -| 01N81 -| Neo.ClientNotification.Cluster.ServerCatchingUp +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`. -| 01N82 -| Neo.ClientNotification.Cluster.ServerNotAvailable +== 2025.01 -| 03N85 -| Neo.ClientNotification.Cluster.ServerCaughtUp +// * 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. -|=== +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]. -//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. +ifndef::backend-pdf[] +[discrete.glossary] +== Glossary -== Neo4j 5.26 - -**New:** - -[options="header", cols="<1m,<1"] -|=== - -| 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::[] \ No newline at end of file diff --git a/modules/ROOT/pages/errors/index.adoc b/modules/ROOT/pages/errors/index.adoc index 8d559c68..a5f40d1a 100644 --- a/modules/ROOT/pages/errors/index.adoc +++ b/modules/ROOT/pages/errors/index.adoc @@ -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 diff --git a/modules/ROOT/pages/notifications/index.adoc b/modules/ROOT/pages/notifications/index.adoc index d096be59..dc9fa53a 100644 --- a/modules/ROOT/pages/notifications/index.adoc +++ b/modules/ROOT/pages/notifications/index.adoc @@ -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. !=== |===