diff --git a/src/backend/utils/adt/json.c b/src/backend/utils/adt/json.c index e405791f5d..2c620809b2 100644 --- a/src/backend/utils/adt/json.c +++ b/src/backend/utils/adt/json.c @@ -1083,7 +1083,7 @@ json_object_agg_transfn_worker(FunctionCallInfo fcinfo, if (!json_unique_check_key(&state->unique_check.check, key, 0)) ereport(ERROR, errcode(ERRCODE_DUPLICATE_JSON_OBJECT_KEY_VALUE), - errmsg("duplicate JSON key %s", key)); + errmsg("duplicate JSON object key value: %s", key)); if (skip) PG_RETURN_POINTER(state); @@ -1247,7 +1247,7 @@ json_build_object_worker(int nargs, Datum *args, bool *nulls, Oid *types, if (!json_unique_check_key(&unique_check.check, key, 0)) ereport(ERROR, errcode(ERRCODE_DUPLICATE_JSON_OBJECT_KEY_VALUE), - errmsg("duplicate JSON key %s", key)); + errmsg("duplicate JSON object key value: %s", key)); if (skip) continue; diff --git a/src/backend/utils/adt/jsonb_util.c b/src/backend/utils/adt/jsonb_util.c index eefa429b9c..9cc95b773d 100644 --- a/src/backend/utils/adt/jsonb_util.c +++ b/src/backend/utils/adt/jsonb_util.c @@ -1955,7 +1955,7 @@ uniqueifyJsonbObject(JsonbValue *object, bool unique_keys, bool skip_nulls) if (hasNonUniq && unique_keys) ereport(ERROR, errcode(ERRCODE_DUPLICATE_JSON_OBJECT_KEY_VALUE), - errmsg("duplicate JSON object key")); + errmsg("duplicate JSON object key value")); if (hasNonUniq || skip_nulls) { diff --git a/src/interfaces/ecpg/test/expected/sql-sqljson.stderr b/src/interfaces/ecpg/test/expected/sql-sqljson.stderr index 37a361156f..c030fe3a98 100644 --- a/src/interfaces/ecpg/test/expected/sql-sqljson.stderr +++ b/src/interfaces/ecpg/test/expected/sql-sqljson.stderr @@ -42,11 +42,11 @@ [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: ecpg_execute on line 33: using PQexec [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_check_PQresult on line 33: bad response - ERROR: duplicate JSON key "1" +[NO_PID]: ecpg_check_PQresult on line 33: bad response - ERROR: duplicate JSON object key value: "1" [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: raising sqlstate 22030 (sqlcode -400): duplicate JSON key "1" on line 33 +[NO_PID]: raising sqlstate 22030 (sqlcode -400): duplicate JSON object key value: "1" on line 33 [NO_PID]: sqlca: code: -400, state: 22030 -SQL error: duplicate JSON key "1" on line 33 +SQL error: duplicate JSON object key value: "1" on line 33 [NO_PID]: ecpg_execute on line 36: query: select json_object ( 1 : 1 , '2' : null , 1 : '2' absent on null without unique keys ); with 0 parameter(s) on connection ecpg1_regression [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: ecpg_execute on line 36: using PQexec diff --git a/src/test/regress/expected/sqljson.out b/src/test/regress/expected/sqljson.out index d5074d73a2..e654c94804 100644 --- a/src/test/regress/expected/sqljson.out +++ b/src/test/regress/expected/sqljson.out @@ -544,17 +544,17 @@ SELECT JSON_OBJECT('a': '1', 'b': NULL, 'c': 2 ABSENT ON NULL); (1 row) SELECT JSON_OBJECT(1: 1, '1': NULL WITH UNIQUE); -ERROR: duplicate JSON key "1" +ERROR: duplicate JSON object key value: "1" SELECT JSON_OBJECT(1: 1, '1': NULL ABSENT ON NULL WITH UNIQUE); -ERROR: duplicate JSON key "1" +ERROR: duplicate JSON object key value: "1" SELECT JSON_OBJECT(1: 1, '1': NULL NULL ON NULL WITH UNIQUE RETURNING jsonb); -ERROR: duplicate JSON object key +ERROR: duplicate JSON object key value SELECT JSON_OBJECT(1: 1, '1': NULL ABSENT ON NULL WITH UNIQUE RETURNING jsonb); -ERROR: duplicate JSON object key +ERROR: duplicate JSON object key value SELECT JSON_OBJECT(1: 1, '2': NULL, '1': 1 NULL ON NULL WITH UNIQUE); -ERROR: duplicate JSON key "1" +ERROR: duplicate JSON object key value: "1" SELECT JSON_OBJECT(1: 1, '2': NULL, '1': 1 ABSENT ON NULL WITH UNIQUE); -ERROR: duplicate JSON key "1" +ERROR: duplicate JSON object key value: "1" SELECT JSON_OBJECT(1: 1, '2': NULL, '1': 1 ABSENT ON NULL WITHOUT UNIQUE); json_object -------------------- @@ -562,7 +562,7 @@ SELECT JSON_OBJECT(1: 1, '2': NULL, '1': 1 ABSENT ON NULL WITHOUT UNIQUE); (1 row) SELECT JSON_OBJECT(1: 1, '2': NULL, '1': 1 ABSENT ON NULL WITH UNIQUE RETURNING jsonb); -ERROR: duplicate JSON object key +ERROR: duplicate JSON object key value SELECT JSON_OBJECT(1: 1, '2': NULL, '1': 1 ABSENT ON NULL WITHOUT UNIQUE RETURNING jsonb); json_object ------------- @@ -903,10 +903,10 @@ FROM SELECT JSON_OBJECTAGG(k: v WITH UNIQUE KEYS) FROM (VALUES (1, 1), (1, NULL), (2, 2)) foo(k, v); -ERROR: duplicate JSON key "1" +ERROR: duplicate JSON object key value: "1" SELECT JSON_OBJECTAGG(k: v ABSENT ON NULL WITH UNIQUE KEYS) FROM (VALUES (1, 1), (1, NULL), (2, 2)) foo(k, v); -ERROR: duplicate JSON key "1" +ERROR: duplicate JSON object key value: "1" SELECT JSON_OBJECTAGG(k: v ABSENT ON NULL WITH UNIQUE KEYS) FROM (VALUES (1, 1), (0, NULL), (3, NULL), (2, 2), (4, NULL)) foo(k, v); json_objectagg @@ -916,10 +916,10 @@ FROM (VALUES (1, 1), (0, NULL), (3, NULL), (2, 2), (4, NULL)) foo(k, v); SELECT JSON_OBJECTAGG(k: v WITH UNIQUE KEYS RETURNING jsonb) FROM (VALUES (1, 1), (1, NULL), (2, 2)) foo(k, v); -ERROR: duplicate JSON object key +ERROR: duplicate JSON object key value SELECT JSON_OBJECTAGG(k: v ABSENT ON NULL WITH UNIQUE KEYS RETURNING jsonb) FROM (VALUES (1, 1), (1, NULL), (2, 2)) foo(k, v); -ERROR: duplicate JSON object key +ERROR: duplicate JSON object key value SELECT JSON_OBJECTAGG(k: v ABSENT ON NULL WITH UNIQUE KEYS RETURNING jsonb) FROM (VALUES (1, 1), (0, NULL),(4, null), (5, null),(6, null),(2, 2)) foo(k, v); json_objectagg @@ -952,11 +952,11 @@ FROM (VALUES (1,1), (2,2)) a(k,v); SELECT to_json(a) AS a, JSON_OBJECTAGG(k : v WITH UNIQUE KEYS) OVER (ORDER BY k) FROM (VALUES (1,1), (1,2), (2,2)) a(k,v); -ERROR: duplicate JSON key "1" +ERROR: duplicate JSON object key value: "1" SELECT to_json(a) AS a, JSON_OBJECTAGG(k : v ABSENT ON NULL WITH UNIQUE KEYS) OVER (ORDER BY k) FROM (VALUES (1,1), (1,null), (2,2)) a(k,v); -ERROR: duplicate JSON key "1" +ERROR: duplicate JSON object key value: "1" SELECT to_json(a) AS a, JSON_OBJECTAGG(k : v ABSENT ON NULL) OVER (ORDER BY k) FROM (VALUES (1,1), (1,null), (2,2)) a(k,v);