From a33bd79c2f36046463489fbd37c76d7f0c3f7a8e Mon Sep 17 00:00:00 2001
From: Justin Pryzby <pryzbyj@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

