diff -cpr HEAD/src/backend/utils/misc/guc.c custom_guc_flags/src/backend/utils/misc/guc.c
*** HEAD/src/backend/utils/misc/guc.c	Fri Aug 15 17:37:40 2008
--- custom_guc_flags/src/backend/utils/misc/guc.c	Tue Aug 19 13:28:27 2008
*************** static struct config_generic *
*** 5586,5591 ****
--- 5586,5592 ----
  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)
*************** init_custom_variable(const char *name,
*** 5600,5605 ****
--- 5601,5607 ----
  	gen->group = CUSTOM_OPTIONS;
  	gen->short_desc = short_desc;
  	gen->long_desc = long_desc;
+ 	gen->flags = flags;
  	gen->vartype = type;
  
  	return gen;
*************** void
*** 5675,5680 ****
--- 5677,5683 ----
  DefineCustomBoolVariable(const char *name,
  						 const char *short_desc,
  						 const char *long_desc,
+ 						 int flags,
  						 bool *valueAddr,
  						 GucContext context,
  						 GucBoolAssignHook assign_hook,
*************** DefineCustomBoolVariable(const char *nam
*** 5683,5689 ****
  	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;
--- 5686,5692 ----
  	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;
*************** void
*** 5697,5702 ****
--- 5700,5706 ----
  DefineCustomIntVariable(const char *name,
  						const char *short_desc,
  						const char *long_desc,
+ 						int flags,
  						int *valueAddr,
  						int minValue,
  						int maxValue,
*************** DefineCustomIntVariable(const char *name
*** 5707,5713 ****
  	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;
--- 5711,5717 ----
  	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;
*************** void
*** 5723,5728 ****
--- 5727,5733 ----
  DefineCustomRealVariable(const char *name,
  						 const char *short_desc,
  						 const char *long_desc,
+ 						 int flags,
  						 double *valueAddr,
  						 double minValue,
  						 double maxValue,
*************** DefineCustomRealVariable(const char *nam
*** 5733,5739 ****
  	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;
--- 5738,5744 ----
  	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;
*************** void
*** 5749,5754 ****
--- 5754,5760 ----
  DefineCustomStringVariable(const char *name,
  						   const char *short_desc,
  						   const char *long_desc,
+ 						   int flags,
  						   char **valueAddr,
  						   GucContext context,
  						   GucStringAssignHook assign_hook,
*************** DefineCustomStringVariable(const char *n
*** 5757,5763 ****
  	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;
--- 5763,5769 ----
  	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;
*************** void
*** 5773,5778 ****
--- 5779,5785 ----
  DefineCustomEnumVariable(const char *name,
  						 const char *short_desc,
  						 const char *long_desc,
+ 						 int flags,
  						 int *valueAddr,
  						 const struct config_enum_entry *options,
  						 GucContext context,
*************** DefineCustomEnumVariable(const char *nam
*** 5782,5788 ****
  	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;
--- 5789,5795 ----
  	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;
diff -cpr HEAD/src/include/utils/guc.h custom_guc_flags/src/include/utils/guc.h
*** HEAD/src/include/utils/guc.h	Thu Jul 24 02:29:53 2008
--- custom_guc_flags/src/include/utils/guc.h	Tue Aug 19 13:28:27 2008
*************** extern void DefineCustomBoolVariable(
*** 163,168 ****
--- 163,169 ----
  						 const char *name,
  						 const char *short_desc,
  						 const char *long_desc,
+ 						 int flags,
  						 bool *valueAddr,
  						 GucContext context,
  						 GucBoolAssignHook assign_hook,
*************** extern void DefineCustomIntVariable(
*** 172,177 ****
--- 173,179 ----
  						const char *name,
  						const char *short_desc,
  						const char *long_desc,
+ 						int flags,
  						int *valueAddr,
  						int minValue,
  						int maxValue,
*************** extern void DefineCustomRealVariable(
*** 183,188 ****
--- 185,191 ----
  						 const char *name,
  						 const char *short_desc,
  						 const char *long_desc,
+ 						 int flags,
  						 double *valueAddr,
  						 double minValue,
  						 double maxValue,
*************** extern void DefineCustomStringVariable(
*** 194,199 ****
--- 197,203 ----
  						   const char *name,
  						   const char *short_desc,
  						   const char *long_desc,
+ 						   int flags,
  						   char **valueAddr,
  						   GucContext context,
  						   GucStringAssignHook assign_hook,
*************** extern void DefineCustomEnumVariable(
*** 203,208 ****
--- 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,