From 834fce52f941cd228beca2067dca82f6e33a4d98 Mon Sep 17 00:00:00 2001 From: Michael Paquier Date: Mon, 11 Jul 2022 11:20:52 +0900 Subject: [PATCH] Improve error message with JSON_SERIALIZE() The error message introduced in 3c633f3 can share the same format string with an existing message used for JSON(), reducing the translation effort. Author: Kyotaro Horiguchi Discussion: https://postgr.es/m/20220708.154135.2123613118233840495.horikyota.ntt@gmail.com Backpatch-through: 15 --- src/backend/parser/parse_expr.c | 5 +++-- src/test/regress/expected/sqljson.out | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/backend/parser/parse_expr.c b/src/backend/parser/parse_expr.c index efcf1cd5abc..1dbdba93daa 100644 --- a/src/backend/parser/parse_expr.c +++ b/src/backend/parser/parse_expr.c @@ -4587,8 +4587,9 @@ transformJsonSerializeExpr(ParseState *pstate, JsonSerializeExpr *expr) if (typcategory != TYPCATEGORY_STRING) ereport(ERROR, (errcode(ERRCODE_DATATYPE_MISMATCH), - errmsg("cannot use RETURNING type %s in JSON_SERIALIZE", - format_type_be(returning->typid)), + errmsg("cannot use RETURNING type %s in %s", + format_type_be(returning->typid), + "JSON_SERIALIZE()"), errhint("Try returning a string type or bytea"))); } } diff --git a/src/test/regress/expected/sqljson.out b/src/test/regress/expected/sqljson.out index be27bce9d32..aae4ba49390 100644 --- a/src/test/regress/expected/sqljson.out +++ b/src/test/regress/expected/sqljson.out @@ -316,7 +316,7 @@ SELECT pg_typeof(JSON_SERIALIZE(NULL)); -- only string types or bytea allowed SELECT JSON_SERIALIZE('{ "a" : 1 } ' RETURNING jsonb); -ERROR: cannot use RETURNING type jsonb in JSON_SERIALIZE +ERROR: cannot use RETURNING type jsonb in JSON_SERIALIZE() HINT: Try returning a string type or bytea EXPLAIN (VERBOSE, COSTS OFF) SELECT JSON_SERIALIZE('{}'); QUERY PLAN