pg.ddx.io  pgsql-hackers@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
To: pgsql-hackers <pgsql-hackers@postgresql.org>
Subject: Make SQL/JSON error code names match SQL standard
Date: Tue, 20 Aug 2019 10:48:47 +0200
Message-ID: <86b67eef-bb26-c97d-3e35-64f1fbd4f9fe@2ndquadrant.com> (raw)

I propose the attached patch to make the new SQL/JSON error code names
match the SQL standard.  The existing minor differences don't seem
necessary.

-- 
Peter Eisentraut              http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
From 026299f325e7d2afbcd6c77b58e2968e88e5f700 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter@eisentraut.org>
Date: Tue, 20 Aug 2019 10:46:32 +0200
Subject: [PATCH] Make SQL/JSON error code names match SQL standard

---
 src/backend/utils/adt/jsonpath_exec.c | 36 +++++++++++++--------------
 src/backend/utils/errcodes.txt        | 22 ++++++++--------
 2 files changed, 29 insertions(+), 29 deletions(-)

diff --git a/src/backend/utils/adt/jsonpath_exec.c b/src/backend/utils/adt/jsonpath_exec.c
index 8ab563fded..22ec578d77 100644
--- a/src/backend/utils/adt/jsonpath_exec.c
+++ b/src/backend/utils/adt/jsonpath_exec.c
@@ -336,7 +336,7 @@ jsonb_path_match(PG_FUNCTION_ARGS)
 
 	if (!silent)
 		ereport(ERROR,
-				(errcode(ERRCODE_SINGLETON_JSON_ITEM_REQUIRED),
+				(errcode(ERRCODE_SINGLETON_SQL_JSON_ITEM_REQUIRED),
 				 errmsg("single boolean result is expected")));
 
 	PG_RETURN_NULL();
@@ -601,7 +601,7 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
 						return jperError;
 
 					ereport(ERROR,
-							(errcode(ERRCODE_JSON_MEMBER_NOT_FOUND), \
+							(errcode(ERRCODE_SQL_JSON_MEMBER_NOT_FOUND), \
 							 errmsg("JSON object does not contain key \"%s\"",
 									pnstrdup(key.val.string.val,
 											 key.val.string.len))));
@@ -613,7 +613,7 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
 			{
 				Assert(found);
 				RETURN_ERROR(ereport(ERROR,
-									 (errcode(ERRCODE_JSON_MEMBER_NOT_FOUND),
+									 (errcode(ERRCODE_SQL_JSON_MEMBER_NOT_FOUND),
 									  errmsg("jsonpath member accessor can only be applied to an object"))));
 			}
 			break;
@@ -642,7 +642,7 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
 				res = executeNextItem(cxt, jsp, NULL, jb, found, true);
 			else if (!jspIgnoreStructuralErrors(cxt))
 				RETURN_ERROR(ereport(ERROR,
-									 (errcode(ERRCODE_JSON_ARRAY_NOT_FOUND),
+									 (errcode(ERRCODE_SQL_JSON_ARRAY_NOT_FOUND),
 									  errmsg("jsonpath wildcard array accessor can only be applied to an array"))));
 			break;
 
@@ -690,7 +690,7 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
 						 index_from > index_to ||
 						 index_to >= size))
 						RETURN_ERROR(ereport(ERROR,
-											 (errcode(ERRCODE_INVALID_JSON_SUBSCRIPT),
+											 (errcode(ERRCODE_INVALID_SQL_JSON_SUBSCRIPT),
 											  errmsg("jsonpath array subscript is out of bounds"))));
 
 					if (index_from < 0)
@@ -747,7 +747,7 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
 			else if (!jspIgnoreStructuralErrors(cxt))
 			{
 				RETURN_ERROR(ereport(ERROR,
-									 (errcode(ERRCODE_JSON_ARRAY_NOT_FOUND),
+									 (errcode(ERRCODE_SQL_JSON_ARRAY_NOT_FOUND),
 									  errmsg("jsonpath array accessor can only be applied to an array"))));
 			}
 			break;
@@ -801,7 +801,7 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
 			{
 				Assert(found);
 				RETURN_ERROR(ereport(ERROR,
-									 (errcode(ERRCODE_JSON_OBJECT_NOT_FOUND),
+									 (errcode(ERRCODE_SQL_JSON_OBJECT_NOT_FOUND),
 									  errmsg("jsonpath wildcard member accessor can only be applied to an object"))));
 			}
 			break;
@@ -931,7 +931,7 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
 					{
 						if (!jspIgnoreStructuralErrors(cxt))
 							RETURN_ERROR(ereport(ERROR,
-												 (errcode(ERRCODE_JSON_ARRAY_NOT_FOUND),
+												 (errcode(ERRCODE_SQL_JSON_ARRAY_NOT_FOUND),
 												  errmsg("jsonpath item method .%s() can only be applied to an array",
 														 jspOperationName(jsp->type)))));
 						break;
@@ -985,7 +985,7 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
 
 					if (have_error)
 						RETURN_ERROR(ereport(ERROR,
-											 (errcode(ERRCODE_NON_NUMERIC_JSON_ITEM),
+											 (errcode(ERRCODE_NON_NUMERIC_SQL_JSON_ITEM),
 											  errmsg("jsonpath item method .%s() can only be applied to a numeric value",
 													 jspOperationName(jsp->type)))));
 					res = jperOk;
@@ -1006,7 +1006,7 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
 
 					if (have_error || isinf(val))
 						RETURN_ERROR(ereport(ERROR,
-											 (errcode(ERRCODE_NON_NUMERIC_JSON_ITEM),
+											 (errcode(ERRCODE_NON_NUMERIC_SQL_JSON_ITEM),
 											  errmsg("jsonpath item method .%s() can only be applied to a numeric value",
 													 jspOperationName(jsp->type)))));
 
@@ -1019,7 +1019,7 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
 
 				if (res == jperNotFound)
 					RETURN_ERROR(ereport(ERROR,
-										 (errcode(ERRCODE_NON_NUMERIC_JSON_ITEM),
+										 (errcode(ERRCODE_NON_NUMERIC_SQL_JSON_ITEM),
 										  errmsg("jsonpath item method .%s() can only be applied to a string or numeric value",
 												 jspOperationName(jsp->type)))));
 
@@ -1503,14 +1503,14 @@ executeBinaryArithmExpr(JsonPathExecContext *cxt, JsonPathItem *jsp,
 	if (JsonValueListLength(&lseq) != 1 ||
 		!(lval = getScalar(JsonValueListHead(&lseq), jbvNumeric)))
 		RETURN_ERROR(ereport(ERROR,
-							 (errcode(ERRCODE_SINGLETON_JSON_ITEM_REQUIRED),
+							 (errcode(ERRCODE_SINGLETON_SQL_JSON_ITEM_REQUIRED),
 							  errmsg("left operand of jsonpath operator %s is not a single numeric value",
 									 jspOperationName(jsp->type)))));
 
 	if (JsonValueListLength(&rseq) != 1 ||
 		!(rval = getScalar(JsonValueListHead(&rseq), jbvNumeric)))
 		RETURN_ERROR(ereport(ERROR,
-							 (errcode(ERRCODE_SINGLETON_JSON_ITEM_REQUIRED),
+							 (errcode(ERRCODE_SINGLETON_SQL_JSON_ITEM_REQUIRED),
 							  errmsg("right operand of jsonpath operator %s is not a single numeric value",
 									 jspOperationName(jsp->type)))));
 
@@ -1578,7 +1578,7 @@ executeUnaryArithmExpr(JsonPathExecContext *cxt, JsonPathItem *jsp,
 				continue;		/* skip non-numerics processing */
 
 			RETURN_ERROR(ereport(ERROR,
-								 (errcode(ERRCODE_JSON_NUMBER_NOT_FOUND),
+								 (errcode(ERRCODE_SQL_JSON_NUMBER_NOT_FOUND),
 								  errmsg("operand of unary jsonpath operator %s is not a numeric value",
 										 jspOperationName(jsp->type)))));
 		}
@@ -1700,7 +1700,7 @@ executeNumericItemMethod(JsonPathExecContext *cxt, JsonPathItem *jsp,
 
 	if (!(jb = getScalar(jb, jbvNumeric)))
 		RETURN_ERROR(ereport(ERROR,
-							 (errcode(ERRCODE_NON_NUMERIC_JSON_ITEM),
+							 (errcode(ERRCODE_NON_NUMERIC_SQL_JSON_ITEM),
 							  errmsg("jsonpath item method .%s() can only be applied to a numeric value",
 									 jspOperationName(jsp->type)))));
 
@@ -1759,7 +1759,7 @@ executeKeyValueMethod(JsonPathExecContext *cxt, JsonPathItem *jsp,
 
 	if (JsonbType(jb) != jbvObject || jb->type != jbvBinary)
 		RETURN_ERROR(ereport(ERROR,
-							 (errcode(ERRCODE_JSON_OBJECT_NOT_FOUND),
+							 (errcode(ERRCODE_SQL_JSON_OBJECT_NOT_FOUND),
 							  errmsg("jsonpath item method .%s() can only be applied to an object",
 									 jspOperationName(jsp->type)))));
 
@@ -2189,7 +2189,7 @@ getArrayIndex(JsonPathExecContext *cxt, JsonPathItem *jsp, JsonbValue *jb,
 	if (JsonValueListLength(&found) != 1 ||
 		!(jbv = getScalar(JsonValueListHead(&found), jbvNumeric)))
 		RETURN_ERROR(ereport(ERROR,
-							 (errcode(ERRCODE_INVALID_JSON_SUBSCRIPT),
+							 (errcode(ERRCODE_INVALID_SQL_JSON_SUBSCRIPT),
 							  errmsg("jsonpath array subscript is not a single numeric value"))));
 
 	numeric_index = DirectFunctionCall2(numeric_trunc,
@@ -2201,7 +2201,7 @@ getArrayIndex(JsonPathExecContext *cxt, JsonPathItem *jsp, JsonbValue *jb,
 
 	if (have_error)
 		RETURN_ERROR(ereport(ERROR,
-							 (errcode(ERRCODE_INVALID_JSON_SUBSCRIPT),
+							 (errcode(ERRCODE_INVALID_SQL_JSON_SUBSCRIPT),
 							  errmsg("jsonpath array subscript is out of integer range"))));
 
 	return jperOk;
diff --git a/src/backend/utils/errcodes.txt b/src/backend/utils/errcodes.txt
index 16f5ca233a..867e98b690 100644
--- a/src/backend/utils/errcodes.txt
+++ b/src/backend/utils/errcodes.txt
@@ -208,19 +208,19 @@ Section: Class 22 - Data Exception
 2200T    E    ERRCODE_INVALID_XML_PROCESSING_INSTRUCTION                     invalid_xml_processing_instruction
 22030    E    ERRCODE_DUPLICATE_JSON_OBJECT_KEY_VALUE                        duplicate_json_object_key_value
 22032    E    ERRCODE_INVALID_JSON_TEXT                                      invalid_json_text
-22033    E    ERRCODE_INVALID_JSON_SUBSCRIPT                                 invalid_json_subscript
-22034    E    ERRCODE_MORE_THAN_ONE_JSON_ITEM                                more_than_one_json_item
-22035    E    ERRCODE_NO_JSON_ITEM                                           no_json_item
-22036    E    ERRCODE_NON_NUMERIC_JSON_ITEM                                  non_numeric_json_item
-22037    E    ERRCODE_NON_UNIQUE_KEYS_IN_JSON_OBJECT                         non_unique_keys_in_json_object
-22038    E    ERRCODE_SINGLETON_JSON_ITEM_REQUIRED                           singleton_json_item_required
-22039    E    ERRCODE_JSON_ARRAY_NOT_FOUND                                   json_array_not_found
-2203A    E    ERRCODE_JSON_MEMBER_NOT_FOUND                                  json_member_not_found
-2203B    E    ERRCODE_JSON_NUMBER_NOT_FOUND                                  json_number_not_found
-2203C    E    ERRCODE_JSON_OBJECT_NOT_FOUND                                  object_not_found
-2203F    E    ERRCODE_JSON_SCALAR_REQUIRED                                   json_scalar_required
+22033    E    ERRCODE_INVALID_SQL_JSON_SUBSCRIPT                             invalid_sql_json_subscript
+22034    E    ERRCODE_MORE_THAN_ONE_SQL_JSON_ITEM                            more_than_one_sql_json_item
+22035    E    ERRCODE_NO_SQL_JSON_ITEM                                       no_sql_json_item
+22036    E    ERRCODE_NON_NUMERIC_SQL_JSON_ITEM                              non_numeric_sql_json_item
+22037    E    ERRCODE_NON_UNIQUE_KEYS_IN_A_JSON_OBJECT                       non_unique_keys_in_a_json_object
+22038    E    ERRCODE_SINGLETON_SQL_JSON_ITEM_REQUIRED                       singleton_sql_json_item_required
+22039    E    ERRCODE_SQL_JSON_ARRAY_NOT_FOUND                               sql_json_array_not_found
+2203A    E    ERRCODE_SQL_JSON_MEMBER_NOT_FOUND                              sql_json_member_not_found
+2203B    E    ERRCODE_SQL_JSON_NUMBER_NOT_FOUND                              sql_json_number_not_found
+2203C    E    ERRCODE_SQL_JSON_OBJECT_NOT_FOUND                              sql_json_object_not_found
 2203D    E    ERRCODE_TOO_MANY_JSON_ARRAY_ELEMENTS                           too_many_json_array_elements
 2203E    E    ERRCODE_TOO_MANY_JSON_OBJECT_MEMBERS                           too_many_json_object_members
+2203F    E    ERRCODE_SQL_JSON_SCALAR_REQUIRED                               sql_json_scalar_required
 
 Section: Class 23 - Integrity Constraint Violation
 
-- 
2.22.0



Attachments:

  [text/plain] 0001-Make-SQL-JSON-error-code-names-match-SQL-standard.patch (10.7K, ../86b67eef-bb26-c97d-3e35-64f1fbd4f9fe@2ndquadrant.com/2-0001-Make-SQL-JSON-error-code-names-match-SQL-standard.patch)
  download | inline diff:
From 026299f325e7d2afbcd6c77b58e2968e88e5f700 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter@eisentraut.org>
Date: Tue, 20 Aug 2019 10:46:32 +0200
Subject: [PATCH] Make SQL/JSON error code names match SQL standard

---
 src/backend/utils/adt/jsonpath_exec.c | 36 +++++++++++++--------------
 src/backend/utils/errcodes.txt        | 22 ++++++++--------
 2 files changed, 29 insertions(+), 29 deletions(-)

diff --git a/src/backend/utils/adt/jsonpath_exec.c b/src/backend/utils/adt/jsonpath_exec.c
index 8ab563fded..22ec578d77 100644
--- a/src/backend/utils/adt/jsonpath_exec.c
+++ b/src/backend/utils/adt/jsonpath_exec.c
@@ -336,7 +336,7 @@ jsonb_path_match(PG_FUNCTION_ARGS)
 
 	if (!silent)
 		ereport(ERROR,
-				(errcode(ERRCODE_SINGLETON_JSON_ITEM_REQUIRED),
+				(errcode(ERRCODE_SINGLETON_SQL_JSON_ITEM_REQUIRED),
 				 errmsg("single boolean result is expected")));
 
 	PG_RETURN_NULL();
@@ -601,7 +601,7 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
 						return jperError;
 
 					ereport(ERROR,
-							(errcode(ERRCODE_JSON_MEMBER_NOT_FOUND), \
+							(errcode(ERRCODE_SQL_JSON_MEMBER_NOT_FOUND), \
 							 errmsg("JSON object does not contain key \"%s\"",
 									pnstrdup(key.val.string.val,
 											 key.val.string.len))));
@@ -613,7 +613,7 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
 			{
 				Assert(found);
 				RETURN_ERROR(ereport(ERROR,
-									 (errcode(ERRCODE_JSON_MEMBER_NOT_FOUND),
+									 (errcode(ERRCODE_SQL_JSON_MEMBER_NOT_FOUND),
 									  errmsg("jsonpath member accessor can only be applied to an object"))));
 			}
 			break;
@@ -642,7 +642,7 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
 				res = executeNextItem(cxt, jsp, NULL, jb, found, true);
 			else if (!jspIgnoreStructuralErrors(cxt))
 				RETURN_ERROR(ereport(ERROR,
-									 (errcode(ERRCODE_JSON_ARRAY_NOT_FOUND),
+									 (errcode(ERRCODE_SQL_JSON_ARRAY_NOT_FOUND),
 									  errmsg("jsonpath wildcard array accessor can only be applied to an array"))));
 			break;
 
@@ -690,7 +690,7 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
 						 index_from > index_to ||
 						 index_to >= size))
 						RETURN_ERROR(ereport(ERROR,
-											 (errcode(ERRCODE_INVALID_JSON_SUBSCRIPT),
+											 (errcode(ERRCODE_INVALID_SQL_JSON_SUBSCRIPT),
 											  errmsg("jsonpath array subscript is out of bounds"))));
 
 					if (index_from < 0)
@@ -747,7 +747,7 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
 			else if (!jspIgnoreStructuralErrors(cxt))
 			{
 				RETURN_ERROR(ereport(ERROR,
-									 (errcode(ERRCODE_JSON_ARRAY_NOT_FOUND),
+									 (errcode(ERRCODE_SQL_JSON_ARRAY_NOT_FOUND),
 									  errmsg("jsonpath array accessor can only be applied to an array"))));
 			}
 			break;
@@ -801,7 +801,7 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
 			{
 				Assert(found);
 				RETURN_ERROR(ereport(ERROR,
-									 (errcode(ERRCODE_JSON_OBJECT_NOT_FOUND),
+									 (errcode(ERRCODE_SQL_JSON_OBJECT_NOT_FOUND),
 									  errmsg("jsonpath wildcard member accessor can only be applied to an object"))));
 			}
 			break;
@@ -931,7 +931,7 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
 					{
 						if (!jspIgnoreStructuralErrors(cxt))
 							RETURN_ERROR(ereport(ERROR,
-												 (errcode(ERRCODE_JSON_ARRAY_NOT_FOUND),
+												 (errcode(ERRCODE_SQL_JSON_ARRAY_NOT_FOUND),
 												  errmsg("jsonpath item method .%s() can only be applied to an array",
 														 jspOperationName(jsp->type)))));
 						break;
@@ -985,7 +985,7 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
 
 					if (have_error)
 						RETURN_ERROR(ereport(ERROR,
-											 (errcode(ERRCODE_NON_NUMERIC_JSON_ITEM),
+											 (errcode(ERRCODE_NON_NUMERIC_SQL_JSON_ITEM),
 											  errmsg("jsonpath item method .%s() can only be applied to a numeric value",
 													 jspOperationName(jsp->type)))));
 					res = jperOk;
@@ -1006,7 +1006,7 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
 
 					if (have_error || isinf(val))
 						RETURN_ERROR(ereport(ERROR,
-											 (errcode(ERRCODE_NON_NUMERIC_JSON_ITEM),
+											 (errcode(ERRCODE_NON_NUMERIC_SQL_JSON_ITEM),
 											  errmsg("jsonpath item method .%s() can only be applied to a numeric value",
 													 jspOperationName(jsp->type)))));
 
@@ -1019,7 +1019,7 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
 
 				if (res == jperNotFound)
 					RETURN_ERROR(ereport(ERROR,
-										 (errcode(ERRCODE_NON_NUMERIC_JSON_ITEM),
+										 (errcode(ERRCODE_NON_NUMERIC_SQL_JSON_ITEM),
 										  errmsg("jsonpath item method .%s() can only be applied to a string or numeric value",
 												 jspOperationName(jsp->type)))));
 
@@ -1503,14 +1503,14 @@ executeBinaryArithmExpr(JsonPathExecContext *cxt, JsonPathItem *jsp,
 	if (JsonValueListLength(&lseq) != 1 ||
 		!(lval = getScalar(JsonValueListHead(&lseq), jbvNumeric)))
 		RETURN_ERROR(ereport(ERROR,
-							 (errcode(ERRCODE_SINGLETON_JSON_ITEM_REQUIRED),
+							 (errcode(ERRCODE_SINGLETON_SQL_JSON_ITEM_REQUIRED),
 							  errmsg("left operand of jsonpath operator %s is not a single numeric value",
 									 jspOperationName(jsp->type)))));
 
 	if (JsonValueListLength(&rseq) != 1 ||
 		!(rval = getScalar(JsonValueListHead(&rseq), jbvNumeric)))
 		RETURN_ERROR(ereport(ERROR,
-							 (errcode(ERRCODE_SINGLETON_JSON_ITEM_REQUIRED),
+							 (errcode(ERRCODE_SINGLETON_SQL_JSON_ITEM_REQUIRED),
 							  errmsg("right operand of jsonpath operator %s is not a single numeric value",
 									 jspOperationName(jsp->type)))));
 
@@ -1578,7 +1578,7 @@ executeUnaryArithmExpr(JsonPathExecContext *cxt, JsonPathItem *jsp,
 				continue;		/* skip non-numerics processing */
 
 			RETURN_ERROR(ereport(ERROR,
-								 (errcode(ERRCODE_JSON_NUMBER_NOT_FOUND),
+								 (errcode(ERRCODE_SQL_JSON_NUMBER_NOT_FOUND),
 								  errmsg("operand of unary jsonpath operator %s is not a numeric value",
 										 jspOperationName(jsp->type)))));
 		}
@@ -1700,7 +1700,7 @@ executeNumericItemMethod(JsonPathExecContext *cxt, JsonPathItem *jsp,
 
 	if (!(jb = getScalar(jb, jbvNumeric)))
 		RETURN_ERROR(ereport(ERROR,
-							 (errcode(ERRCODE_NON_NUMERIC_JSON_ITEM),
+							 (errcode(ERRCODE_NON_NUMERIC_SQL_JSON_ITEM),
 							  errmsg("jsonpath item method .%s() can only be applied to a numeric value",
 									 jspOperationName(jsp->type)))));
 
@@ -1759,7 +1759,7 @@ executeKeyValueMethod(JsonPathExecContext *cxt, JsonPathItem *jsp,
 
 	if (JsonbType(jb) != jbvObject || jb->type != jbvBinary)
 		RETURN_ERROR(ereport(ERROR,
-							 (errcode(ERRCODE_JSON_OBJECT_NOT_FOUND),
+							 (errcode(ERRCODE_SQL_JSON_OBJECT_NOT_FOUND),
 							  errmsg("jsonpath item method .%s() can only be applied to an object",
 									 jspOperationName(jsp->type)))));
 
@@ -2189,7 +2189,7 @@ getArrayIndex(JsonPathExecContext *cxt, JsonPathItem *jsp, JsonbValue *jb,
 	if (JsonValueListLength(&found) != 1 ||
 		!(jbv = getScalar(JsonValueListHead(&found), jbvNumeric)))
 		RETURN_ERROR(ereport(ERROR,
-							 (errcode(ERRCODE_INVALID_JSON_SUBSCRIPT),
+							 (errcode(ERRCODE_INVALID_SQL_JSON_SUBSCRIPT),
 							  errmsg("jsonpath array subscript is not a single numeric value"))));
 
 	numeric_index = DirectFunctionCall2(numeric_trunc,
@@ -2201,7 +2201,7 @@ getArrayIndex(JsonPathExecContext *cxt, JsonPathItem *jsp, JsonbValue *jb,
 
 	if (have_error)
 		RETURN_ERROR(ereport(ERROR,
-							 (errcode(ERRCODE_INVALID_JSON_SUBSCRIPT),
+							 (errcode(ERRCODE_INVALID_SQL_JSON_SUBSCRIPT),
 							  errmsg("jsonpath array subscript is out of integer range"))));
 
 	return jperOk;
diff --git a/src/backend/utils/errcodes.txt b/src/backend/utils/errcodes.txt
index 16f5ca233a..867e98b690 100644
--- a/src/backend/utils/errcodes.txt
+++ b/src/backend/utils/errcodes.txt
@@ -208,19 +208,19 @@ Section: Class 22 - Data Exception
 2200T    E    ERRCODE_INVALID_XML_PROCESSING_INSTRUCTION                     invalid_xml_processing_instruction
 22030    E    ERRCODE_DUPLICATE_JSON_OBJECT_KEY_VALUE                        duplicate_json_object_key_value
 22032    E    ERRCODE_INVALID_JSON_TEXT                                      invalid_json_text
-22033    E    ERRCODE_INVALID_JSON_SUBSCRIPT                                 invalid_json_subscript
-22034    E    ERRCODE_MORE_THAN_ONE_JSON_ITEM                                more_than_one_json_item
-22035    E    ERRCODE_NO_JSON_ITEM                                           no_json_item
-22036    E    ERRCODE_NON_NUMERIC_JSON_ITEM                                  non_numeric_json_item
-22037    E    ERRCODE_NON_UNIQUE_KEYS_IN_JSON_OBJECT                         non_unique_keys_in_json_object
-22038    E    ERRCODE_SINGLETON_JSON_ITEM_REQUIRED                           singleton_json_item_required
-22039    E    ERRCODE_JSON_ARRAY_NOT_FOUND                                   json_array_not_found
-2203A    E    ERRCODE_JSON_MEMBER_NOT_FOUND                                  json_member_not_found
-2203B    E    ERRCODE_JSON_NUMBER_NOT_FOUND                                  json_number_not_found
-2203C    E    ERRCODE_JSON_OBJECT_NOT_FOUND                                  object_not_found
-2203F    E    ERRCODE_JSON_SCALAR_REQUIRED                                   json_scalar_required
+22033    E    ERRCODE_INVALID_SQL_JSON_SUBSCRIPT                             invalid_sql_json_subscript
+22034    E    ERRCODE_MORE_THAN_ONE_SQL_JSON_ITEM                            more_than_one_sql_json_item
+22035    E    ERRCODE_NO_SQL_JSON_ITEM                                       no_sql_json_item
+22036    E    ERRCODE_NON_NUMERIC_SQL_JSON_ITEM                              non_numeric_sql_json_item
+22037    E    ERRCODE_NON_UNIQUE_KEYS_IN_A_JSON_OBJECT                       non_unique_keys_in_a_json_object
+22038    E    ERRCODE_SINGLETON_SQL_JSON_ITEM_REQUIRED                       singleton_sql_json_item_required
+22039    E    ERRCODE_SQL_JSON_ARRAY_NOT_FOUND                               sql_json_array_not_found
+2203A    E    ERRCODE_SQL_JSON_MEMBER_NOT_FOUND                              sql_json_member_not_found
+2203B    E    ERRCODE_SQL_JSON_NUMBER_NOT_FOUND                              sql_json_number_not_found
+2203C    E    ERRCODE_SQL_JSON_OBJECT_NOT_FOUND                              sql_json_object_not_found
 2203D    E    ERRCODE_TOO_MANY_JSON_ARRAY_ELEMENTS                           too_many_json_array_elements
 2203E    E    ERRCODE_TOO_MANY_JSON_OBJECT_MEMBERS                           too_many_json_object_members
+2203F    E    ERRCODE_SQL_JSON_SCALAR_REQUIRED                               sql_json_scalar_required
 
 Section: Class 23 - Integrity Constraint Violation
 
-- 
2.22.0



view thread (4+ messages)  latest in thread

Message-ID: <86b67eef-bb26-c97d-3e35-64f1fbd4f9fe@2ndquadrant.com>
Permalink:  ../86b67eef-bb26-c97d-3e35-64f1fbd4f9fe@2ndquadrant.com/
Also on:    postgresql.org/message-id/86b67eef-bb26-c97d-3e35-64f1fbd4f9fe@2ndquadrant.com

 ·  · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-hackers@postgresql.org
  Cc: peter.eisentraut@2ndquadrant.com
  Subject: Re: Make SQL/JSON error code names match SQL standard
  In-Reply-To: <86b67eef-bb26-c97d-3e35-64f1fbd4f9fe@2ndquadrant.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox