diff options
Diffstat (limited to 'src/backend/utils/misc/guc.c')
-rw-r--r-- | src/backend/utils/misc/guc.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index 5a0e94f8014..5841631e8c3 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -5828,8 +5828,11 @@ SetConfigOption(const char *name, const char *value, /* - * Fetch the current value of the option `name'. If the option doesn't exist, - * throw an ereport and don't return. + * Fetch the current value of the option `name', as a string. + * + * If the option doesn't exist, return NULL if missing_ok is true (NOTE that + * this cannot be distinguished from a string variable with a NULL value!), + * otherwise throw an ereport and don't return. * * If restrict_superuser is true, we also enforce that only superusers can * see GUC_SUPERUSER_ONLY variables. This should only be passed as true @@ -5839,16 +5842,21 @@ SetConfigOption(const char *name, const char *value, * valid until the next call to configuration related functions. */ const char * -GetConfigOption(const char *name, bool restrict_superuser) +GetConfigOption(const char *name, bool missing_ok, bool restrict_superuser) { struct config_generic *record; static char buffer[256]; record = find_option(name, false, ERROR); if (record == NULL) + { + if (missing_ok) + return NULL; ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), - errmsg("unrecognized configuration parameter \"%s\"", name))); + errmsg("unrecognized configuration parameter \"%s\"", + name))); + } if (restrict_superuser && (record->flags & GUC_SUPERUSER_ONLY) && !superuser()) |