Most of these are new in v15. In any case, I'm not sure if the others ought to be backpatched. There may be additional fixes to make with the same grepping.
>From a33bd79c2f36046463489fbd37c76d7f0c3f7a8e Mon Sep 17 00:00:00 2001 From: Justin Pryzby <pryz...@telsasoft.com> Date: Mon, 18 Jul 2022 13:54:38 -0500 Subject: [PATCH] errdetail/hint messages should be capitalized and end with a dot
https://www.postgresql.org/docs/current/error-style-guide.html#id-1.10.6.4.7 git grep 'errdetail("[[:lower:]]' git grep 'errdetail(".*".*;' |grep -v '\."' See also: 501ed02cf6f4f60c3357775eb07578aebc912d3a 730422afcdb6784bbe20efc65de72156d470b0c4 --- 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 | 2 +- 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, 42 insertions(+), 42 deletions(-) diff --git a/contrib/basic_archive/basic_archive.c b/contrib/basic_archive/basic_archive.c index bba767c8f36..776a386e352 100644 --- a/contrib/basic_archive/basic_archive.c +++ b/contrib/basic_archive/basic_archive.c @@ -111,7 +111,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; } @@ -122,7 +122,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 ebf9ea35988..ade797159dc 100644 --- a/contrib/postgres_fdw/expected/postgres_fdw.out +++ b/contrib/postgres_fdw/expected/postgres_fdw.out @@ -9590,7 +9590,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. @@ -9611,10 +9611,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 cd2ef234d66..95dde056eba 100644 --- a/contrib/postgres_fdw/option.c +++ b/contrib/postgres_fdw/option.c @@ -193,7 +193,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) @@ -203,7 +203,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 8e645741e4e..89a005540f6 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 c5d778c91ba..02a9ffa2c99 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -17790,7 +17790,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 b1cc6a382f1..60fe320ee86 100644 --- a/src/backend/parser/parse_expr.c +++ b/src/backend/parser/parse_expr.c @@ -3447,7 +3447,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))); } } @@ -4580,7 +4580,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 ae559d9cae5..ab82fb93f8f 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 704d0af8e85..7bcaea2f8e3 100644 --- a/src/backend/utils/adt/jsonpath_exec.c +++ b/src/backend/utils/adt/jsonpath_exec.c @@ -2973,7 +2973,7 @@ 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 " + errhint("Use WITH WRAPPER clause to wrap SQL/JSON item " "sequence into array"))); } diff --git a/src/backend/utils/adt/jsonpath_gram.y b/src/backend/utils/adt/jsonpath_gram.y index 57f6beb27bf..3b27745c8f0 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 e936f36c0aa..806025f6ddb 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -12526,7 +12526,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 e2f7df50a87..322e4583016 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 88eb22a4e9c..21c5c6104d6 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 274b37dfe57..428c1f16c7c 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 aae4ba49390..d4a5ef145d7 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 cd812336f2c..89a34ffbb2d 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'); -- 2.17.1