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

Reply via email to