*** a/src/backend/utils/misc/guc.c
--- b/src/backend/utils/misc/guc.c
***************
*** 5619,5624 **** static struct config_generic *
--- 5619,5625 ----
  init_custom_variable(const char *name,
  					 const char *short_desc,
  					 const char *long_desc,
+ 					 int flags,
  					 GucContext context,
  					 enum config_type type,
  					 size_t sz)
***************
*** 5633,5638 **** init_custom_variable(const char *name,
--- 5634,5640 ----
  	gen->group = CUSTOM_OPTIONS;
  	gen->short_desc = short_desc;
  	gen->long_desc = long_desc;
+ 	gen->flags = flags;
  	gen->vartype = type;
  
  	return gen;
***************
*** 5708,5713 **** void
--- 5710,5716 ----
  DefineCustomBoolVariable(const char *name,
  						 const char *short_desc,
  						 const char *long_desc,
+ 						 int flags,
  						 bool *valueAddr,
  						 GucContext context,
  						 GucBoolAssignHook assign_hook,
***************
*** 5716,5722 **** DefineCustomBoolVariable(const char *name,
  	struct config_bool *var;
  
  	var = (struct config_bool *)
! 		init_custom_variable(name, short_desc, long_desc, context,
  							 PGC_BOOL, sizeof(struct config_bool));
  	var->variable = valueAddr;
  	var->boot_val = *valueAddr;
--- 5719,5725 ----
  	struct config_bool *var;
  
  	var = (struct config_bool *)
! 		init_custom_variable(name, short_desc, long_desc, flags, context,
  							 PGC_BOOL, sizeof(struct config_bool));
  	var->variable = valueAddr;
  	var->boot_val = *valueAddr;
***************
*** 5730,5735 **** void
--- 5733,5739 ----
  DefineCustomIntVariable(const char *name,
  						const char *short_desc,
  						const char *long_desc,
+ 						int flags,
  						int *valueAddr,
  						int minValue,
  						int maxValue,
***************
*** 5740,5746 **** DefineCustomIntVariable(const char *name,
  	struct config_int *var;
  
  	var = (struct config_int *)
! 		init_custom_variable(name, short_desc, long_desc, context,
  							 PGC_INT, sizeof(struct config_int));
  	var->variable = valueAddr;
  	var->boot_val = *valueAddr;
--- 5744,5750 ----
  	struct config_int *var;
  
  	var = (struct config_int *)
! 		init_custom_variable(name, short_desc, long_desc, flags, context,
  							 PGC_INT, sizeof(struct config_int));
  	var->variable = valueAddr;
  	var->boot_val = *valueAddr;
***************
*** 5756,5761 **** void
--- 5760,5766 ----
  DefineCustomRealVariable(const char *name,
  						 const char *short_desc,
  						 const char *long_desc,
+ 						 int flags,
  						 double *valueAddr,
  						 double minValue,
  						 double maxValue,
***************
*** 5766,5772 **** DefineCustomRealVariable(const char *name,
  	struct config_real *var;
  
  	var = (struct config_real *)
! 		init_custom_variable(name, short_desc, long_desc, context,
  							 PGC_REAL, sizeof(struct config_real));
  	var->variable = valueAddr;
  	var->boot_val = *valueAddr;
--- 5771,5777 ----
  	struct config_real *var;
  
  	var = (struct config_real *)
! 		init_custom_variable(name, short_desc, long_desc, flags, context,
  							 PGC_REAL, sizeof(struct config_real));
  	var->variable = valueAddr;
  	var->boot_val = *valueAddr;
***************
*** 5782,5787 **** void
--- 5787,5793 ----
  DefineCustomStringVariable(const char *name,
  						   const char *short_desc,
  						   const char *long_desc,
+ 						   int flags,
  						   char **valueAddr,
  						   GucContext context,
  						   GucStringAssignHook assign_hook,
***************
*** 5790,5796 **** DefineCustomStringVariable(const char *name,
  	struct config_string *var;
  
  	var = (struct config_string *)
! 		init_custom_variable(name, short_desc, long_desc, context,
  							 PGC_STRING, sizeof(struct config_string));
  	var->variable = valueAddr;
  	var->boot_val = *valueAddr;
--- 5796,5802 ----
  	struct config_string *var;
  
  	var = (struct config_string *)
! 		init_custom_variable(name, short_desc, long_desc, flags, context,
  							 PGC_STRING, sizeof(struct config_string));
  	var->variable = valueAddr;
  	var->boot_val = *valueAddr;
***************
*** 5806,5811 **** void
--- 5812,5818 ----
  DefineCustomEnumVariable(const char *name,
  						 const char *short_desc,
  						 const char *long_desc,
+ 						 int flags,
  						 int *valueAddr,
  						 const struct config_enum_entry *options,
  						 GucContext context,
***************
*** 5815,5821 **** DefineCustomEnumVariable(const char *name,
  	struct config_enum *var;
  
  	var = (struct config_enum *)
! 		init_custom_variable(name, short_desc, long_desc, context,
  							 PGC_ENUM, sizeof(struct config_enum));
  	var->variable = valueAddr;
  	var->boot_val = *valueAddr;
--- 5822,5828 ----
  	struct config_enum *var;
  
  	var = (struct config_enum *)
! 		init_custom_variable(name, short_desc, long_desc, flags, context,
  							 PGC_ENUM, sizeof(struct config_enum));
  	var->variable = valueAddr;
  	var->boot_val = *valueAddr;
*** a/src/include/utils/guc.h
--- b/src/include/utils/guc.h
***************
*** 163,168 **** extern void DefineCustomBoolVariable(
--- 163,169 ----
  						 const char *name,
  						 const char *short_desc,
  						 const char *long_desc,
+ 						 int flags,
  						 bool *valueAddr,
  						 GucContext context,
  						 GucBoolAssignHook assign_hook,
***************
*** 172,177 **** extern void DefineCustomIntVariable(
--- 173,179 ----
  						const char *name,
  						const char *short_desc,
  						const char *long_desc,
+ 						int flags,
  						int *valueAddr,
  						int minValue,
  						int maxValue,
***************
*** 183,188 **** extern void DefineCustomRealVariable(
--- 185,191 ----
  						 const char *name,
  						 const char *short_desc,
  						 const char *long_desc,
+ 						 int flags,
  						 double *valueAddr,
  						 double minValue,
  						 double maxValue,
***************
*** 194,199 **** extern void DefineCustomStringVariable(
--- 197,203 ----
  						   const char *name,
  						   const char *short_desc,
  						   const char *long_desc,
+ 						   int flags,
  						   char **valueAddr,
  						   GucContext context,
  						   GucStringAssignHook assign_hook,
***************
*** 203,208 **** extern void DefineCustomEnumVariable(
--- 207,213 ----
  						   const char *name,
  						   const char *short_desc,
  						   const char *long_desc,
+ 						   int flags,
  						   int *valueAddr,
  						   const struct config_enum_entry *options,
  						   GucContext context,
