diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2024-04-23 11:52:40 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2024-04-23 11:52:44 -0400 |
commit | bb3ca232398658291d4b1eaae12cd6e88dfc96a3 (patch) | |
tree | e3003c408fae5f92c02f3659a5d5d0ab516449d6 /src/backend/utils | |
parent | b29cbd3da4e37db17026b9fe58fb46fe83f467bf (diff) |
Improve "out of range" error messages for GUCs.
If the GUC has a unit, label the minimum and maximum values
with the unit explicitly. Per suggestion from Jian He.
Discussion: https://postgr.es/m/CACJufxFJo6FyVg9W8yvNAxbjP+EJ9wieE9d9vw5LpPzyLnLLOQ@mail.gmail.com
Diffstat (limited to 'src/backend/utils')
-rw-r--r-- | src/backend/utils/misc/guc.c | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index f51b3e0b507..3fb68039986 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -3173,15 +3173,20 @@ parse_and_validate_value(struct config_generic *record, if (newval->intval < conf->min || newval->intval > conf->max) { const char *unit = get_config_unit_name(conf->gen.flags); + const char *unitspace; + + if (unit) + unitspace = " "; + else + unit = unitspace = ""; ereport(elevel, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("%d%s%s is outside the valid range for parameter \"%s\" (%d .. %d)", - newval->intval, - unit ? " " : "", - unit ? unit : "", + errmsg("%d%s%s is outside the valid range for parameter \"%s\" (%d%s%s .. %d%s%s)", + newval->intval, unitspace, unit, name, - conf->min, conf->max))); + conf->min, unitspace, unit, + conf->max, unitspace, unit))); return false; } @@ -3209,15 +3214,20 @@ parse_and_validate_value(struct config_generic *record, if (newval->realval < conf->min || newval->realval > conf->max) { const char *unit = get_config_unit_name(conf->gen.flags); + const char *unitspace; + + if (unit) + unitspace = " "; + else + unit = unitspace = ""; ereport(elevel, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("%g%s%s is outside the valid range for parameter \"%s\" (%g .. %g)", - newval->realval, - unit ? " " : "", - unit ? unit : "", + errmsg("%g%s%s is outside the valid range for parameter \"%s\" (%g%s%s .. %g%s%s)", + newval->realval, unitspace, unit, name, - conf->min, conf->max))); + conf->min, unitspace, unit, + conf->max, unitspace, unit))); return false; } |