diff --git a/src/backend/utils/misc/guc-file.l b/src/backend/utils/misc/guc-file.l
index 9e9c3f7..3bda73b 100644
--- a/src/backend/utils/misc/guc-file.l
+++ b/src/backend/utils/misc/guc-file.l
@@ -252,6 +252,8 @@ ProcessConfigFile(GucContext context)
 	{
 		struct config_generic *gconf = guc_variables[i];
 		GucStack   *stack;
+		const char *pre_value;
+		const char *post_value;
 
 		if (gconf->reset_source != PGC_S_FILE ||
 			(gconf->status & GUC_IS_IN_FILE))
@@ -280,9 +282,18 @@ ProcessConfigFile(GucContext context)
 				stack->source = PGC_S_DEFAULT;
 		}
 
+		if (context == PGC_SIGHUP)
+			pre_value = pstrdup(GetConfigOption(gconf->name));
+
 		/* Now we can re-apply the wired-in default */
 		set_config_option(gconf->name, NULL, context, PGC_S_DEFAULT,
 						  GUC_ACTION_SET, true);
+
+		post_value = pstrdup(GetConfigOption(gconf->name));
+		if (context == PGC_SIGHUP && strcmp(pre_value, post_value) != 0)
+			ereport(elevel,
+					(errmsg("parameter \"%s\" reset to default value \"%s\"",
+							gconf->name, post_value)));
 	}
 
 	/*
@@ -309,9 +320,18 @@ ProcessConfigFile(GucContext context)
 	/* If we got here all the options checked out okay, so apply them. */
 	for (item = head; item; item = item->next)
 	{
+		const char *pre_value;
+
+		if (context == PGC_SIGHUP)
+			pre_value = pstrdup(GetConfigOption(item->name));
+
 		if (set_config_option(item->name, item->value, context,
 			   					 PGC_S_FILE, GUC_ACTION_SET, true))
 		{
+			if (context == PGC_SIGHUP && strcmp(pre_value, GetConfigOption(item->name)) != 0)
+				ereport(elevel,
+						(errmsg("parameter \"%s\" changed to \"%s\"",
+								item->name, item->value)));
 			set_config_sourcefile(item->name, item->filename,
 								  item->sourceline);
 		}
