Commit 0ef99bdc authored by Robert Haas's avatar Robert Haas

Improve some JSON error messages.

These messages are new in 9.4, which hasn't been released yet, so
back-patch to REL9_4_STABLE.

Daniele Varrazzo
parent ee646df5
...@@ -1910,7 +1910,7 @@ json_object_agg_transfn(PG_FUNCTION_ARGS) ...@@ -1910,7 +1910,7 @@ json_object_agg_transfn(PG_FUNCTION_ARGS)
if (val_type == InvalidOid || val_type == UNKNOWNOID) if (val_type == InvalidOid || val_type == UNKNOWNOID)
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE), (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("arg 1: could not determine data type"))); errmsg("could not determine data type for argument %d", 1)));
add_json(arg, false, state, val_type, true); add_json(arg, false, state, val_type, true);
...@@ -1934,7 +1934,7 @@ json_object_agg_transfn(PG_FUNCTION_ARGS) ...@@ -1934,7 +1934,7 @@ json_object_agg_transfn(PG_FUNCTION_ARGS)
if (val_type == InvalidOid || val_type == UNKNOWNOID) if (val_type == InvalidOid || val_type == UNKNOWNOID)
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE), (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("arg 2: could not determine data type"))); errmsg("could not determine data type for argument %d", 2)));
add_json(arg, PG_ARGISNULL(2), state, val_type, false); add_json(arg, PG_ARGISNULL(2), state, val_type, false);
...@@ -1980,7 +1980,8 @@ json_build_object(PG_FUNCTION_ARGS) ...@@ -1980,7 +1980,8 @@ json_build_object(PG_FUNCTION_ARGS)
if (nargs % 2 != 0) if (nargs % 2 != 0)
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE), (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("invalid number or arguments: object must be matched key value pairs"))); errmsg("invalid number or arguments"),
errhint("Object must be matched key value pairs.")));
result = makeStringInfo(); result = makeStringInfo();
...@@ -1994,7 +1995,8 @@ json_build_object(PG_FUNCTION_ARGS) ...@@ -1994,7 +1995,8 @@ json_build_object(PG_FUNCTION_ARGS)
if (PG_ARGISNULL(i)) if (PG_ARGISNULL(i))
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE), (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("arg %d: key cannot be null", i + 1))); errmsg("argument %d cannot be null", i + 1),
errhint("Object keys should be text.")));
val_type = get_fn_expr_argtype(fcinfo->flinfo, i); val_type = get_fn_expr_argtype(fcinfo->flinfo, i);
/* /*
...@@ -2016,7 +2018,8 @@ json_build_object(PG_FUNCTION_ARGS) ...@@ -2016,7 +2018,8 @@ json_build_object(PG_FUNCTION_ARGS)
if (val_type == InvalidOid || val_type == UNKNOWNOID) if (val_type == InvalidOid || val_type == UNKNOWNOID)
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE), (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("arg %d: could not determine data type", i + 1))); errmsg("could not determine data type for argument %d",
i + 1)));
appendStringInfoString(result, sep); appendStringInfoString(result, sep);
sep = ", "; sep = ", ";
add_json(arg, false, result, val_type, true); add_json(arg, false, result, val_type, true);
...@@ -2042,7 +2045,8 @@ json_build_object(PG_FUNCTION_ARGS) ...@@ -2042,7 +2045,8 @@ json_build_object(PG_FUNCTION_ARGS)
if (val_type == InvalidOid || val_type == UNKNOWNOID) if (val_type == InvalidOid || val_type == UNKNOWNOID)
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE), (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("arg %d: could not determine data type", i + 2))); errmsg("could not determine data type for argument %d",
i + 2)));
add_json(arg, PG_ARGISNULL(i + 1), result, val_type, false); add_json(arg, PG_ARGISNULL(i + 1), result, val_type, false);
} }
...@@ -2099,7 +2103,8 @@ json_build_array(PG_FUNCTION_ARGS) ...@@ -2099,7 +2103,8 @@ json_build_array(PG_FUNCTION_ARGS)
if (val_type == InvalidOid || val_type == UNKNOWNOID) if (val_type == InvalidOid || val_type == UNKNOWNOID)
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE), (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("arg %d: could not determine data type", i + 1))); errmsg("could not determine data type for argument %d",
i + 1)));
appendStringInfoString(result, sep); appendStringInfoString(result, sep);
sep = ", "; sep = ", ";
add_json(arg, PG_ARGISNULL(i), result, val_type, false); add_json(arg, PG_ARGISNULL(i), result, val_type, false);
......
...@@ -1150,7 +1150,8 @@ SELECT json_build_object(1,2); ...@@ -1150,7 +1150,8 @@ SELECT json_build_object(1,2);
-- keys must be scalar and not null -- keys must be scalar and not null
SELECT json_build_object(null,2); SELECT json_build_object(null,2);
ERROR: arg 1: key cannot be null ERROR: argument 1 cannot be null
HINT: Object keys should be text.
SELECT json_build_object(r,2) FROM (SELECT 1 AS a, 2 AS b) r; SELECT json_build_object(r,2) FROM (SELECT 1 AS a, 2 AS b) r;
ERROR: key value must be scalar, not array, composite, or json ERROR: key value must be scalar, not array, composite, or json
SELECT json_build_object(json '{"a":1,"b":2}', 3); SELECT json_build_object(json '{"a":1,"b":2}', 3);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment