aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2019-03-11 17:53:09 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2019-03-11 17:53:09 -0400
commitd9c5e9629bf511a51328fd083ee452de88d91d9d (patch)
tree36d511b5e903f6e5410b8d06b5c4cfdddabc188b
parent8cacea7a725103f1a037a5ee06112ebe31051c66 (diff)
downloadpostgresql-d9c5e9629bf511a51328fd083ee452de88d91d9d.tar.gz
postgresql-d9c5e9629bf511a51328fd083ee452de88d91d9d.zip
Give up on testing guc.c's behavior for "infinity" inputs.
Further buildfarm testing shows that on the machines that are failing ac75959cd's test case, what we're actually getting from strtod("-infinity") is a syntax error (endptr == value) not ERANGE at all. This test case is not worth carrying two sets of expected output for, so just remove it, and revert commit b212245f9's misguided attempt to work around the platform dependency. Discussion: https://postgr.es/m/E1h33xk-0001Og-Gs@gemulon.postgresql.org
-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