From 255eeb624d6d3493d82cbd152c9c714cc68dad4b Mon Sep 17 00:00:00 2001
From: Peter Smith <peter.b.smith@fujitsu.com>
Date: Tue, 28 Nov 2023 11:49:04 +1100
Subject: [PATCH v3] GUC names - maybe add quotes

---
 src/backend/utils/misc/guc.c                       | 273 ++++++++++++++-------
 .../test_oat_hooks/expected/test_oat_hooks.out     |   4 +-
 .../modules/unsafe_tests/expected/guc_privs.out    |  54 ++--
 .../modules/unsafe_tests/expected/rolenames.out    |   2 +-
 src/test/regress/expected/compression.out          |   4 +-
 src/test/regress/expected/compression_1.out        |   6 +-
 src/test/regress/expected/create_am.out            |   4 +-
 src/test/regress/expected/guc.out                  |  10 +-
 src/test/regress/expected/password.out             |   4 +-
 src/test/regress/expected/subscription.out         |   2 +-
 src/test/regress/expected/transactions.out         |   8 +-
 11 files changed, 233 insertions(+), 138 deletions(-)

diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index e76c083..248d2cb 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -265,6 +265,45 @@ static bool call_string_check_hook(struct config_string *conf, char **newval,
 static bool call_enum_check_hook(struct config_enum *conf, int *newval,
 								 void **extra, GucSource source, int elevel);
 
+/* Handy macro for adding optional quotes to GUC names during substitution. */
+#define GUC_FORMAT(s)\
+	quotes_needed_for_GUC_name(s) ? "\"" : "",\
+	s,\
+	quotes_needed_for_GUC_name(s) ? "\"" : ""
+
+/*
+ * Return whether the GUC name should be enclosed in double-quotes.
+ *
+ * Quoting is intended for names which potential could be mistaken for
+ * normal English words.
+ *
+ * - Lowercase alpha needs quotes unless there are underscores
+ * - Upper/mixed case alpha does not need quotes
+ * - Anything else needs quotes
+ */
+static
+bool
+quotes_needed_for_GUC_name(const char *name)
+{
+	bool underscore = false;
+	bool lowercase = false;
+	bool uppercase = false;
+	bool other = false;
+
+	for (const char *p = name; *p; p++)
+	{
+		if (*p == '_')
+			underscore = true;
+		else if ('a' <= *p && *p <= 'z')
+			lowercase = true;
+		else if ('A' <= *p && *p <= 'Z')
+			uppercase = true;
+		else
+			other = true;
+	}
+
+	return other || (lowercase && !underscore && !uppercase);
+}
 
 /*
  * This function handles both actual config file (re)loads and execution of
@@ -420,8 +459,9 @@ ProcessConfigFileInternal(GucContext context, bool applySettings, int elevel)
 			/* Invalid non-custom variable, so complain */
 			ereport(elevel,
 					(errcode(ERRCODE_UNDEFINED_OBJECT),
-					 errmsg("unrecognized configuration parameter \"%s\" in file \"%s\" line %d",
-							item->name,
+			/* translator: %s%s%s is for an optionally quoted GUC name */
+					 errmsg("unrecognized configuration parameter %s%s%s in file \"%s\" line %d",
+							GUC_FORMAT(item->name),
 							item->filename, item->sourceline)));
 			item->errmsg = pstrdup("unrecognized configuration parameter");
 			error = true;
@@ -460,10 +500,13 @@ ProcessConfigFileInternal(GucContext context, bool applySettings, int elevel)
 			gconf->status |= GUC_PENDING_RESTART;
 			ereport(elevel,
 					(errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
-					 errmsg("parameter \"%s\" cannot be changed without restarting the server",
-							gconf->name)));
-			record_config_file_error(psprintf("parameter \"%s\" cannot be changed without restarting the server",
-											  gconf->name),
+			/* translator: %s%s%s is for an optionally quoted GUC name */
+					 errmsg("parameter %s%s%s cannot be changed without restarting the server",
+							GUC_FORMAT(gconf->name))));
+			record_config_file_error(
+			/* translator: %s%s%s is for an optionally quoted GUC name */
+									 psprintf("parameter %s%s%s cannot be changed without restarting the server",
+											  GUC_FORMAT(gconf->name)),
 									 NULL, 0,
 									 &head, &tail);
 			error = true;
@@ -496,8 +539,9 @@ ProcessConfigFileInternal(GucContext context, bool applySettings, int elevel)
 			/* Log the change if appropriate */
 			if (context == PGC_SIGHUP)
 				ereport(elevel,
-						(errmsg("parameter \"%s\" removed from configuration file, reset to default",
-								gconf->name)));
+				/* translator: %s%s%s is for an optionally quoted GUC name */
+						(errmsg("parameter %s%s%s removed from configuration file, reset to default",
+								GUC_FORMAT(gconf->name))));
 		}
 	}
 
@@ -561,8 +605,10 @@ ProcessConfigFileInternal(GucContext context, bool applySettings, int elevel)
 					post_value = "";
 				if (strcmp(pre_value, post_value) != 0)
 					ereport(elevel,
-							(errmsg("parameter \"%s\" changed to \"%s\"",
-									item->name, item->value)));
+					/* translator: %s%s%s is for an optionally quoted GUC name */
+							(errmsg("parameter %s%s%s changed to \"%s\"",
+									GUC_FORMAT(item->name),
+									item->value)));
 			}
 			item->applied = true;
 		}
@@ -1129,8 +1175,9 @@ assignable_custom_variable_name(const char *name, bool skip_errors, int elevel)
 			if (!skip_errors)
 				ereport(elevel,
 						(errcode(ERRCODE_INVALID_NAME),
-						 errmsg("invalid configuration parameter name \"%s\"",
-								name),
+				/* translator: %s%s%s is for an optionally quoted GUC name */
+						 errmsg("invalid configuration parameter name %s%s%s",
+								GUC_FORMAT(name)),
 						 errdetail("Custom parameter names must be two or more simple identifiers separated by dots.")));
 			return false;
 		}
@@ -1145,8 +1192,9 @@ assignable_custom_variable_name(const char *name, bool skip_errors, int elevel)
 				if (!skip_errors)
 					ereport(elevel,
 							(errcode(ERRCODE_INVALID_NAME),
-							 errmsg("invalid configuration parameter name \"%s\"",
-									name),
+					/* translator: %s%s%s is for an optionally quoted GUC name */
+							 errmsg("invalid configuration parameter name %s%s%s",
+									GUC_FORMAT(name)),
 							 errdetail("\"%s\" is a reserved prefix.",
 									   rcprefix)));
 				return false;
@@ -1160,8 +1208,9 @@ assignable_custom_variable_name(const char *name, bool skip_errors, int elevel)
 	if (!skip_errors)
 		ereport(elevel,
 				(errcode(ERRCODE_UNDEFINED_OBJECT),
-				 errmsg("unrecognized configuration parameter \"%s\"",
-						name)));
+		/* translator: %s%s%s is for an optionally quoted GUC name */
+				 errmsg("unrecognized configuration parameter %s%s%s",
+						GUC_FORMAT(name))));
 	return false;
 }
 
@@ -1270,8 +1319,9 @@ find_option(const char *name, bool create_placeholders, bool skip_errors,
 	if (!skip_errors)
 		ereport(elevel,
 				(errcode(ERRCODE_UNDEFINED_OBJECT),
-				 errmsg("unrecognized configuration parameter \"%s\"",
-						name)));
+		/* translator: %s%s%s is for an optionally quoted GUC name */
+				 errmsg("unrecognized configuration parameter %s%s%s",
+						GUC_FORMAT(name))));
 	return NULL;
 }
 
@@ -3125,8 +3175,9 @@ parse_and_validate_value(struct config_generic *record,
 				{
 					ereport(elevel,
 							(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-							 errmsg("parameter \"%s\" requires a Boolean value",
-									name)));
+					/* translator: %s%s%s is for an optionally quoted GUC name */
+							 errmsg("parameter %s%s%s requires a Boolean value",
+									GUC_FORMAT(name))));
 					return false;
 				}
 
@@ -3145,8 +3196,9 @@ parse_and_validate_value(struct config_generic *record,
 				{
 					ereport(elevel,
 							(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-							 errmsg("invalid value for parameter \"%s\": \"%s\"",
-									name, value),
+					/* translator: %s%s%s is for an optionally quoted GUC name */
+							 errmsg("invalid value for parameter %s%s%s: \"%s\"",
+									GUC_FORMAT(name), value),
 							 hintmsg ? errhint("%s", _(hintmsg)) : 0));
 					return false;
 				}
@@ -3157,11 +3209,12 @@ parse_and_validate_value(struct config_generic *record,
 
 					ereport(elevel,
 							(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-							 errmsg("%d%s%s is outside the valid range for parameter \"%s\" (%d .. %d)",
+					/* translator: %s%s%s is for an optionally quoted GUC name */
+							 errmsg("%d%s%s is outside the valid range for parameter %s%s%s (%d .. %d)",
 									newval->intval,
 									unit ? " " : "",
 									unit ? unit : "",
-									name,
+									GUC_FORMAT(name),
 									conf->min, conf->max)));
 					return false;
 				}
@@ -3181,8 +3234,9 @@ parse_and_validate_value(struct config_generic *record,
 				{
 					ereport(elevel,
 							(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-							 errmsg("invalid value for parameter \"%s\": \"%s\"",
-									name, value),
+				/* translator: %s%s%s is for an optionally quoted GUC name */
+							 errmsg("invalid value for parameter %s%s%s: \"%s\"",
+									GUC_FORMAT(name), value),
 							 hintmsg ? errhint("%s", _(hintmsg)) : 0));
 					return false;
 				}
@@ -3193,11 +3247,12 @@ parse_and_validate_value(struct config_generic *record,
 
 					ereport(elevel,
 							(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-							 errmsg("%g%s%s is outside the valid range for parameter \"%s\" (%g .. %g)",
+					/* translator: %s%s%s is for an optionally quoted GUC name */
+							 errmsg("%g%s%s is outside the valid range for parameter %s%s%s (%g .. %g)",
 									newval->realval,
 									unit ? " " : "",
 									unit ? unit : "",
-									name,
+									GUC_FORMAT(name),
 									conf->min, conf->max)));
 					return false;
 				}
@@ -3251,8 +3306,9 @@ parse_and_validate_value(struct config_generic *record,
 
 					ereport(elevel,
 							(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-							 errmsg("invalid value for parameter \"%s\": \"%s\"",
-									name, value),
+					/* translator: %s%s%s is for an optionally quoted GUC name */
+							 errmsg("invalid value for parameter %s%s%s: \"%s\"",
+									GUC_FORMAT(name), value),
 							 hintmsg ? errhint("%s", _(hintmsg)) : 0));
 
 					if (hintmsg)
@@ -3410,8 +3466,9 @@ set_config_option_ext(const char *name, const char *value,
 			{
 				ereport(elevel,
 						(errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
-						 errmsg("parameter \"%s\" cannot be changed",
-								name)));
+				/* translator: %s%s%s is for an optionally quoted GUC name */
+						 errmsg("parameter %s%s%s cannot be changed",
+								GUC_FORMAT(name))));
 				return 0;
 			}
 			break;
@@ -3433,8 +3490,9 @@ set_config_option_ext(const char *name, const char *value,
 			{
 				ereport(elevel,
 						(errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
-						 errmsg("parameter \"%s\" cannot be changed without restarting the server",
-								name)));
+				/* translator: %s%s%s is for an optionally quoted GUC name */
+						 errmsg("parameter %s%s%s cannot be changed without restarting the server",
+								GUC_FORMAT(name))));
 				return 0;
 			}
 			break;
@@ -3443,8 +3501,9 @@ set_config_option_ext(const char *name, const char *value,
 			{
 				ereport(elevel,
 						(errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
-						 errmsg("parameter \"%s\" cannot be changed now",
-								name)));
+				/* translator: %s%s%s is for an optionally quoted GUC name */
+						 errmsg("parameter %s%s%s cannot be changed now",
+								GUC_FORMAT(name))));
 				return 0;
 			}
 
@@ -3470,8 +3529,9 @@ set_config_option_ext(const char *name, const char *value,
 					/* No granted privilege */
 					ereport(elevel,
 							(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
-							 errmsg("permission denied to set parameter \"%s\"",
-									name)));
+					/* translator: %s%s%s is for an optionally quoted GUC name */
+							 errmsg("permission denied to set parameter %s%s%s",
+									GUC_FORMAT(name))));
 					return 0;
 				}
 			}
@@ -3508,8 +3568,9 @@ set_config_option_ext(const char *name, const char *value,
 			{
 				ereport(elevel,
 						(errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
-						 errmsg("parameter \"%s\" cannot be set after connection start",
-								name)));
+				/* translator: %s%s%s is for an optionally quoted GUC name */
+						 errmsg("parameter %s%s%s cannot be set after connection start",
+								GUC_FORMAT(name))));
 				return 0;
 			}
 			break;
@@ -3528,8 +3589,9 @@ set_config_option_ext(const char *name, const char *value,
 					/* No granted privilege */
 					ereport(elevel,
 							(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
-							 errmsg("permission denied to set parameter \"%s\"",
-									name)));
+					/* translator: %s%s%s is for an optionally quoted GUC name */
+							 errmsg("permission denied to set parameter %s%s%s",
+									GUC_FORMAT(name))));
 					return 0;
 				}
 			}
@@ -3567,16 +3629,18 @@ set_config_option_ext(const char *name, const char *value,
 			 */
 			ereport(elevel,
 					(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
-					 errmsg("cannot set parameter \"%s\" within security-definer function",
-							name)));
+			/* translator: %s%s%s is for an optionally quoted GUC name */
+					 errmsg("cannot set parameter %s%s%s within security-definer function",
+							GUC_FORMAT(name))));
 			return 0;
 		}
 		if (InSecurityRestrictedOperation())
 		{
 			ereport(elevel,
 					(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
-					 errmsg("cannot set parameter \"%s\" within security-restricted operation",
-							name)));
+			/* translator: %s%s%s is for an optionally quoted GUC name */
+					 errmsg("cannot set parameter %s%s%s within security-restricted operation",
+							GUC_FORMAT(name))));
 			return 0;
 		}
 	}
@@ -3588,15 +3652,18 @@ set_config_option_ext(const char *name, const char *value,
 		{
 			ereport(elevel,
 					(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-					 errmsg("parameter \"%s\" cannot be reset", name)));
+			/* translator: %s%s%s is for an optionally quoted GUC name */
+					 errmsg("parameter %s%s%s cannot be reset",
+							GUC_FORMAT(name))));
 			return 0;
 		}
 		if (action == GUC_ACTION_SAVE)
 		{
 			ereport(elevel,
 					(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-					 errmsg("parameter \"%s\" cannot be set locally in functions",
-							name)));
+			/* translator: %s%s%s is for an optionally quoted GUC name */
+					 errmsg("parameter %s%s%s cannot be set locally in functions",
+							GUC_FORMAT(name))));
 			return 0;
 		}
 	}
@@ -3621,8 +3688,8 @@ set_config_option_ext(const char *name, const char *value,
 	{
 		if (changeVal && !makeDefault)
 		{
-			elog(DEBUG3, "\"%s\": setting ignored because previous source is higher priority",
-				 name);
+			elog(DEBUG3, "%s%s%s: setting ignored because previous source is higher priority",
+				 GUC_FORMAT(name));
 			return -1;
 		}
 		changeVal = false;
@@ -3673,8 +3740,9 @@ set_config_option_ext(const char *name, const char *value,
 						record->status |= GUC_PENDING_RESTART;
 						ereport(elevel,
 								(errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
-								 errmsg("parameter \"%s\" cannot be changed without restarting the server",
-										name)));
+						/* translator: %s%s%s is for an optionally quoted GUC name */
+								 errmsg("parameter %s%s%s cannot be changed without restarting the server",
+										GUC_FORMAT(name))));
 						return 0;
 					}
 					record->status &= ~GUC_PENDING_RESTART;
@@ -3771,8 +3839,9 @@ set_config_option_ext(const char *name, const char *value,
 						record->status |= GUC_PENDING_RESTART;
 						ereport(elevel,
 								(errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
-								 errmsg("parameter \"%s\" cannot be changed without restarting the server",
-										name)));
+						/* translator: %s%s%s is for an optionally quoted GUC name */
+								 errmsg("parameter %s%s%s cannot be changed without restarting the server",
+										GUC_FORMAT(name))));
 						return 0;
 					}
 					record->status &= ~GUC_PENDING_RESTART;
@@ -3869,8 +3938,9 @@ set_config_option_ext(const char *name, const char *value,
 						record->status |= GUC_PENDING_RESTART;
 						ereport(elevel,
 								(errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
-								 errmsg("parameter \"%s\" cannot be changed without restarting the server",
-										name)));
+						/* translator: %s%s%s is for an optionally quoted GUC name */
+								 errmsg("parameter %s%s%s cannot be changed without restarting the server",
+										GUC_FORMAT(name))));
 						return 0;
 					}
 					record->status &= ~GUC_PENDING_RESTART;
@@ -3993,8 +4063,9 @@ set_config_option_ext(const char *name, const char *value,
 						record->status |= GUC_PENDING_RESTART;
 						ereport(elevel,
 								(errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
-								 errmsg("parameter \"%s\" cannot be changed without restarting the server",
-										name)));
+						/* translator: %s%s%s is for an optionally quoted GUC name */
+								 errmsg("parameter %s%s%s cannot be changed without restarting the server",
+										GUC_FORMAT(name))));
 						return 0;
 					}
 					record->status &= ~GUC_PENDING_RESTART;
@@ -4096,8 +4167,9 @@ set_config_option_ext(const char *name, const char *value,
 						record->status |= GUC_PENDING_RESTART;
 						ereport(elevel,
 								(errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
-								 errmsg("parameter \"%s\" cannot be changed without restarting the server",
-										name)));
+						/* translator: %s%s%s is for an optionally quoted GUC name */
+								 errmsg("parameter %s%s%s cannot be changed without restarting the server",
+										GUC_FORMAT(name))));
 						return 0;
 					}
 					record->status &= ~GUC_PENDING_RESTART;
@@ -4238,7 +4310,9 @@ GetConfigOption(const char *name, bool missing_ok, bool restrict_privileged)
 		!ConfigOptionIsVisible(record))
 		ereport(ERROR,
 				(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
-				 errmsg("permission denied to examine \"%s\"", name),
+		/* translator: %s%s%s is for an optionally quoted GUC name */
+				 errmsg("permission denied to examine %s%s%s",
+						GUC_FORMAT(name)),
 				 errdetail("Only roles with privileges of the \"%s\" role may examine this parameter.",
 						   "pg_read_all_settings")));
 
@@ -4534,8 +4608,9 @@ AlterSystemSetConfigFile(AlterSystemStmt *altersysstmt)
 			if (aclresult != ACLCHECK_OK)
 				ereport(ERROR,
 						(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
-						 errmsg("permission denied to set parameter \"%s\"",
-								name)));
+				/* translator: %s%s%s is for an optionally quoted GUC name */
+						 errmsg("permission denied to set parameter %s%s%s",
+								GUC_FORMAT(name))));
 		}
 	}
 
@@ -4559,8 +4634,9 @@ AlterSystemSetConfigFile(AlterSystemStmt *altersysstmt)
 				(record->flags & GUC_DISALLOW_IN_AUTO_FILE))
 				ereport(ERROR,
 						(errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
-						 errmsg("parameter \"%s\" cannot be changed",
-								name)));
+				/* translator: %s%s%s is for an optionally quoted GUC name */
+						 errmsg("parameter %s%s%s cannot be changed",
+								GUC_FORMAT(name))));
 
 			/*
 			 * If a value is specified, verify that it's sane.
@@ -4575,8 +4651,9 @@ AlterSystemSetConfigFile(AlterSystemStmt *altersysstmt)
 											  &newval, &newextra))
 					ereport(ERROR,
 							(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-							 errmsg("invalid value for parameter \"%s\": \"%s\"",
-									name, value)));
+					/* translator: %s%s%s is for an optionally quoted GUC name */
+							 errmsg("invalid value for parameter %s%s%s: \"%s\"",
+									GUC_FORMAT(name), value)));
 
 				if (record->vartype == PGC_STRING && newval.stringval != NULL)
 					guc_free(newval.stringval);
@@ -4830,7 +4907,9 @@ define_custom_variable(struct config_generic *variable)
 	if ((hentry->gucvar->flags & GUC_CUSTOM_PLACEHOLDER) == 0)
 		ereport(ERROR,
 				(errcode(ERRCODE_INTERNAL_ERROR),
-				 errmsg("attempt to redefine parameter \"%s\"", name)));
+		/* translator: %s%s%s is for an optionally quoted GUC name */
+				 errmsg("attempt to redefine parameter %s%s%s",
+						GUC_FORMAT(name))));
 
 	Assert(hentry->gucvar->vartype == PGC_STRING);
 	pHolder = (struct config_string *) hentry->gucvar;
@@ -5169,8 +5248,9 @@ MarkGUCPrefixReserved(const char *className)
 		{
 			ereport(WARNING,
 					(errcode(ERRCODE_INVALID_NAME),
-					 errmsg("invalid configuration parameter name \"%s\", removing it",
-							var->name),
+			/* translator: %s%s%s is for an optionally quoted GUC name */
+					 errmsg("invalid configuration parameter name %s%s%s, removing it",
+							GUC_FORMAT(var->name)),
 					 errdetail("\"%s\" is now a reserved prefix.",
 							   className)));
 			/* Remove it from the hash table */
@@ -5313,7 +5393,9 @@ GetConfigOptionByName(const char *name, const char **varname, bool missing_ok)
 	if (!ConfigOptionIsVisible(record))
 		ereport(ERROR,
 				(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
-				 errmsg("permission denied to examine \"%s\"", name),
+		/* translator: %s%s%s is for an optionally quoted GUC name */
+				 errmsg("permission denied to examine %s%s%s",
+						GUC_FORMAT(name)),
 				 errdetail("Only roles with privileges of the \"%s\" role may examine this parameter.",
 						   "pg_read_all_settings")));
 
@@ -5639,7 +5721,8 @@ read_nondefault_variables(void)
 			break;
 
 		if (find_option(varname, true, false, FATAL) == NULL)
-			elog(FATAL, "failed to locate variable \"%s\" in exec config params file", varname);
+			elog(FATAL, "failed to locate variable %s%s%s in exec config params file",
+				 GUC_FORMAT(varname));
 
 		if ((varvalue = read_string_with_null(fp)) == NULL)
 			elog(FATAL, "invalid format of exec config params file");
@@ -6048,8 +6131,9 @@ guc_restore_error_context_callback(void *arg)
 	char	  **error_context_name_and_value = (char **) arg;
 
 	if (error_context_name_and_value)
-		errcontext("while setting parameter \"%s\" to \"%s\"",
-				   error_context_name_and_value[0],
+		/* translator: %s%s%s is for an optionally quoted GUC name */
+		errcontext("while setting parameter %s%s%s to \"%s\"",
+				   GUC_FORMAT(error_context_name_and_value[0]),
 				   error_context_name_and_value[1]);
 }
 
@@ -6217,7 +6301,9 @@ RestoreGUCState(void *gucstate)
 		if (result <= 0)
 			ereport(ERROR,
 					(errcode(ERRCODE_INTERNAL_ERROR),
-					 errmsg("parameter \"%s\" could not be set", varname)));
+			/* translator: %s%s%s is for an optionally quoted GUC name */
+					 errmsg("parameter %s%s%s could not be set",
+							GUC_FORMAT(varname))));
 		if (varsourcefile[0])
 			set_config_sourcefile(varname, varsourcefile, varsourceline);
 		error_context_callback.arg = NULL;
@@ -6307,8 +6393,9 @@ TransformGUCArray(ArrayType *array, List **names, List **values)
 		{
 			ereport(WARNING,
 					(errcode(ERRCODE_SYNTAX_ERROR),
-					 errmsg("could not parse setting for parameter \"%s\"",
-							name)));
+			/* translator: %s%s%s is for an optionally quoted GUC name */
+					 errmsg("could not parse setting for parameter %s%s%s",
+							GUC_FORMAT(name))));
 			pfree(name);
 			continue;
 		}
@@ -6625,7 +6712,9 @@ validate_option_array_item(const char *name, const char *value,
 			return false;
 		ereport(ERROR,
 				(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
-				 errmsg("permission denied to set parameter \"%s\"", name)));
+		/* translator: %s%s%s is for an optionally quoted GUC name */
+				 errmsg("permission denied to set parameter %s%s%s",
+						GUC_FORMAT(name))));
 	}
 
 	/* manual permissions check so we can avoid an error being thrown */
@@ -6689,8 +6778,9 @@ call_bool_check_hook(struct config_bool *conf, bool *newval, void **extra,
 				(errcode(GUC_check_errcode_value),
 				 GUC_check_errmsg_string ?
 				 errmsg_internal("%s", GUC_check_errmsg_string) :
-				 errmsg("invalid value for parameter \"%s\": %d",
-						conf->gen.name, (int) *newval),
+		/* translator: %s%s%s is for an optionally quoted GUC name */
+				 errmsg("invalid value for parameter %s%s%s: %d",
+						GUC_FORMAT(conf->gen.name), (int) *newval),
 				 GUC_check_errdetail_string ?
 				 errdetail_internal("%s", GUC_check_errdetail_string) : 0,
 				 GUC_check_errhint_string ?
@@ -6723,8 +6813,9 @@ call_int_check_hook(struct config_int *conf, int *newval, void **extra,
 				(errcode(GUC_check_errcode_value),
 				 GUC_check_errmsg_string ?
 				 errmsg_internal("%s", GUC_check_errmsg_string) :
-				 errmsg("invalid value for parameter \"%s\": %d",
-						conf->gen.name, *newval),
+		/* translator: %s%s%s is for an optionally quoted GUC name */
+				 errmsg("invalid value for parameter %s%s%s: %d",
+						GUC_FORMAT(conf->gen.name), *newval),
 				 GUC_check_errdetail_string ?
 				 errdetail_internal("%s", GUC_check_errdetail_string) : 0,
 				 GUC_check_errhint_string ?
@@ -6757,8 +6848,9 @@ call_real_check_hook(struct config_real *conf, double *newval, void **extra,
 				(errcode(GUC_check_errcode_value),
 				 GUC_check_errmsg_string ?
 				 errmsg_internal("%s", GUC_check_errmsg_string) :
-				 errmsg("invalid value for parameter \"%s\": %g",
-						conf->gen.name, *newval),
+		/* translator: %s%s%s is for an optionally quoted GUC name */
+				 errmsg("invalid value for parameter %s%s%s: %g",
+						GUC_FORMAT(conf->gen.name), *newval),
 				 GUC_check_errdetail_string ?
 				 errdetail_internal("%s", GUC_check_errdetail_string) : 0,
 				 GUC_check_errhint_string ?
@@ -6800,8 +6892,10 @@ call_string_check_hook(struct config_string *conf, char **newval, void **extra,
 					(errcode(GUC_check_errcode_value),
 					 GUC_check_errmsg_string ?
 					 errmsg_internal("%s", GUC_check_errmsg_string) :
-					 errmsg("invalid value for parameter \"%s\": \"%s\"",
-							conf->gen.name, *newval ? *newval : ""),
+			/* translator: %s%s%s is for an optionally quoted GUC name */
+					 errmsg("invalid value for parameter %s%s%s: \"%s\"",
+							GUC_FORMAT(conf->gen.name),
+							*newval ? *newval : ""),
 					 GUC_check_errdetail_string ?
 					 errdetail_internal("%s", GUC_check_errdetail_string) : 0,
 					 GUC_check_errhint_string ?
@@ -6841,8 +6935,9 @@ call_enum_check_hook(struct config_enum *conf, int *newval, void **extra,
 				(errcode(GUC_check_errcode_value),
 				 GUC_check_errmsg_string ?
 				 errmsg_internal("%s", GUC_check_errmsg_string) :
-				 errmsg("invalid value for parameter \"%s\": \"%s\"",
-						conf->gen.name,
+		/* translator: %s%s%s is for an optionally quoted GUC name */
+				 errmsg("invalid value for parameter %s%s%s: \"%s\"",
+						GUC_FORMAT(conf->gen.name),
 						config_enum_lookup_by_value(conf, *newval)),
 				 GUC_check_errdetail_string ?
 				 errdetail_internal("%s", GUC_check_errdetail_string) : 0,
diff --git a/src/test/modules/test_oat_hooks/expected/test_oat_hooks.out b/src/test/modules/test_oat_hooks/expected/test_oat_hooks.out
index f80373a..ccaa65e 100644
--- a/src/test/modules/test_oat_hooks/expected/test_oat_hooks.out
+++ b/src/test/modules/test_oat_hooks/expected/test_oat_hooks.out
@@ -180,10 +180,10 @@ NOTICE:  in object_access_hook_str: non-superuser finished alter (subId=0x1000,
 NOTICE:  in process utility: non-superuser finished RESET
 ALTER SYSTEM SET work_mem = 8192;
 NOTICE:  in process utility: non-superuser attempting ALTER SYSTEM
-ERROR:  permission denied to set parameter "work_mem"
+ERROR:  permission denied to set parameter work_mem
 ALTER SYSTEM RESET work_mem;
 NOTICE:  in process utility: non-superuser attempting ALTER SYSTEM
-ERROR:  permission denied to set parameter "work_mem"
+ERROR:  permission denied to set parameter work_mem
 SET test_oat_hooks.user_var1 = true;
 NOTICE:  in process utility: non-superuser attempting SET
 NOTICE:  in object_access_hook_str: non-superuser attempting alter (subId=0x1000, set) [test_oat_hooks.user_var1]
diff --git a/src/test/modules/unsafe_tests/expected/guc_privs.out b/src/test/modules/unsafe_tests/expected/guc_privs.out
index 6c0ad89..5ed2113 100644
--- a/src/test/modules/unsafe_tests/expected/guc_privs.out
+++ b/src/test/modules/unsafe_tests/expected/guc_privs.out
@@ -8,31 +8,31 @@ CREATE ROLE regress_admin SUPERUSER;
 SET SESSION AUTHORIZATION regress_admin;
 -- PGC_BACKEND
 SET ignore_system_indexes = OFF;  -- fail, cannot be set after connection start
-ERROR:  parameter "ignore_system_indexes" cannot be set after connection start
+ERROR:  parameter ignore_system_indexes cannot be set after connection start
 RESET ignore_system_indexes;  -- fail, cannot be set after connection start
-ERROR:  parameter "ignore_system_indexes" cannot be set after connection start
+ERROR:  parameter ignore_system_indexes cannot be set after connection start
 ALTER SYSTEM SET ignore_system_indexes = OFF;  -- ok
 ALTER SYSTEM RESET ignore_system_indexes;  -- ok
 -- PGC_INTERNAL
 SET block_size = 50;  -- fail, cannot be changed
-ERROR:  parameter "block_size" cannot be changed
+ERROR:  parameter block_size cannot be changed
 RESET block_size;  -- fail, cannot be changed
-ERROR:  parameter "block_size" cannot be changed
+ERROR:  parameter block_size cannot be changed
 ALTER SYSTEM SET block_size = 50;  -- fail, cannot be changed
-ERROR:  parameter "block_size" cannot be changed
+ERROR:  parameter block_size cannot be changed
 ALTER SYSTEM RESET block_size;  -- fail, cannot be changed
-ERROR:  parameter "block_size" cannot be changed
+ERROR:  parameter block_size cannot be changed
 -- PGC_POSTMASTER
 SET autovacuum_freeze_max_age = 1000050000;  -- fail, requires restart
-ERROR:  parameter "autovacuum_freeze_max_age" cannot be changed without restarting the server
+ERROR:  parameter autovacuum_freeze_max_age cannot be changed without restarting the server
 RESET autovacuum_freeze_max_age;  -- fail, requires restart
-ERROR:  parameter "autovacuum_freeze_max_age" cannot be changed without restarting the server
+ERROR:  parameter autovacuum_freeze_max_age cannot be changed without restarting the server
 ALTER SYSTEM SET autovacuum_freeze_max_age = 1000050000;  -- ok
 ALTER SYSTEM RESET autovacuum_freeze_max_age;  -- ok
 ALTER SYSTEM SET config_file = '/usr/local/data/postgresql.conf';  -- fail, cannot be changed
-ERROR:  parameter "config_file" cannot be changed
+ERROR:  parameter config_file cannot be changed
 ALTER SYSTEM RESET config_file;  -- fail, cannot be changed
-ERROR:  parameter "config_file" cannot be changed
+ERROR:  parameter config_file cannot be changed
 -- PGC_SIGHUP
 SET autovacuum = OFF;  -- fail, requires reload
 ERROR:  parameter "autovacuum" cannot be changed now
@@ -47,9 +47,9 @@ ALTER SYSTEM SET lc_messages = 'C';  -- ok
 ALTER SYSTEM RESET lc_messages;  -- ok
 -- PGC_SU_BACKEND
 SET jit_debugging_support = OFF;  -- fail, cannot be set after connection start
-ERROR:  parameter "jit_debugging_support" cannot be set after connection start
+ERROR:  parameter jit_debugging_support cannot be set after connection start
 RESET jit_debugging_support;  -- fail, cannot be set after connection start
-ERROR:  parameter "jit_debugging_support" cannot be set after connection start
+ERROR:  parameter jit_debugging_support cannot be set after connection start
 ALTER SYSTEM SET jit_debugging_support = OFF;  -- ok
 ALTER SYSTEM RESET jit_debugging_support;  -- ok
 -- PGC_USERSET
@@ -58,9 +58,9 @@ RESET DateStyle;  -- ok
 ALTER SYSTEM SET DateStyle = 'ISO, MDY';  -- ok
 ALTER SYSTEM RESET DateStyle;  -- ok
 ALTER SYSTEM SET ssl_renegotiation_limit = 0;  -- fail, cannot be changed
-ERROR:  parameter "ssl_renegotiation_limit" cannot be changed
+ERROR:  parameter ssl_renegotiation_limit cannot be changed
 ALTER SYSTEM RESET ssl_renegotiation_limit;  -- fail, cannot be changed
-ERROR:  parameter "ssl_renegotiation_limit" cannot be changed
+ERROR:  parameter ssl_renegotiation_limit cannot be changed
 -- Finished testing superuser
 -- Create non-superuser with privileges to configure host resource usage
 CREATE ROLE regress_host_resource_admin NOSUPERUSER;
@@ -244,7 +244,7 @@ SHOW none.such;
 
 -- Can't grant on a non-existent core GUC.
 GRANT ALL ON PARAMETER no_such_guc TO regress_host_resource_admin;  -- fail
-ERROR:  unrecognized configuration parameter "no_such_guc"
+ERROR:  unrecognized configuration parameter no_such_guc
 -- Initially there are no privileges and no catalog entry for this GUC.
 SELECT has_parameter_privilege('regress_host_resource_admin', 'enable_material', 'SET');
  has_parameter_privilege 
@@ -446,17 +446,17 @@ ALTER ROLE regress_host_resource_admin SET lc_messages = 'C';
 SET SESSION AUTHORIZATION regress_host_resource_admin;
 ALTER SYSTEM SET autovacuum_work_mem = 32;  -- ok, privileges have been granted
 ALTER SYSTEM SET ignore_system_indexes = OFF;  -- fail, insufficient privileges
-ERROR:  permission denied to set parameter "ignore_system_indexes"
+ERROR:  permission denied to set parameter ignore_system_indexes
 ALTER SYSTEM RESET autovacuum_multixact_freeze_max_age;  -- fail, insufficient privileges
-ERROR:  permission denied to set parameter "autovacuum_multixact_freeze_max_age"
+ERROR:  permission denied to set parameter autovacuum_multixact_freeze_max_age
 SET jit_provider = 'llvmjit';  -- fail, insufficient privileges
-ERROR:  parameter "jit_provider" cannot be changed without restarting the server
+ERROR:  parameter jit_provider cannot be changed without restarting the server
 SELECT set_config ('jit_provider', 'llvmjit', true); -- fail, insufficient privileges
-ERROR:  parameter "jit_provider" cannot be changed without restarting the server
+ERROR:  parameter jit_provider cannot be changed without restarting the server
 ALTER SYSTEM SET shared_buffers = 50;  -- ok
 ALTER SYSTEM RESET shared_buffers;  -- ok
 SET autovacuum_work_mem = 50;  -- cannot be changed now
-ERROR:  parameter "autovacuum_work_mem" cannot be changed now
+ERROR:  parameter autovacuum_work_mem cannot be changed now
 ALTER SYSTEM RESET temp_file_limit;  -- ok
 SET TimeZone = 'Europe/Helsinki';  -- ok
 RESET TimeZone;  -- ok
@@ -465,13 +465,13 @@ RESET max_stack_depth;  -- ok, privileges have been granted
 ALTER SYSTEM SET max_stack_depth = '100kB';  -- ok, privileges have been granted
 ALTER SYSTEM RESET max_stack_depth;  -- ok, privileges have been granted
 SET lc_messages = 'C';  -- fail, insufficient privileges
-ERROR:  permission denied to set parameter "lc_messages"
+ERROR:  permission denied to set parameter lc_messages
 RESET lc_messages;  -- fail, insufficient privileges
-ERROR:  permission denied to set parameter "lc_messages"
+ERROR:  permission denied to set parameter lc_messages
 ALTER SYSTEM SET lc_messages = 'C';  -- fail, insufficient privileges
-ERROR:  permission denied to set parameter "lc_messages"
+ERROR:  permission denied to set parameter lc_messages
 ALTER SYSTEM RESET lc_messages;  -- fail, insufficient privileges
-ERROR:  permission denied to set parameter "lc_messages"
+ERROR:  permission denied to set parameter lc_messages
 SELECT set_config ('temp_buffers', '8192', false); -- ok
  set_config 
 ------------
@@ -484,7 +484,7 @@ ERROR:  permission denied to perform ALTER SYSTEM RESET ALL
 ALTER SYSTEM SET none.such2 = 'whiz bang';  -- fail, not superuser
 ERROR:  permission denied to set parameter "none.such2"
 ALTER ROLE regress_host_resource_admin SET lc_messages = 'POSIX';  -- fail
-ERROR:  permission denied to set parameter "lc_messages"
+ERROR:  permission denied to set parameter lc_messages
 ALTER ROLE regress_host_resource_admin SET max_stack_depth = '1MB';  -- ok
 SELECT setconfig FROM pg_db_role_setting
   WHERE setrole = 'regress_host_resource_admin'::regrole;
@@ -537,7 +537,7 @@ DROP ROLE regress_host_resource_admin;  -- ok
 CREATE ROLE regress_host_resource_admin NOSUPERUSER;
 SET SESSION AUTHORIZATION regress_host_resource_admin;
 ALTER SYSTEM SET autovacuum_work_mem = 32;  -- fail, privileges not yet granted
-ERROR:  permission denied to set parameter "autovacuum_work_mem"
+ERROR:  permission denied to set parameter autovacuum_work_mem
 SET SESSION AUTHORIZATION regress_admin;
 GRANT SET, ALTER SYSTEM ON PARAMETER
     autovacuum_work_mem, hash_mem_multiplier, max_stack_depth,
@@ -554,7 +554,7 @@ privileges for parameter work_mem
 DROP OWNED BY regress_host_resource_admin RESTRICT; -- cascade should not be needed
 SET SESSION AUTHORIZATION regress_host_resource_admin;
 ALTER SYSTEM SET autovacuum_work_mem = 32;  -- fail, "drop owned" has dropped privileges
-ERROR:  permission denied to set parameter "autovacuum_work_mem"
+ERROR:  permission denied to set parameter autovacuum_work_mem
 SET SESSION AUTHORIZATION regress_admin;
 DROP ROLE regress_host_resource_admin;  -- ok
 -- Check that "reassign owned" doesn't affect privileges
diff --git a/src/test/modules/unsafe_tests/expected/rolenames.out b/src/test/modules/unsafe_tests/expected/rolenames.out
index 61396b2..21d2bac 100644
--- a/src/test/modules/unsafe_tests/expected/rolenames.out
+++ b/src/test/modules/unsafe_tests/expected/rolenames.out
@@ -1077,7 +1077,7 @@ SHOW session_preload_libraries;
 SET SESSION AUTHORIZATION regress_role_nopriv;
 -- fails with role not member of pg_read_all_settings
 SHOW session_preload_libraries;
-ERROR:  permission denied to examine "session_preload_libraries"
+ERROR:  permission denied to examine session_preload_libraries
 DETAIL:  Only roles with privileges of the "pg_read_all_settings" role may examine this parameter.
 RESET SESSION AUTHORIZATION;
 ERROR:  current transaction is aborted, commands ignored until end of transaction block
diff --git a/src/test/regress/expected/compression.out b/src/test/regress/expected/compression.out
index 834b755..7426504 100644
--- a/src/test/regress/expected/compression.out
+++ b/src/test/regress/expected/compression.out
@@ -234,10 +234,10 @@ ERROR:  column "f1" has a compression method conflict
 DETAIL:  pglz versus lz4
 -- test default_toast_compression GUC
 SET default_toast_compression = '';
-ERROR:  invalid value for parameter "default_toast_compression": ""
+ERROR:  invalid value for parameter default_toast_compression: ""
 HINT:  Available values: pglz, lz4.
 SET default_toast_compression = 'I do not exist compression';
-ERROR:  invalid value for parameter "default_toast_compression": "I do not exist compression"
+ERROR:  invalid value for parameter default_toast_compression: "I do not exist compression"
 HINT:  Available values: pglz, lz4.
 SET default_toast_compression = 'lz4';
 SET default_toast_compression = 'pglz';
diff --git a/src/test/regress/expected/compression_1.out b/src/test/regress/expected/compression_1.out
index ddcd137..5234e47 100644
--- a/src/test/regress/expected/compression_1.out
+++ b/src/test/regress/expected/compression_1.out
@@ -225,13 +225,13 @@ ERROR:  column "f1" has a compression method conflict
 DETAIL:  pglz versus lz4
 -- test default_toast_compression GUC
 SET default_toast_compression = '';
-ERROR:  invalid value for parameter "default_toast_compression": ""
+ERROR:  invalid value for parameter default_toast_compression: ""
 HINT:  Available values: pglz.
 SET default_toast_compression = 'I do not exist compression';
-ERROR:  invalid value for parameter "default_toast_compression": "I do not exist compression"
+ERROR:  invalid value for parameter default_toast_compression: "I do not exist compression"
 HINT:  Available values: pglz.
 SET default_toast_compression = 'lz4';
-ERROR:  invalid value for parameter "default_toast_compression": "lz4"
+ERROR:  invalid value for parameter default_toast_compression: "lz4"
 HINT:  Available values: pglz.
 SET default_toast_compression = 'pglz';
 -- test alter compression method
diff --git a/src/test/regress/expected/create_am.out b/src/test/regress/expected/create_am.out
index b50293d..afa11a6 100644
--- a/src/test/regress/expected/create_am.out
+++ b/src/test/regress/expected/create_am.out
@@ -112,11 +112,11 @@ COMMIT;
 --
 -- prevent empty values
 SET default_table_access_method = '';
-ERROR:  invalid value for parameter "default_table_access_method": ""
+ERROR:  invalid value for parameter default_table_access_method: ""
 DETAIL:  default_table_access_method cannot be empty.
 -- prevent nonexistent values
 SET default_table_access_method = 'I do not exist AM';
-ERROR:  invalid value for parameter "default_table_access_method": "I do not exist AM"
+ERROR:  invalid value for parameter default_table_access_method: "I do not exist AM"
 DETAIL:  Table access method "I do not exist AM" does not exist.
 -- prevent setting it to an index AM
 SET default_table_access_method = 'btree';
diff --git a/src/test/regress/expected/guc.out b/src/test/regress/expected/guc.out
index 127c953..cbf4e8f 100644
--- a/src/test/regress/expected/guc.out
+++ b/src/test/regress/expected/guc.out
@@ -508,11 +508,11 @@ SELECT '2006-08-13 12:34:56'::timestamptz;
 
 -- Test some simple error cases
 SET seq_page_cost TO 'NaN';
-ERROR:  invalid value for parameter "seq_page_cost": "NaN"
+ERROR:  invalid value for parameter seq_page_cost: "NaN"
 SET vacuum_cost_delay TO '10s';
-ERROR:  10000 ms is outside the valid range for parameter "vacuum_cost_delay" (0 .. 100)
+ERROR:  10000 ms is outside the valid range for parameter vacuum_cost_delay (0 .. 100)
 SET no_such_variable TO 42;
-ERROR:  unrecognized configuration parameter "no_such_variable"
+ERROR:  unrecognized configuration parameter no_such_variable
 -- Test "custom" GUCs created on the fly (which aren't really an
 -- intended feature, but many people use them).
 SHOW custom.my_guc;  -- error, not known yet
@@ -811,14 +811,14 @@ create function func_with_bad_set() returns int as $$ select 1 $$
 language sql
 set default_text_search_config = no_such_config;
 NOTICE:  text search configuration "no_such_config" does not exist
-ERROR:  invalid value for parameter "default_text_search_config": "no_such_config"
+ERROR:  invalid value for parameter default_text_search_config: "no_such_config"
 set check_function_bodies = off;
 create function func_with_bad_set() returns int as $$ select 1 $$
 language sql
 set default_text_search_config = no_such_config;
 NOTICE:  text search configuration "no_such_config" does not exist
 select func_with_bad_set();
-ERROR:  invalid value for parameter "default_text_search_config": "no_such_config"
+ERROR:  invalid value for parameter default_text_search_config: "no_such_config"
 reset check_function_bodies;
 set default_with_oids to f;
 -- Should not allow to set it to true.
diff --git a/src/test/regress/expected/password.out b/src/test/regress/expected/password.out
index 924d6e0..752cffc 100644
--- a/src/test/regress/expected/password.out
+++ b/src/test/regress/expected/password.out
@@ -3,10 +3,10 @@
 --
 -- Tests for GUC password_encryption
 SET password_encryption = 'novalue'; -- error
-ERROR:  invalid value for parameter "password_encryption": "novalue"
+ERROR:  invalid value for parameter password_encryption: "novalue"
 HINT:  Available values: md5, scram-sha-256.
 SET password_encryption = true; -- error
-ERROR:  invalid value for parameter "password_encryption": "true"
+ERROR:  invalid value for parameter password_encryption: "true"
 HINT:  Available values: md5, scram-sha-256.
 SET password_encryption = 'md5'; -- ok
 SET password_encryption = 'scram-sha-256'; -- ok
diff --git a/src/test/regress/expected/subscription.out b/src/test/regress/expected/subscription.out
index b15eddb..8d9229a 100644
--- a/src/test/regress/expected/subscription.out
+++ b/src/test/regress/expected/subscription.out
@@ -220,7 +220,7 @@ RESET ROLE;
 ALTER SUBSCRIPTION regress_testsub RENAME TO regress_testsub_foo;
 ALTER SUBSCRIPTION regress_testsub_foo SET (synchronous_commit = local);
 ALTER SUBSCRIPTION regress_testsub_foo SET (synchronous_commit = foobar);
-ERROR:  invalid value for parameter "synchronous_commit": "foobar"
+ERROR:  invalid value for parameter synchronous_commit: "foobar"
 HINT:  Available values: local, remote_write, remote_apply, on, off.
 \dRs+
                                                                                                                  List of subscriptions
diff --git a/src/test/regress/expected/transactions.out b/src/test/regress/expected/transactions.out
index 7f5757e..5939ad4 100644
--- a/src/test/regress/expected/transactions.out
+++ b/src/test/regress/expected/transactions.out
@@ -53,7 +53,7 @@ SELECT COUNT(*) FROM xacttest;
 (1 row)
 
 RESET transaction_isolation; -- error
-ERROR:  parameter "transaction_isolation" cannot be reset
+ERROR:  parameter transaction_isolation cannot be reset
 END;
 BEGIN TRANSACTION READ ONLY;
 SELECT COUNT(*) FROM xacttest;
@@ -63,7 +63,7 @@ SELECT COUNT(*) FROM xacttest;
 (1 row)
 
 RESET transaction_read_only; -- error
-ERROR:  parameter "transaction_read_only" cannot be reset
+ERROR:  parameter transaction_read_only cannot be reset
 END;
 BEGIN TRANSACTION DEFERRABLE;
 SELECT COUNT(*) FROM xacttest;
@@ -73,11 +73,11 @@ SELECT COUNT(*) FROM xacttest;
 (1 row)
 
 RESET transaction_deferrable; -- error
-ERROR:  parameter "transaction_deferrable" cannot be reset
+ERROR:  parameter transaction_deferrable cannot be reset
 END;
 CREATE FUNCTION errfunc() RETURNS int LANGUAGE SQL AS 'SELECT 1'
 SET transaction_read_only = on; -- error
-ERROR:  parameter "transaction_read_only" cannot be set locally in functions
+ERROR:  parameter transaction_read_only cannot be set locally in functions
 -- Read-only tests
 CREATE TABLE writetest (a int);
 CREATE TEMPORARY TABLE temptest (a int);
-- 
1.8.3.1

