postgres.git / summary / log / commit / refs

commit    0a6be1f0ec3cc9b98453bdab2d4edcfd5a00c7fa
Author:   Michael Paquier <michael@paquier.xyz>
Date:     Mon Jul 11 02:20:15 2022 +0000
First released in: 16.0, 15.0

    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 [parent: 8445f5a21d40]