From a00c53b0cbf06dd6c01f5a1d55ebe21310a250af Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Thu, 22 Aug 2019 10:17:30 +0200 Subject: [PATCH] Make SQL/JSON error code names match SQL standard There were some minor differences that didn't seem necessary. Discussion: https://www.postgresql.org/message-id/flat/86b67eef-bb26-c97d-3e35-64f1fbd4f9fe%402ndquadrant.com --- 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 72bc5eab6c..21106e1da8 100644 --- a/src/backend/utils/adt/jsonpath_exec.c +++ b/src/backend/utils/adt/jsonpath_exec.c @@ -337,7 +337,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(); @@ -602,7 +602,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)))); @@ -614,7 +614,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; @@ -643,7 +643,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; @@ -691,7 +691,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) @@ -748,7 +748,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; @@ -802,7 +802,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; @@ -932,7 +932,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; @@ -986,7 +986,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; @@ -1007,7 +1007,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))))); @@ -1020,7 +1020,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))))); @@ -1504,14 +1504,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))))); @@ -1579,7 +1579,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))))); } @@ -1701,7 +1701,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))))); @@ -1760,7 +1760,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))))); @@ -2190,7 +2190,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, @@ -2202,7 +2202,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