Re: take 2: show all / reset all - Mailing list pgsql-patches
From | Bruce Momjian |
---|---|
Subject | Re: take 2: show all / reset all |
Date | |
Msg-id | 200106042131.f54LV4q13496@candle.pha.pa.us Whole thread Raw |
In response to | take 2: show all / reset all (Marko Kreen <marko@l-t.ee>) |
List | 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@candle.pha.pa.us | (610) 853-3000 + If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania 19026
pgsql-patches by date: