diff options
author | Álvaro Herrera <alvherre@alvh.no-ip.org> | 2025-01-07 20:07:32 +0100 |
---|---|---|
committer | Álvaro Herrera <alvherre@alvh.no-ip.org> | 2025-01-07 20:07:32 +0100 |
commit | 0e5b14410e2bb54d191bbb7bb21a674ccabe768e (patch) | |
tree | 67f66da1e79946cf9491ad3ff3c6ec14da330421 /src | |
parent | c4782c44101ef9e50daa9e1d69821d98f58057fd (diff) | |
download | postgresql-0e5b14410e2bb54d191bbb7bb21a674ccabe768e.tar.gz postgresql-0e5b14410e2bb54d191bbb7bb21a674ccabe768e.zip |
Fix error message wording
The originals are ambiguous and a bit out of style.
Reviewed-by: Amit Langote <amitlangote09@gmail.com>
Discussion: https://postgr.es/m/202412141243.efesjyyvzxsz@alvherre.pgsql
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/parser/parse_expr.c | 5 | ||||
-rw-r--r-- | src/interfaces/ecpg/test/expected/sql-sqljson.stderr | 6 | ||||
-rw-r--r-- | src/test/regress/expected/sqljson.out | 2 |
3 files changed, 7 insertions, 6 deletions
diff --git a/src/backend/parser/parse_expr.c b/src/backend/parser/parse_expr.c index 84d214f5c74..d1f64f8f0a5 100644 --- a/src/backend/parser/parse_expr.c +++ b/src/backend/parser/parse_expr.c @@ -4113,8 +4113,9 @@ transformJsonReturning(ParseState *pstate, JsonOutput *output, const char *fname if (returning->typid != JSONOID && returning->typid != JSONBOID) ereport(ERROR, (errcode(ERRCODE_DATATYPE_MISMATCH), - errmsg("cannot use RETURNING type %s in %s", + errmsg("cannot use type %s in RETURNING clause of %s", format_type_be(returning->typid), fname), + errhint("Try returning json or jsonb."), parser_errposition(pstate, output->typeName->location))); } else @@ -4233,7 +4234,7 @@ transformJsonSerializeExpr(ParseState *pstate, JsonSerializeExpr *expr) if (typcategory != TYPCATEGORY_STRING) ereport(ERROR, (errcode(ERRCODE_DATATYPE_MISMATCH), - errmsg("cannot use RETURNING type %s in %s", + errmsg("cannot use type %s in RETURNING clause of %s", format_type_be(returning->typid), "JSON_SERIALIZE()"), errhint("Try returning a string type or bytea."))); diff --git a/src/interfaces/ecpg/test/expected/sql-sqljson.stderr b/src/interfaces/ecpg/test/expected/sql-sqljson.stderr index c030fe3a986..e55a95dd711 100644 --- a/src/interfaces/ecpg/test/expected/sql-sqljson.stderr +++ b/src/interfaces/ecpg/test/expected/sql-sqljson.stderr @@ -240,12 +240,12 @@ SQL error: null value without indicator on line 84 [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: ecpg_execute on line 99: using PQexec [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_check_PQresult on line 99: bad response - ERROR: cannot use RETURNING type jsonb in JSON_SERIALIZE() +[NO_PID]: ecpg_check_PQresult on line 99: bad response - ERROR: cannot use type jsonb in RETURNING clause of JSON_SERIALIZE() HINT: Try returning a string type or bytea. [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: raising sqlstate 42804 (sqlcode -400): cannot use RETURNING type jsonb in JSON_SERIALIZE() on line 99 +[NO_PID]: raising sqlstate 42804 (sqlcode -400): cannot use type jsonb in RETURNING clause of JSON_SERIALIZE() on line 99 [NO_PID]: sqlca: code: -400, state: 42804 -SQL error: cannot use RETURNING type jsonb in JSON_SERIALIZE() on line 99 +SQL error: cannot use type jsonb in RETURNING clause of JSON_SERIALIZE() on line 99 [NO_PID]: ecpg_execute on line 102: query: with val ( js ) as ( values ( '{ "a": 1, "b": [{ "a": 1, "b": 0, "a": 2 }] }' ) ) select js is json "IS JSON" , js is not json "IS NOT JSON" , js is json value "IS VALUE" , js is json object "IS OBJECT" , js is json array "IS ARRAY" , js is json scalar "IS SCALAR" , js is json without unique keys "WITHOUT UNIQUE" , js is json with unique keys "WITH UNIQUE" from val; with 0 parameter(s) on connection ecpg1_regression [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: ecpg_execute on line 102: using PQexec diff --git a/src/test/regress/expected/sqljson.out b/src/test/regress/expected/sqljson.out index 435d61dd4a3..5e664fae084 100644 --- a/src/test/regress/expected/sqljson.out +++ b/src/test/regress/expected/sqljson.out @@ -272,7 +272,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 type jsonb in RETURNING clause of JSON_SERIALIZE() HINT: Try returning a string type or bytea. EXPLAIN (VERBOSE, COSTS OFF) SELECT JSON_SERIALIZE('{}'); QUERY PLAN |