mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-27 08:39:28 +08:00
Fix define_custom_variable so that SUSET custom variables behave
somewhat reasonably. It's not perfect, but it beats the kluge proposed in the auto-explain patch ...
This commit is contained in:
parent
cd35e9d746
commit
31ec957a15
@ -10,7 +10,7 @@
|
||||
* Written by Peter Eisentraut <peter_e@gmx.net>.
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.478 2008/11/19 01:10:23 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.479 2008/11/19 02:07:07 tgl Exp $
|
||||
*
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
@ -5657,6 +5657,7 @@ define_custom_variable(struct config_generic * variable)
|
||||
const char **nameAddr = &name;
|
||||
const char *value;
|
||||
struct config_string *pHolder;
|
||||
GucContext phcontext;
|
||||
struct config_generic **res;
|
||||
|
||||
/*
|
||||
@ -5702,6 +5703,28 @@ define_custom_variable(struct config_generic * variable)
|
||||
*/
|
||||
*res = variable;
|
||||
|
||||
/*
|
||||
* Infer context for assignment based on source of existing value.
|
||||
* We can't tell this with exact accuracy, but we can at least do
|
||||
* something reasonable in typical cases.
|
||||
*/
|
||||
switch (pHolder->gen.source)
|
||||
{
|
||||
case PGC_S_DEFAULT:
|
||||
case PGC_S_ENV_VAR:
|
||||
case PGC_S_FILE:
|
||||
case PGC_S_ARGV:
|
||||
phcontext = PGC_SIGHUP;
|
||||
break;
|
||||
case PGC_S_DATABASE:
|
||||
case PGC_S_USER:
|
||||
case PGC_S_CLIENT:
|
||||
case PGC_S_SESSION:
|
||||
default:
|
||||
phcontext = PGC_USERSET;
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
* Assign the string value stored in the placeholder to the real variable.
|
||||
*
|
||||
@ -5713,7 +5736,7 @@ define_custom_variable(struct config_generic * variable)
|
||||
|
||||
if (value)
|
||||
set_config_option(name, value,
|
||||
pHolder->gen.context, pHolder->gen.source,
|
||||
phcontext, pHolder->gen.source,
|
||||
GUC_ACTION_SET, true);
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user