aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2024-04-23 11:52:40 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2024-04-23 11:52:44 -0400
commitbb3ca232398658291d4b1eaae12cd6e88dfc96a3 (patch)
treee3003c408fae5f92c02f3659a5d5d0ab516449d6 /src
parentb29cbd3da4e37db17026b9fe58fb46fe83f467bf (diff)
downloadpostgresql-bb3ca232398658291d4b1eaae12cd6e88dfc96a3.tar.gz
postgresql-bb3ca232398658291d4b1eaae12cd6e88dfc96a3.zip
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')
-rw-r--r--src/backend/utils/misc/guc.c30
-rw-r--r--src/test/regress/expected/guc.out2
2 files changed, 21 insertions, 11 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;
}
diff --git a/src/test/regress/expected/guc.out b/src/test/regress/expected/guc.out
index 127c9532976..455b6d6c0ce 100644
--- a/src/test/regress/expected/guc.out
+++ b/src/test/regress/expected/guc.out
@@ -510,7 +510,7 @@ SELECT '2006-08-13 12:34:56'::timestamptz;
SET seq_page_cost TO 'NaN';
ERROR: invalid value for parameter "seq_page_cost": "NaN"
SET vacuum_cost_delay TO '10s';
-ERROR: 10000 ms is outside the valid range for parameter "vacuum_cost_delay" (0 .. 100)
+ERROR: 10000 ms is outside the valid range for parameter "vacuum_cost_delay" (0 ms .. 100 ms)
SET no_such_variable TO 42;
ERROR: unrecognized configuration parameter "no_such_variable"
-- Test "custom" GUCs created on the fly (which aren't really an