From 535f1fc9da728f5c692c96d5a4d635b43eeef7b7 Mon Sep 17 00:00:00 2001 From: Michael Paquier Date: Wed, 20 Jul 2022 09:50:57 +0900 Subject: [PATCH] Tweak detail and hint messages to be consistent with project policy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Detail and hint messages should be full sentences and should end with a period, but some of the messages newly-introduced in v15 did not follow that. Author: Justin Pryzby Reviewed-by: Álvaro Herrera Discussion: https://postgr.es/m/20220719120948.GF12702@telsasoft.com Backpatch-through: 15 --- contrib/basic_archive/basic_archive.c | 4 +-- .../postgres_fdw/expected/postgres_fdw.out | 6 ++-- contrib/postgres_fdw/option.c | 4 +-- src/backend/commands/publicationcmds.c | 2 +- src/backend/commands/tablecmds.c | 2 +- src/backend/parser/parse_expr.c | 4 +-- src/backend/parser/parse_jsontable.c | 12 ++++---- src/backend/utils/adt/jsonpath_exec.c | 4 +-- src/backend/utils/adt/jsonpath_gram.y | 2 +- src/backend/utils/misc/guc.c | 2 +- src/test/regress/expected/jsonb_sqljson.out | 28 +++++++++---------- src/test/regress/expected/jsonpath.out | 2 +- src/test/regress/expected/publication.out | 2 +- src/test/regress/expected/sqljson.out | 10 +++---- src/test/regress/expected/triggers.out | 2 +- 15 files changed, 43 insertions(+), 43 deletions(-) diff --git a/contrib/basic_archive/basic_archive.c b/contrib/basic_archive/basic_archive.c index c217353322..7efeb0d705 100644 --- a/contrib/basic_archive/basic_archive.c +++ b/contrib/basic_archive/basic_archive.c @@ -114,7 +114,7 @@ check_archive_directory(char **newval, void **extra, GucSource source) */ if (strlen(*newval) + 64 + 2 >= MAXPGPATH) { - GUC_check_errdetail("archive directory too long"); + GUC_check_errdetail("Archive directory too long."); return false; } @@ -125,7 +125,7 @@ check_archive_directory(char **newval, void **extra, GucSource source) */ if (stat(*newval, &st) != 0 || !S_ISDIR(st.st_mode)) { - GUC_check_errdetail("specified archive directory does not exist"); + GUC_check_errdetail("Specified archive directory does not exist."); return false; } diff --git a/contrib/postgres_fdw/expected/postgres_fdw.out b/contrib/postgres_fdw/expected/postgres_fdw.out index 88cf4c0df6..ccbc94a1c9 100644 --- a/contrib/postgres_fdw/expected/postgres_fdw.out +++ b/contrib/postgres_fdw/expected/postgres_fdw.out @@ -9564,7 +9564,7 @@ HINT: Target server's authentication method must be changed or password_require -- Unpriv user cannot make the mapping passwordless ALTER USER MAPPING FOR CURRENT_USER SERVER loopback_nopw OPTIONS (ADD password_required 'false'); ERROR: password_required=false is superuser-only -HINT: User mappings with the password_required option set to false may only be created or modified by the superuser +HINT: User mappings with the password_required option set to false may only be created or modified by the superuser. SELECT 1 FROM ft1_nopw LIMIT 1; ERROR: password is required DETAIL: Non-superuser cannot connect if the server does not request a password. @@ -9585,10 +9585,10 @@ SELECT 1 FROM ft1_nopw LIMIT 1; ALTER USER MAPPING FOR CURRENT_USER SERVER loopback_nopw OPTIONS (SET password_required 'true'); ALTER USER MAPPING FOR CURRENT_USER SERVER loopback_nopw OPTIONS (ADD sslcert 'foo.crt'); ERROR: sslcert and sslkey are superuser-only -HINT: User mappings with the sslcert or sslkey options set may only be created or modified by the superuser +HINT: User mappings with the sslcert or sslkey options set may only be created or modified by the superuser. ALTER USER MAPPING FOR CURRENT_USER SERVER loopback_nopw OPTIONS (ADD sslkey 'foo.key'); ERROR: sslcert and sslkey are superuser-only -HINT: User mappings with the sslcert or sslkey options set may only be created or modified by the superuser +HINT: User mappings with the sslcert or sslkey options set may only be created or modified by the superuser. -- We're done with the role named after a specific user and need to check the -- changes to the public mapping. DROP USER MAPPING FOR CURRENT_USER SERVER loopback_nopw; diff --git a/contrib/postgres_fdw/option.c b/contrib/postgres_fdw/option.c index 572591a558..707013263d 100644 --- a/contrib/postgres_fdw/option.c +++ b/contrib/postgres_fdw/option.c @@ -195,7 +195,7 @@ postgres_fdw_validator(PG_FUNCTION_ARGS) ereport(ERROR, (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), errmsg("password_required=false is superuser-only"), - errhint("User mappings with the password_required option set to false may only be created or modified by the superuser"))); + errhint("User mappings with the password_required option set to false may only be created or modified by the superuser."))); } else if (strcmp(def->defname, "sslcert") == 0 || strcmp(def->defname, "sslkey") == 0) @@ -205,7 +205,7 @@ postgres_fdw_validator(PG_FUNCTION_ARGS) ereport(ERROR, (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), errmsg("sslcert and sslkey are superuser-only"), - errhint("User mappings with the sslcert or sslkey options set may only be created or modified by the superuser"))); + errhint("User mappings with the sslcert or sslkey options set may only be created or modified by the superuser."))); } } diff --git a/src/backend/commands/publicationcmds.c b/src/backend/commands/publicationcmds.c index 8e645741e4..89a005540f 100644 --- a/src/backend/commands/publicationcmds.c +++ b/src/backend/commands/publicationcmds.c @@ -743,7 +743,7 @@ CheckPubRelationColumnList(List *tables, const char *queryString, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("cannot use publication column list for relation \"%s\"", RelationGetRelationName(pri->relation)), - errdetail("column list cannot be used for a partitioned table when %s is false.", + errdetail("Column list cannot be used for a partitioned table when %s is false.", "publish_via_partition_root"))); } } diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index 2de0ebacec..4b3202c8c4 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -17831,7 +17831,7 @@ ATExecAttachPartition(List **wqueue, Relation rel, PartitionCmd *cmd, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("trigger \"%s\" prevents table \"%s\" from becoming a partition", trigger_name, RelationGetRelationName(attachrel)), - errdetail("ROW triggers with transition tables are not supported on partitions"))); + errdetail("ROW triggers with transition tables are not supported on partitions."))); /* * Check that the new partition's bound is valid and does not overlap any diff --git a/src/backend/parser/parse_expr.c b/src/backend/parser/parse_expr.c index 1dbdba93da..8fc3252d1b 100644 --- a/src/backend/parser/parse_expr.c +++ b/src/backend/parser/parse_expr.c @@ -3457,7 +3457,7 @@ checkJsonOutputFormat(ParseState *pstate, const JsonFormat *format, ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("unsupported JSON encoding"), - errhint("only UTF8 JSON encoding is supported"), + errhint("Only UTF8 JSON encoding is supported."), parser_errposition(pstate, format->location))); } } @@ -4590,7 +4590,7 @@ transformJsonSerializeExpr(ParseState *pstate, JsonSerializeExpr *expr) errmsg("cannot use RETURNING type %s in %s", format_type_be(returning->typid), "JSON_SERIALIZE()"), - errhint("Try returning a string type or bytea"))); + errhint("Try returning a string type or bytea."))); } } else diff --git a/src/backend/parser/parse_jsontable.c b/src/backend/parser/parse_jsontable.c index ae559d9cae..bc3272017e 100644 --- a/src/backend/parser/parse_jsontable.c +++ b/src/backend/parser/parse_jsontable.c @@ -141,7 +141,7 @@ registerJsonTableColumn(JsonTableContext *cxt, char *colname) ereport(ERROR, (errcode(ERRCODE_DUPLICATE_ALIAS), errmsg("duplicate JSON_TABLE column name: %s", colname), - errhint("JSON_TABLE column names must be distinct from one another"))); + errhint("JSON_TABLE column names must be distinct from one another."))); cxt->pathNames = lappend(cxt->pathNames, colname); } @@ -258,7 +258,7 @@ validateJsonTableChildPlan(ParseState *pstate, JsonTablePlan *plan, ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("invalid JSON_TABLE plan"), - errdetail("plan node for nested path %s was not found in plan", jtc->pathname), + errdetail("Plan node for nested path %s was not found in plan.", jtc->pathname), parser_errposition(pstate, jtc->location))); nchildren++; @@ -269,7 +269,7 @@ validateJsonTableChildPlan(ParseState *pstate, JsonTablePlan *plan, ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("invalid JSON_TABLE plan"), - errdetail("plan node contains some extra or duplicate sibling nodes"), + errdetail("Plan node contains some extra or duplicate sibling nodes."), parser_errposition(pstate, plan ? plan->location : -1))); } @@ -385,7 +385,7 @@ transformJsonTableChildPlan(JsonTableContext *cxt, JsonTablePlan *plan, ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("invalid JSON_TABLE plan"), - errdetail("path name was %s not found in nested columns list", + errdetail("Path name was %s not found in nested columns list.", plan->pathname), parser_errposition(cxt->pstate, plan->location))); @@ -586,7 +586,7 @@ transformJsonTableColumns(JsonTableContext *cxt, JsonTablePlan *plan, ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("invalid JSON_TABLE plan"), - errdetail("expected INNER or OUTER JSON_TABLE plan node"), + errdetail("Expected INNER or OUTER JSON_TABLE plan node."), parser_errposition(cxt->pstate, plan->location))); parentPlan = plan->plan1; @@ -605,7 +605,7 @@ transformJsonTableColumns(JsonTableContext *cxt, JsonTablePlan *plan, ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("invalid JSON_TABLE plan"), - errdetail("path name mismatch: expected %s but %s is given", + errdetail("Path name mismatch: expected %s but %s is given.", *pathName, parentPlan->pathname), parser_errposition(cxt->pstate, plan->location))); diff --git a/src/backend/utils/adt/jsonpath_exec.c b/src/backend/utils/adt/jsonpath_exec.c index 0943a381ba..10c7e64aab 100644 --- a/src/backend/utils/adt/jsonpath_exec.c +++ b/src/backend/utils/adt/jsonpath_exec.c @@ -2973,8 +2973,8 @@ JsonPathQuery(Datum jb, JsonPath *jp, JsonWrapper wrapper, bool *empty, (errcode(ERRCODE_MORE_THAN_ONE_SQL_JSON_ITEM), errmsg("JSON path expression in JSON_QUERY should return " "singleton item without wrapper"), - errhint("use WITH WRAPPER clause to wrap SQL/JSON item " - "sequence into array"))); + errhint("Use WITH WRAPPER clause to wrap SQL/JSON item " + "sequence into array."))); } if (first) diff --git a/src/backend/utils/adt/jsonpath_gram.y b/src/backend/utils/adt/jsonpath_gram.y index 57f6beb27b..f903dba3e3 100644 --- a/src/backend/utils/adt/jsonpath_gram.y +++ b/src/backend/utils/adt/jsonpath_gram.y @@ -526,7 +526,7 @@ makeItemLikeRegex(JsonPathParseItem *expr, JsonPathString *pattern, ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("invalid input syntax for type %s", "jsonpath"), - errdetail("unrecognized flag character \"%.*s\" in LIKE_REGEX predicate", + errdetail("Unrecognized flag character \"%.*s\" in LIKE_REGEX predicate.", pg_mblen(flags->val + i), flags->val + i))); break; } diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index a3457ee6c8..21b10f1fc9 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -12565,7 +12565,7 @@ check_client_connection_check_interval(int *newval, void **extra, GucSource sour { if (!WaitEventSetCanReportClosed() && *newval != 0) { - GUC_check_errdetail("client_connection_check_interval must be set to 0 on this platform"); + GUC_check_errdetail("client_connection_check_interval must be set to 0 on this platform."); return false; } return true; diff --git a/src/test/regress/expected/jsonb_sqljson.out b/src/test/regress/expected/jsonb_sqljson.out index e2f7df50a8..ef496110af 100644 --- a/src/test/regress/expected/jsonb_sqljson.out +++ b/src/test/regress/expected/jsonb_sqljson.out @@ -716,7 +716,7 @@ SELECT JSON_QUERY(jsonb '[]', '$[*]' ERROR ON ERROR); SELECT JSON_QUERY(jsonb '[1,2]', '$[*]' ERROR ON ERROR); ERROR: JSON path expression in JSON_QUERY should return singleton item without wrapper -HINT: use WITH WRAPPER clause to wrap SQL/JSON item sequence into array +HINT: Use WITH WRAPPER clause to wrap SQL/JSON item sequence into array. SELECT JSON_QUERY(jsonb '[1,2]', '$[*]' DEFAULT '"empty"' ON ERROR); json_query ------------ @@ -1378,7 +1378,7 @@ SELECT * FROM JSON_TABLE( ) ) jt; ERROR: duplicate JSON_TABLE column name: a -HINT: JSON_TABLE column names must be distinct from one another +HINT: JSON_TABLE column names must be distinct from one another. SELECT * FROM JSON_TABLE( jsonb '[]', '$' AS a COLUMNS ( @@ -1390,7 +1390,7 @@ SELECT * FROM JSON_TABLE( ) ) jt; ERROR: duplicate JSON_TABLE column name: a -HINT: JSON_TABLE column names must be distinct from one another +HINT: JSON_TABLE column names must be distinct from one another. SELECT * FROM JSON_TABLE( jsonb '[]', '$' COLUMNS ( @@ -1402,7 +1402,7 @@ SELECT * FROM JSON_TABLE( ) ) jt; ERROR: duplicate JSON_TABLE column name: b -HINT: JSON_TABLE column names must be distinct from one another +HINT: JSON_TABLE column names must be distinct from one another. SELECT * FROM JSON_TABLE( jsonb '[]', '$' COLUMNS ( @@ -1420,7 +1420,7 @@ SELECT * FROM JSON_TABLE( ) ) jt; ERROR: duplicate JSON_TABLE column name: a -HINT: JSON_TABLE column names must be distinct from one another +HINT: JSON_TABLE column names must be distinct from one another. -- JSON_TABLE: plan validation SELECT * FROM JSON_TABLE( jsonb 'null', '$[*]' AS p0 @@ -1438,7 +1438,7 @@ SELECT * FROM JSON_TABLE( ERROR: invalid JSON_TABLE plan LINE 12: PLAN (p1) ^ -DETAIL: path name mismatch: expected p0 but p1 is given +DETAIL: Path name mismatch: expected p0 but p1 is given. SELECT * FROM JSON_TABLE( jsonb 'null', '$[*]' AS p0 COLUMNS ( @@ -1455,7 +1455,7 @@ SELECT * FROM JSON_TABLE( ERROR: invalid JSON_TABLE plan LINE 4: NESTED PATH '$' AS p1 COLUMNS ( ^ -DETAIL: plan node for nested path p1 was not found in plan +DETAIL: Plan node for nested path p1 was not found in plan. SELECT * FROM JSON_TABLE( jsonb 'null', '$[*]' AS p0 COLUMNS ( @@ -1472,7 +1472,7 @@ SELECT * FROM JSON_TABLE( ERROR: invalid JSON_TABLE plan LINE 4: NESTED PATH '$' AS p1 COLUMNS ( ^ -DETAIL: plan node for nested path p1 was not found in plan +DETAIL: Plan node for nested path p1 was not found in plan. SELECT * FROM JSON_TABLE( jsonb 'null', '$[*]' AS p0 COLUMNS ( @@ -1489,7 +1489,7 @@ SELECT * FROM JSON_TABLE( ERROR: invalid JSON_TABLE plan LINE 12: PLAN (p0 UNION p1 UNION p11) ^ -DETAIL: expected INNER or OUTER JSON_TABLE plan node +DETAIL: Expected INNER or OUTER JSON_TABLE plan node. SELECT * FROM JSON_TABLE( jsonb 'null', '$[*]' AS p0 COLUMNS ( @@ -1506,7 +1506,7 @@ SELECT * FROM JSON_TABLE( ERROR: invalid JSON_TABLE plan LINE 8: NESTED PATH '$' AS p2 COLUMNS ( ^ -DETAIL: plan node for nested path p2 was not found in plan +DETAIL: Plan node for nested path p2 was not found in plan. SELECT * FROM JSON_TABLE( jsonb 'null', '$[*]' AS p0 COLUMNS ( @@ -1523,7 +1523,7 @@ SELECT * FROM JSON_TABLE( ERROR: invalid JSON_TABLE plan LINE 5: NESTED PATH '$' AS p11 COLUMNS ( foo int ), ^ -DETAIL: plan node for nested path p11 was not found in plan +DETAIL: Plan node for nested path p11 was not found in plan. SELECT * FROM JSON_TABLE( jsonb 'null', '$[*]' AS p0 COLUMNS ( @@ -1540,7 +1540,7 @@ SELECT * FROM JSON_TABLE( ERROR: invalid JSON_TABLE plan LINE 12: PLAN (p0 OUTER ((p1 UNION p11) CROSS p2)) ^ -DETAIL: plan node contains some extra or duplicate sibling nodes +DETAIL: Plan node contains some extra or duplicate sibling nodes. SELECT * FROM JSON_TABLE( jsonb 'null', '$[*]' AS p0 COLUMNS ( @@ -1557,7 +1557,7 @@ SELECT * FROM JSON_TABLE( ERROR: invalid JSON_TABLE plan LINE 6: NESTED PATH '$' AS p12 COLUMNS ( bar int ) ^ -DETAIL: plan node for nested path p12 was not found in plan +DETAIL: Plan node for nested path p12 was not found in plan. SELECT * FROM JSON_TABLE( jsonb 'null', '$[*]' AS p0 COLUMNS ( @@ -1574,7 +1574,7 @@ SELECT * FROM JSON_TABLE( ERROR: invalid JSON_TABLE plan LINE 9: NESTED PATH '$' AS p21 COLUMNS ( baz int ) ^ -DETAIL: plan node for nested path p21 was not found in plan +DETAIL: Plan node for nested path p21 was not found in plan. SELECT * FROM JSON_TABLE( jsonb 'null', 'strict $[*]' AS p0 COLUMNS ( diff --git a/src/test/regress/expected/jsonpath.out b/src/test/regress/expected/jsonpath.out index 88eb22a4e9..fdaac58367 100644 --- a/src/test/regress/expected/jsonpath.out +++ b/src/test/regress/expected/jsonpath.out @@ -477,7 +477,7 @@ select '$ ? (@ like_regex "pattern" flag "a")'::jsonpath; ERROR: invalid input syntax for type jsonpath LINE 1: select '$ ? (@ like_regex "pattern" flag "a")'::jsonpath; ^ -DETAIL: unrecognized flag character "a" in LIKE_REGEX predicate +DETAIL: Unrecognized flag character "a" in LIKE_REGEX predicate. select '$ < 1'::jsonpath; jsonpath ---------- diff --git a/src/test/regress/expected/publication.out b/src/test/regress/expected/publication.out index 274b37dfe5..428c1f16c7 100644 --- a/src/test/regress/expected/publication.out +++ b/src/test/regress/expected/publication.out @@ -940,7 +940,7 @@ ALTER PUBLICATION testpub6 SET (PUBLISH_VIA_PARTITION_ROOT=0); -- fail - cannot use column list for partitioned table ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_part_pk (a); ERROR: cannot use publication column list for relation "rf_tbl_abcd_part_pk" -DETAIL: column list cannot be used for a partitioned table when publish_via_partition_root is false. +DETAIL: Column list cannot be used for a partitioned table when publish_via_partition_root is false. -- ok - can use column list for partition ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_part_pk_1 (a); -- ok - "a" is a PK col diff --git a/src/test/regress/expected/sqljson.out b/src/test/regress/expected/sqljson.out index aae4ba4939..bdd0969a50 100644 --- a/src/test/regress/expected/sqljson.out +++ b/src/test/regress/expected/sqljson.out @@ -317,7 +317,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() -HINT: Try returning a string type or bytea +HINT: Try returning a string type or bytea. EXPLAIN (VERBOSE, COSTS OFF) SELECT JSON_SERIALIZE('{}'); QUERY PLAN ----------------------------------------------------- @@ -403,12 +403,12 @@ SELECT JSON_OBJECT(RETURNING bytea FORMAT JSON ENCODING UTF16); ERROR: unsupported JSON encoding LINE 1: SELECT JSON_OBJECT(RETURNING bytea FORMAT JSON ENCODING UTF1... ^ -HINT: only UTF8 JSON encoding is supported +HINT: Only UTF8 JSON encoding is supported. SELECT JSON_OBJECT(RETURNING bytea FORMAT JSON ENCODING UTF32); ERROR: unsupported JSON encoding LINE 1: SELECT JSON_OBJECT(RETURNING bytea FORMAT JSON ENCODING UTF3... ^ -HINT: only UTF8 JSON encoding is supported +HINT: Only UTF8 JSON encoding is supported. SELECT JSON_OBJECT('foo': NULL::int FORMAT JSON); ERROR: cannot use non-string types with explicit FORMAT JSON clause LINE 1: SELECT JSON_OBJECT('foo': NULL::int FORMAT JSON); @@ -691,12 +691,12 @@ SELECT JSON_ARRAY(RETURNING bytea FORMAT JSON ENCODING UTF16); ERROR: unsupported JSON encoding LINE 1: SELECT JSON_ARRAY(RETURNING bytea FORMAT JSON ENCODING UTF16... ^ -HINT: only UTF8 JSON encoding is supported +HINT: Only UTF8 JSON encoding is supported. SELECT JSON_ARRAY(RETURNING bytea FORMAT JSON ENCODING UTF32); ERROR: unsupported JSON encoding LINE 1: SELECT JSON_ARRAY(RETURNING bytea FORMAT JSON ENCODING UTF32... ^ -HINT: only UTF8 JSON encoding is supported +HINT: Only UTF8 JSON encoding is supported. SELECT JSON_ARRAY('aaa', 111, true, array[1,2,3], NULL, json '{"a": [1]}', jsonb '["a",3]'); json_array ----------------------------------------------------- diff --git a/src/test/regress/expected/triggers.out b/src/test/regress/expected/triggers.out index cd812336f2..89a34ffbb2 100644 --- a/src/test/regress/expected/triggers.out +++ b/src/test/regress/expected/triggers.out @@ -2951,7 +2951,7 @@ create trigger child_row_trig -- but now we're not allowed to reattach it alter table parent attach partition child for values in ('AAA'); ERROR: trigger "child_row_trig" prevents table "child" from becoming a partition -DETAIL: ROW triggers with transition tables are not supported on partitions +DETAIL: ROW triggers with transition tables are not supported on partitions. -- drop the trigger, and now we're allowed to attach it again drop trigger child_row_trig on child; alter table parent attach partition child for values in ('AAA');