aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/utils/misc/guc.c12
-rw-r--r--src/test/regress/expected/guc.out2
-rw-r--r--src/test/regress/sql/guc.sql1
3 files changed, 5 insertions, 10 deletions
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index 1c4f9ac04e6..fe6c6f8a05a 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -6240,15 +6240,13 @@ parse_real(const char *value, double *result, int flags, const char **hintmsg)
if (hintmsg)
*hintmsg = NULL;
+ errno = 0;
val = strtod(value, &endptr);
- if (endptr == value)
- return false; /* no HINT for syntax error */
- /*
- * We ignore strtod's errno, so that out-of-range inputs will just result
- * in zero or infinity values. Subsequent range checks will reject those
- * if necessary. We do need to reject NaN explicitly, however.
- */
+ if (endptr == value || errno == ERANGE)
+ return false; /* no HINT for these cases */
+
+ /* reject NaN (infinities will fail range checks later) */
if (isnan(val))
return false; /* treat same as syntax error; no HINT */
diff --git a/src/test/regress/expected/guc.out b/src/test/regress/expected/guc.out
index f2590ee6769..811f80a0976 100644
--- a/src/test/regress/expected/guc.out
+++ b/src/test/regress/expected/guc.out
@@ -511,8 +511,6 @@ 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)
-SET geqo_selection_bias TO '-infinity';
-ERROR: -Infinity is outside the valid range for parameter "geqo_selection_bias" (1.5 .. 2)
--
-- Test DISCARD TEMP
--
diff --git a/src/test/regress/sql/guc.sql b/src/test/regress/sql/guc.sql
index b3ca59c09b1..43dbba3775e 100644
--- a/src/test/regress/sql/guc.sql
+++ b/src/test/regress/sql/guc.sql
@@ -147,7 +147,6 @@ SELECT '2006-08-13 12:34:56'::timestamptz;
-- Test some simple error cases
SET seq_page_cost TO 'NaN';
SET vacuum_cost_delay TO '10s';
-SET geqo_selection_bias TO '-infinity';
--
-- Test DISCARD TEMP