diff --git a/src/backend/access/nbtree/nbtpage.c b/src/backend/access/nbtree/nbtpage.c
index bab5a4918799cff3264a4f1868114ad3d61b555e..b71f65de2c1cf8ae032b78e8541a69db238a144a 100644
--- a/src/backend/access/nbtree/nbtpage.c
+++ b/src/backend/access/nbtree/nbtpage.c
@@ -1186,7 +1186,7 @@ _bt_pagedel(Relation rel, Buffer buf)
 						(errcode(ERRCODE_INDEX_CORRUPTED),
 					errmsg("index \"%s\" contains a half-dead internal page",
 						   RelationGetRelationName(rel)),
-						 errhint("This can be caused by an interrupt VACUUM in version 9.3 or older, before upgrade. Please REINDEX it.")));
+						 errhint("This can be caused by an interrupted VACUUM in version 9.3 or older, before upgrade. Please REINDEX it.")));
 			_bt_relbuf(rel, buf);
 			return ndeleted;
 		}
diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
index 5a4dbb9c532e5d22ddf4da92663f1a7c13f501a2..235b4422969133dcf7f25091158f190f3159f3cc 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
@@ -5193,8 +5193,8 @@ readRecoveryCommandFile(void)
 			else
 				ereport(ERROR,
 						(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-						 errmsg("invalid recovery_target parameter"),
-						 errhint("The only allowed value is 'immediate'")));
+						 errmsg("invalid value for recovery parameter \"recovery_target\""),
+						 errhint("The only allowed value is \"immediate\".")));
 			ereport(DEBUG2,
 					(errmsg_internal("recovery_target = '%s'",
 									 item->value)));
@@ -5257,7 +5257,7 @@ readRecoveryCommandFile(void)
 								"recovery_min_apply_delay"),
 						 hintmsg ? errhint("%s", _(hintmsg)) : 0));
 			ereport(DEBUG2,
-					(errmsg("recovery_min_apply_delay = '%s'", item->value)));
+					(errmsg_internal("recovery_min_apply_delay = '%s'", item->value)));
 		}
 		else
 			ereport(FATAL,
diff --git a/src/backend/commands/dbcommands.c b/src/backend/commands/dbcommands.c
index 7831e900ba7c1c206a04eb6ff1f54498c13211fe..b52e6b9bc07c004b966df7e80f9555dc4fe635ef 100644
--- a/src/backend/commands/dbcommands.c
+++ b/src/backend/commands/dbcommands.c
@@ -839,7 +839,7 @@ dropdb(const char *dbname, bool missing_ok)
 	if (ReplicationSlotsCountDBSlots(db_id, &nslots, &nslots_active))
 		ereport(ERROR,
 				(errcode(ERRCODE_OBJECT_IN_USE),
-				 errmsg("database \"%s\" is used by a logical decoding slot",
+				 errmsg("database \"%s\" is used by a logical replication slot",
 						dbname),
 				 errdetail_plural("There is %d slot, %d of them active.",
 								  "There are %d slots, %d of them active.",
diff --git a/src/backend/commands/matview.c b/src/backend/commands/matview.c
index d1c8bb0d53679c3db0e58cd896b5dbf0db631868..30bd40db185544129df226680038fdccbbc9ab5f 100644
--- a/src/backend/commands/matview.c
+++ b/src/backend/commands/matview.c
@@ -597,7 +597,7 @@ refresh_by_match_merge(Oid matviewOid, Oid tempOid, Oid relowner,
 	{
 		ereport(ERROR,
 				(errcode(ERRCODE_CARDINALITY_VIOLATION),
-				 errmsg("new data for \"%s\" contains duplicate rows without any NULL columns",
+				 errmsg("new data for \"%s\" contains duplicate rows without any null columns",
 						RelationGetRelationName(matviewRel)),
 				 errdetail("Row: %s",
 			SPI_getvalue(SPI_tuptable->vals[0], SPI_tuptable->tupdesc, 1))));
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index d9263e320bcf09d00f6a97730654026ecefc8f8f..ecdff1e5e35372040383516a3ee6a42c153f2f58 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -9046,7 +9046,7 @@ ATExecSetRelOptions(Relation rel, List *defList, AlterTableType operation,
 			if (view_updatable_error)
 				ereport(ERROR,
 						(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-						 errmsg("WITH CHECK OPTION is supported only on auto-updatable views"),
+						 errmsg("WITH CHECK OPTION is supported only on automatically updatable views"),
 						 errhint("%s", view_updatable_error)));
 		}
 	}
diff --git a/src/backend/commands/view.c b/src/backend/commands/view.c
index 9d0039c42a42088ac21326d6cbd6c5ad6121ecf0..184bcd0582ccf578e23e380e72e21983fefd8248 100644
--- a/src/backend/commands/view.c
+++ b/src/backend/commands/view.c
@@ -471,7 +471,7 @@ DefineView(ViewStmt *stmt, const char *queryString)
 		if (view_updatable_error)
 			ereport(ERROR,
 					(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-					 errmsg("WITH CHECK OPTION is supported only on auto-updatable views"),
+					 errmsg("WITH CHECK OPTION is supported only on automatically updatable views"),
 					 errhint("%s", view_updatable_error)));
 	}
 
diff --git a/src/backend/libpq/be-secure-openssl.c b/src/backend/libpq/be-secure-openssl.c
index 8d8f12952a4a4f14a15f8647b96935e13d68fb39..b05364ced09dccbba068141ff9d2e2d520735c67 100644
--- a/src/backend/libpq/be-secure-openssl.c
+++ b/src/backend/libpq/be-secure-openssl.c
@@ -614,7 +614,7 @@ be_tls_write(Port *port, void *ptr, size_t len)
 				if (retries >= 20)
 					ereport(FATAL,
 							(errcode(ERRCODE_PROTOCOL_VIOLATION),
-							 errmsg("unable to complete SSL handshake")));
+							 errmsg("could not complete SSL handshake on renegotiation, too many failures")));
 			}
 		}
 	}
diff --git a/src/test/regress/expected/matview.out b/src/test/regress/expected/matview.out
index 1076b76210db3fbed29b4d1930e44c335097002d..b04510c599e98323b8b91af75280e4b4e2a6ad26 100644
--- a/src/test/regress/expected/matview.out
+++ b/src/test/regress/expected/matview.out
@@ -411,7 +411,7 @@ REFRESH MATERIALIZED VIEW mv;
 ERROR:  could not create unique index "mv_a_idx"
 DETAIL:  Key (a)=(1) is duplicated.
 REFRESH MATERIALIZED VIEW CONCURRENTLY mv;
-ERROR:  new data for "mv" contains duplicate rows without any NULL columns
+ERROR:  new data for "mv" contains duplicate rows without any null columns
 DETAIL:  Row: (1,10)
 DROP TABLE foo CASCADE;
 NOTICE:  drop cascades to materialized view mv