Skip site navigation (1) Skip section navigation (2)

Re: take 2: show all / reset all

From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: Marko Kreen <marko(at)l-t(dot)ee>
Cc: pgsql-patches(at)postgresql(dot)org
Subject: Re: take 2: show all / reset all
Date: 2001-06-04 21:31:04
Message-ID: 200106042131.f54LV4q13496@candle.pha.pa.us (view raw or flat)
Thread:
Lists: pgsql-patches
I will make some manual patches to this before applying and show you the
changes.  Thanks.

Your patch has been added to the PostgreSQL unapplied patches list at:

	http://candle.pha.pa.us/cgi-bin/pgpatches

I will try to apply it within the next 48 hours.

 
> 
> Ok, now I am awake.  How about this one?
> 
> reset all: command line and .conf options change defaults
> on RESET ALL those are restored.
> 
> show all: GUC + non-GUC.
> 
> -- 
> marko
> 
> 
> 
> Index: doc/src/sgml/ref/reset.sgml
> ===================================================================
> RCS file: /home/projects/pgsql/cvsroot/pgsql/doc/src/sgml/ref/reset.sgml,v
> retrieving revision 1.10
> diff -c -r1.10 reset.sgml
> *** doc/src/sgml/ref/reset.sgml	2000/12/25 23:15:26	1.10
> --- doc/src/sgml/ref/reset.sgml	2001/06/02 11:04:32
> ***************
> *** 16,21 ****
> --- 16,24 ----
>     <synopsis>
>   RESET <replaceable class="PARAMETER">variable</replaceable>
>     </synopsis>
> +   <synopsis>
> + RESET ALL
> +   </synopsis>
>   
>     <refsect2 id="R2-SQL-RESET-1">
>      <title>Inputs</title>
> ***************
> *** 27,32 ****
> --- 30,43 ----
>          <para>
>   	The name of a run-time parameter. See <xref
>   	linkend="sql-set" endterm="sql-set-title"> for a list.
> +        </para>
> +       </listitem>
> +      </varlistentry>
> +      <varlistentry>
> +       <term>ALL</term>
> +       <listitem>
> +        <para>
> +         Resets all run-time parameters to default values.
>          </para>
>         </listitem>
>        </varlistentry>
> Index: doc/src/sgml/ref/show.sgml
> ===================================================================
> RCS file: /home/projects/pgsql/cvsroot/pgsql/doc/src/sgml/ref/show.sgml,v
> retrieving revision 1.11
> diff -c -r1.11 show.sgml
> *** doc/src/sgml/ref/show.sgml	2000/12/25 23:15:26	1.11
> --- doc/src/sgml/ref/show.sgml	2001/06/02 11:04:32
> ***************
> *** 16,21 ****
> --- 16,24 ----
>     <synopsis>
>   SHOW <replaceable class="PARAMETER">name</replaceable>
>     </synopsis>
> +   <synopsis>
> + SHOW ALL
> +   </synopsis>
>   
>     <refsect2 id="R2-SQL-SHOW-1">
>      <title>Inputs</title>
> ***************
> *** 29,34 ****
> --- 32,45 ----
>           The name of a run-time parameter. See
>   	<xref linkend="sql-set" endterm="sql-set-title">
>           for a list.
> +        </para>
> +       </listitem>
> +      </varlistentry>
> +      <varlistentry>
> +       <term>ALL</term>
> +       <listitem>
> +        <para>
> +         Show all current session parameters.
>          </para>
>         </listitem>
>        </varlistentry>
> Index: src/backend/commands/variable.c
> ===================================================================
> RCS file: /home/projects/pgsql/cvsroot/pgsql/src/backend/commands/variable.c,v
> retrieving revision 1.48
> diff -c -r1.48 variable.c
> *** src/backend/commands/variable.c	2001/05/08 21:06:42	1.48
> --- src/backend/commands/variable.c	2001/06/02 11:04:34
> ***************
> *** 724,736 ****
>   	else if (strcasecmp(name, "session_authorization") == 0)
>   		SetSessionAuthorization(value);
>   	else
> ! 		SetConfigOption(name, value, superuser() ? PGC_SUSET : PGC_USERSET);
>   
>   	if (mvalue)
>   		pfree(mvalue);
>   }
>   
> - 
>   void
>   GetPGVariable(const char *name)
>   {
> --- 724,735 ----
>   	else if (strcasecmp(name, "session_authorization") == 0)
>   		SetSessionAuthorization(value);
>   	else
> ! 		SetConfigOption(name, value, superuser() ? PGC_SUSET : PGC_USERSET, false);
>   
>   	if (mvalue)
>   		pfree(mvalue);
>   }
>   
>   void
>   GetPGVariable(const char *name)
>   {
> ***************
> *** 747,754 ****
>   	else if (strcasecmp(name, "server_encoding") == 0)
>   		show_server_encoding();
>   	else if (strcasecmp(name, "seed") == 0)
>   		show_random_seed();
> ! 	else
>   	{
>   		const char *val = GetConfigOption(name);
>   
> --- 746,763 ----
>   	else if (strcasecmp(name, "server_encoding") == 0)
>   		show_server_encoding();
>   	else if (strcasecmp(name, "seed") == 0)
> + 		show_random_seed();
> + 	else if (strcasecmp(name, "all") == 0)
> + 	{
> + 		ShowAllGUCConfig();
> + 		show_date();
> + 		show_timezone();
> + 		show_DefaultXactIsoLevel();
> + 		show_XactIsoLevel();
> + 		show_client_encoding();
> + 		show_server_encoding();
>   		show_random_seed();
> ! 	} else
>   	{
>   		const char *val = GetConfigOption(name);
>   
> ***************
> *** 773,778 ****
>   		reset_server_encoding();
>   	else if (strcasecmp(name, "seed") == 0)
>   		reset_random_seed();
> ! 	else
> ! 		SetConfigOption(name, NULL, superuser() ? PGC_SUSET : PGC_USERSET);
>   }
> --- 782,798 ----
>   		reset_server_encoding();
>   	else if (strcasecmp(name, "seed") == 0)
>   		reset_random_seed();
> ! 	else if (strcasecmp(name, "all") == 0)
> ! 	{
> ! 		reset_DefaultXactIsoLevel();
> ! 		reset_XactIsoLevel();
> ! 		reset_random_seed();
> ! 		/* reset_server_encoding(); */
> ! 		reset_client_encoding();
> ! 		reset_date();
> ! 		reset_timezone();
> ! 
> ! 		ResetAllOptions();
> ! 	} else
> ! 		SetConfigOption(name, NULL, superuser() ? PGC_SUSET : PGC_USERSET, false);
>   }
> Index: src/backend/parser/gram.y
> ===================================================================
> RCS file: /home/projects/pgsql/cvsroot/pgsql/src/backend/parser/gram.y,v
> retrieving revision 2.227
> diff -c -r2.227 gram.y
> *** src/backend/parser/gram.y	2001/05/27 09:59:29	2.227
> --- src/backend/parser/gram.y	2001/06/02 11:04:46
> ***************
> *** 860,865 ****
> --- 860,871 ----
>   					n->name  = "timezone";
>   					$$ = (Node *) n;
>   				}
> + 		| SHOW ALL
> + 				{
> + 					VariableShowStmt *n = makeNode(VariableShowStmt);
> + 					n->name  = "all";
> + 					$$ = (Node *) n;
> + 				}
>   		| SHOW TRANSACTION ISOLATION LEVEL
>   				{
>   					VariableShowStmt *n = makeNode(VariableShowStmt);
> ***************
> *** 884,889 ****
> --- 890,901 ----
>   				{
>   					VariableResetStmt *n = makeNode(VariableResetStmt);
>   					n->name  = "XactIsoLevel";
> + 					$$ = (Node *) n;
> + 				}
> + 		| RESET ALL
> + 				{
> + 					VariableResetStmt *n = makeNode(VariableResetStmt);
> + 					n->name  = "all";
>   					$$ = (Node *) n;
>   				}
>   		;
> Index: src/backend/postmaster/postmaster.c
> ===================================================================
> RCS file: /home/projects/pgsql/cvsroot/pgsql/src/backend/postmaster/postmaster.c,v
> retrieving revision 1.215
> diff -c -r1.215 postmaster.c
> *** src/backend/postmaster/postmaster.c	2001/05/30 14:15:26	1.215
> --- src/backend/postmaster/postmaster.c	2001/06/02 11:04:52
> ***************
> *** 530,536 ****
>   							elog(ERROR, "-c %s requires argument", optarg);
>   					}
>   
> ! 					SetConfigOption(name, value, PGC_POSTMASTER);
>   					free(name);
>   					if (value)
>   						free(value);
> --- 530,536 ----
>   							elog(ERROR, "-c %s requires argument", optarg);
>   					}
>   
> ! 					SetConfigOption(name, value, PGC_POSTMASTER, true);
>   					free(name);
>   					if (value)
>   						free(value);
> Index: src/backend/tcop/postgres.c
> ===================================================================
> RCS file: /home/projects/pgsql/cvsroot/pgsql/src/backend/tcop/postgres.c,v
> retrieving revision 1.218
> diff -c -r1.218 postgres.c
> *** src/backend/tcop/postgres.c	2001/04/14 19:11:45	1.218
> --- src/backend/tcop/postgres.c	2001/06/02 11:04:57
> ***************
> *** 1462,1468 ****
>   
>   					/* all options are allowed if not under postmaster */
>   					SetConfigOption(name, value,
> ! 					 (IsUnderPostmaster) ? PGC_BACKEND : PGC_POSTMASTER);
>   					free(name);
>   					if (value)
>   						free(value);
> --- 1462,1468 ----
>   
>   					/* all options are allowed if not under postmaster */
>   					SetConfigOption(name, value,
> ! 					 (IsUnderPostmaster) ? PGC_BACKEND : PGC_POSTMASTER, true);
>   					free(name);
>   					if (value)
>   						free(value);
> Index: src/backend/utils/misc/guc-file.l
> ===================================================================
> RCS file: /home/projects/pgsql/cvsroot/pgsql/src/backend/utils/misc/guc-file.l,v
> retrieving revision 1.6
> diff -c -r1.6 guc-file.l
> *** src/backend/utils/misc/guc-file.l	2001/01/24 19:01:31	1.6
> --- src/backend/utils/misc/guc-file.l	2001/06/02 11:05:07
> ***************
> *** 260,272 ****
>   	 */
>       for(item = head; item; item=item->next)
>   	{
> ! 		if (!set_config_option(item->name, item->value, context, false))
>   			goto cleanup_exit;
>   	}
>   
>       /* If we got here all the options parsed okay. */
>   	for(item = head; item; item=item->next)
> ! 		set_config_option(item->name, item->value, context, true);
>   
>    cleanup_exit:
>   	free_name_value_list(head);
> --- 260,272 ----
>   	 */
>       for(item = head; item; item=item->next)
>   	{
> ! 		if (!set_config_option(item->name, item->value, context, false, false))
>   			goto cleanup_exit;
>   	}
>   
>       /* If we got here all the options parsed okay. */
>   	for(item = head; item; item=item->next)
> ! 		set_config_option(item->name, item->value, context, true, true);
>   
>    cleanup_exit:
>   	free_name_value_list(head);
> Index: src/backend/utils/misc/guc.c
> ===================================================================
> RCS file: /home/projects/pgsql/cvsroot/pgsql/src/backend/utils/misc/guc.c,v
> retrieving revision 1.36
> diff -c -r1.36 guc.c
> *** src/backend/utils/misc/guc.c	2001/05/17 17:44:18	1.36
> --- src/backend/utils/misc/guc.c	2001/06/02 11:05:10
> ***************
> *** 136,144 ****
>   	const char *name;
>   	GucContext	context;
>   	char	  **variable;
> ! 	const char *default_val;
>   	bool		(*parse_hook) (const char *proposed);
>   	void		(*assign_hook) (const char *newval);
>   };
>   
>   
> --- 136,145 ----
>   	const char *name;
>   	GucContext	context;
>   	char	  **variable;
> ! 	const char *boot_default_val;
>   	bool		(*parse_hook) (const char *proposed);
>   	void		(*assign_hook) (const char *newval);
> + 	char		*default_val;
>   };
>   
>   
> ***************
> *** 433,438 ****
> --- 434,448 ----
>   	{
>   		char	   *str = NULL;
>   
> + 		if (!ConfigureNamesString[i].default_val
> + 				&& ConfigureNamesString[i].boot_default_val)
> + 		{
> + 			str = strdup(ConfigureNamesString[i].boot_default_val);
> + 			if (str == NULL)
> + 				elog(ERROR, "out of memory");
> + 
> + 			ConfigureNamesString[i].default_val = str;
> + 		}
>   		if (ConfigureNamesString[i].default_val)
>   		{
>   			str = strdup(ConfigureNamesString[i].default_val);
> ***************
> *** 582,588 ****
>    */
>   bool
>   set_config_option(const char *name, const char *value, GucContext
> ! 				  context, bool DoIt)
>   {
>   	struct config_generic *record;
>   	enum config_type type;
> --- 592,598 ----
>    */
>   bool
>   set_config_option(const char *name, const char *value, GucContext
> ! 				  context, bool DoIt, bool makeDefault)
>   {
>   	struct config_generic *record;
>   	enum config_type type;
> ***************
> *** 653,659 ****
> --- 663,673 ----
>   						return false;
>   					}
>   					if (DoIt)
> + 					{
>   						*conf->variable = boolval;
> + 						if (makeDefault)
> + 							conf->default_val = boolval;
> + 					}
>   				}
>   				else if (DoIt)
>   					*conf->variable = conf->default_val;
> ***************
> *** 681,687 ****
> --- 695,705 ----
>   						return false;
>   					}
>   					if (DoIt)
> + 					{
>   						*conf->variable = intval;
> + 						if (makeDefault)
> + 							conf->default_val = intval;
> + 					}
>   				}
>   				else if (DoIt)
>   					*conf->variable = conf->default_val;
> ***************
> *** 709,715 ****
> --- 727,737 ----
>   						return false;
>   					}
>   					if (DoIt)
> + 					{
>   						*conf->variable = dval;
> + 						if (makeDefault)
> + 							conf->default_val = dval;
> + 					}
>   				}
>   				else if (DoIt)
>   					*conf->variable = conf->default_val;
> ***************
> *** 742,753 ****
> --- 764,796 ----
>   						if (*conf->variable)
>   							free(*conf->variable);
>   						*conf->variable = str;
> + 						if (makeDefault)
> + 						{
> + 							if (conf->default_val)
> + 								free(conf->default_val);
> + 							str = strdup(value);
> + 							if (str == NULL) {
> + 								elog(elevel, "out of memory");
> + 								return false;
> + 							}
> + 							conf->default_val = str;
> + 						}
>   					}
>   				}
>   				else if (DoIt)
>   				{
>   					char	   *str;
>   
> + 					if (!conf->default_val && conf->boot_default_val)
> + 					{
> + 						str = strdup(conf->boot_default_val);
> + 						if (str == NULL)
> + 						{
> + 							elog(elevel, "out of memory");
> + 							return false;
> + 						}
> + 						conf->boot_default_val = str;
> + 					}
>   					str = strdup(conf->default_val);
>   					if (str == NULL)
>   					{
> ***************
> *** 776,784 ****
>    */
>   void
>   SetConfigOption(const char *name, const char *value, GucContext
> ! 				context)
>   {
> ! 	(void) set_config_option(name, value, context, true);
>   }
>   
>   
> --- 819,827 ----
>    */
>   void
>   SetConfigOption(const char *name, const char *value, GucContext
> ! 				context, bool makeDefault)
>   {
> ! 	(void) set_config_option(name, value, context, true, makeDefault);
>   }
>   
>   
> ***************
> *** 825,830 ****
> --- 868,924 ----
>   	}
>   	return NULL;
>   }
> + 
> + static void
> + _ShowOption(enum config_type opttype, struct config_generic *record)
> + {
> + 	static char buffer[256];
> + 	char *val;
> + 
> + 	switch (opttype)
> + 	{
> + 		case PGC_BOOL:
> + 			val = *((struct config_bool *) record)->variable ? "on" : "off";
> + 			break;
> + 		case PGC_INT:
> + 			snprintf(buffer, 256, "%d", *((struct config_int *) record)->variable);
> + 			val = buffer;
> + 			break;
> + 
> + 		case PGC_REAL:
> + 			snprintf(buffer, 256, "%g", *((struct config_real *) record)->variable);
> + 			val = buffer;
> + 			break;
> + 
> + 		case PGC_STRING:
> + 			val = *((struct config_string *) record)->variable;
> + 			break;
> + 
> + 		default:
> + 			val = "???";
> + 	}
> + 	elog(NOTICE, "%s is %s", record->name, val);
> + }
> + 
> + void
> + ShowAllGUCConfig(void)
> + {
> + 	int			i;
> + 
> + 	for (i = 0; ConfigureNamesBool[i].name; i++)
> + 		_ShowOption(PGC_BOOL, (struct config_generic *)&ConfigureNamesBool[i]);
> + 
> + 	for (i = 0; ConfigureNamesInt[i].name; i++)
> + 		_ShowOption(PGC_INT, (struct config_generic *)&ConfigureNamesInt[i]);
> + 
> + 	for (i = 0; ConfigureNamesReal[i].name; i++)
> + 		_ShowOption(PGC_REAL, (struct config_generic *)&ConfigureNamesReal[i]);
> + 
> + 	for (i = 0; ConfigureNamesString[i].name; i++)
> + 		_ShowOption(PGC_STRING, (struct config_generic *)&ConfigureNamesString[i]);
> + }
> + 
> + 
>   
>   
>   
> Index: src/include/utils/guc.h
> ===================================================================
> RCS file: /home/projects/pgsql/cvsroot/pgsql/src/include/utils/guc.h,v
> retrieving revision 1.6
> diff -c -r1.6 guc.h
> *** src/include/utils/guc.h	2001/03/22 04:01:12	1.6
> --- src/include/utils/guc.h	2001/06/02 11:05:23
> ***************
> *** 46,57 ****
>   } GucContext;
>   
>   
> ! void		SetConfigOption(const char *name, const char *value, GucContext context);
>   const char *GetConfigOption(const char *name);
>   void		ProcessConfigFile(GucContext context);
>   void		ResetAllOptions(void);
>   void		ParseLongOption(const char *string, char **name, char **value);
> ! bool		set_config_option(const char *name, const char *value, GucContext context, bool DoIt);
>   
>   
>   extern bool Debug_print_query;
> --- 46,58 ----
>   } GucContext;
>   
>   
> ! void		SetConfigOption(const char *name, const char *value, GucContext context, bool makeDefault);
>   const char *GetConfigOption(const char *name);
>   void		ProcessConfigFile(GucContext context);
>   void		ResetAllOptions(void);
>   void		ParseLongOption(const char *string, char **name, char **value);
> ! bool		set_config_option(const char *name, const char *value, GucContext context, bool DoIt, bool makeDefault);
> ! void		ShowAllGUCConfig(void);
>   
>   
>   extern bool Debug_print_query;
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
> 
> http://www.postgresql.org/users-lounge/docs/faq.html
> 

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman(at)candle(dot)pha(dot)pa(dot)us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026

In response to

pgsql-patches by date

Next:From: Bruce MomjianDate: 2001-06-04 23:25:54
Subject: Re: Re: AW: [HACKERS] Re: Support for %TYPE in CREATE FUNCTION
Previous:From: Bruce MomjianDate: 2001-06-04 21:20:09
Subject: Re: unary plus

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group