Tweak detail and hint messages to be consistent with project policy
authorMichael Paquier <[email protected]>
Wed, 20 Jul 2022 00:50:12 +0000 (09:50 +0900)
committerMichael Paquier <[email protected]>
Wed, 20 Jul 2022 00:50:12 +0000 (09:50 +0900)
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[email protected]
Backpatch-through: 15

15 files changed:
contrib/basic_archive/basic_archive.c
contrib/postgres_fdw/expected/postgres_fdw.out
contrib/postgres_fdw/option.c
src/backend/commands/publicationcmds.c
src/backend/commands/tablecmds.c
src/backend/parser/parse_expr.c
src/backend/parser/parse_jsontable.c
src/backend/utils/adt/jsonpath_exec.c
src/backend/utils/adt/jsonpath_gram.y
src/backend/utils/misc/guc.c
src/test/regress/expected/jsonb_sqljson.out
src/test/regress/expected/jsonpath.out
src/test/regress/expected/publication.out
src/test/regress/expected/sqljson.out
src/test/regress/expected/triggers.out

index bba767c8f36dc595c21075f1211ab009efa2d892..776a386e35254438c4ea4d2a41a33c8fab92e56d 100644 (file)
@@ -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;
    }
 
index ebf9ea35988358f48ceecd3f0c72802631df9e7a..ade797159dc7a213655e59f54bf22aebf0257dc4 100644 (file)
@@ -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;
index cd2ef234d66a56d74350891a0617e985f0df291e..95dde056ebaaf92448957cf458893936f133031d 100644 (file)
@@ -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.")));
        }
    }
 
index 8e645741e4e8ee534f889bf1de50014530bf892a..89a005540f68d5e0efada85f85a30ecb50e30228 100644 (file)
@@ -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")));
    }
 }
index a2f577024a1a2705e4d64b4b4221c577ebf7b996..7fbee0c1f71b92d18c484ed9563dad52562e15e8 100644 (file)
@@ -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
index b1cc6a382f1831c1979fdd312156a61f7dfb39bf..9f567f4bf414a9695393a1f7566767709f583a57 100644 (file)
@@ -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
index ae559d9cae566bb33184538a4ba9a76976746599..bc3272017ef1af5534275bf206dcdb75ca1e2406 100644 (file)
@@ -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)));
 
index 0943a381bacea7e9c1dd76814b0f1d660e1a2580..10c7e64aab35dfb08487ad1d3e3c6c16ce8945d7 100644 (file)
@@ -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)
index 57f6beb27bf8c0e95216d0ce4454a135471f912c..f903dba3e341d7e26b6e564d7c92680e2547f9e7 100644 (file)
@@ -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;
        }
index 28da02ff6c94f22e3cfa3bf70f36110022d8d87d..af4a1c306894e4975896ca0c216ec04d51027be4 100644 (file)
@@ -12551,7 +12551,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;
index e2f7df50a879c0a5a5e633fa5b003fb4aedcc37f..ef496110af3a666f89e2783063cfa263544f23eb 100644 (file)
@@ -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 (
index 88eb22a4e9c97fe3df52e8d89f244ad31f45a8c8..fdaac58367af4f409c842417c45d77bf5f0d393a 100644 (file)
@@ -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 
 ----------
index 274b37dfe572c95203785412de46e5f26d7fa917..428c1f16c7c6462ba505e7045c4856825a797db4 100644 (file)
@@ -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
index aae4ba4939008ffd23dc10b2d46d9fde3712a88a..bdd0969a509a781a1c26fb83db6040e41de26740 100644 (file)
@@ -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                      
 -----------------------------------------------------
index cd812336f2c70b1703d546f850a270f797829130..89a34ffbb2df1c78cad124d22cd3793f0265cf2a 100644 (file)
@@ -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');