Re: reset all update - Mailing list pgsql-patches
| From | Peter Eisentraut |
|---|---|
| Subject | Re: reset all update |
| Date | |
| Msg-id | Pine.LNX.4.30.0106122128400.756-100000@peter.localdomain Whole thread Raw |
| In response to | reset all update (Marko Kreen <marko@l-t.ee>) |
| Responses |
Re: reset all update
|
| List | pgsql-patches |
Marko Kreen writes:
> * GUCify command line arguments.
> * ResetAllOptions() comment
> * split set_config_option()
> * use set_config_option_real() on string reset
> - it calls hooks and free()'s the previous val
> * check if string val changed on reset
Seems on track. Comments below.
> Index: src/backend/tcop/postgres.c
> ===================================================================
> RCS file: /home/projects/pgsql/cvsroot/pgsql/src/backend/tcop/postgres.c,v
> retrieving revision 1.219
> diff -u -c -r1.219 postgres.c
> *** src/backend/tcop/postgres.c 2001/06/07 04:50:57 1.219
> --- src/backend/tcop/postgres.c 2001/06/11 09:17:07
> ***************
> *** 1108,1113 ****
> --- 1108,1115 ----
> const char *DBName = NULL;
> bool secure = true;
> int errs = 0;
> + GucContext ctx;
> + char *tmp;
>
> int firstchar;
> StringInfo parser_input;
> ***************
> *** 1117,1122 ****
> --- 1119,1126 ----
>
> char *potential_DataDir = NULL;
>
> + ctx = IsUnderPostmaster ? PGC_BACKEND : PGC_POSTMASTER;
> +
This is wrong. If you're in PostgresMain then the context is PGC_BACKEND
-- by definition.
> /*
> * Catch standard options before doing much else. This even works on
> * systems without getopt_long.
> ***************
> Index: src/backend/utils/misc/guc.c
> ===================================================================
> RCS file: /home/projects/pgsql/cvsroot/pgsql/src/backend/utils/misc/guc.c,v
> retrieving revision 1.37
> diff -u -c -r1.37 guc.c
> *** src/backend/utils/misc/guc.c 2001/06/07 04:50:57 1.37
> --- src/backend/utils/misc/guc.c 2001/06/11 09:17:09
> ***************
> --- 437,459 ----
> for (i = 0; ConfigureNamesString[i].name; i++)
> {
> char *str = NULL;
> + struct config_string *cf = &ConfigureNamesString[i];
>
> ! if (!cf->default_val && cf->boot_default_val)
> {
> ! str = strdup(cf->boot_default_val);
> if (str == NULL)
> elog(ERROR, "out of memory");
>
> ! cf->default_val = str;
> }
> !
> ! if (!cf->variable || !cf->default_val)
> ! continue;
This shouldn't happen. Just let it crash.
> !
> ! if (!*cf->variable || strcmp(cf->default_val, *cf->variable))
Evil coding style alert. Suggest:
if (*cf->variable == NULL || strcmp(cf->default_val, *cf->variable) != 0)
> ! set_config_option_real(PGC_STRING, (struct config_generic *)cf,
> ! cf->default_val, true, false, ERROR);
> }
>
> if (getenv("PGPORT"))
> ***************
--
Peter Eisentraut peter_e@gmx.net http://funkturm.homeip.net/~peter
pgsql-patches by date: