]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Handle "NaN" and "Infinity" for input values.
authorThomas G. Lockhart <lockhart@fourpalms.org>
Sun, 10 Jan 1999 17:13:06 +0000 (17:13 +0000)
committerThomas G. Lockhart <lockhart@fourpalms.org>
Sun, 10 Jan 1999 17:13:06 +0000 (17:13 +0000)
I think NAN is already guaranteed to be there from Jan's work on NUMERIC,
 but perhaps HUGE_VAL needs some #ifndef's in the same place.
Should also include "-Infinity" as -HUGE_VAL sometime; not there yet.

src/backend/utils/adt/float.c

index a00cef1bf19c8277c130707007cd0cc53c98c408..ba6abbb247c545f5e261ed276450f4a3e3ccd5e6 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/utils/adt/float.c,v 1.35 1998/11/29 01:57:59 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/utils/adt/float.c,v 1.36 1999/01/10 17:13:06 thomas Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -249,8 +249,17 @@ float8in(char *num)
 
        errno = 0;
        val = strtod(num, &endptr);
-       if (*endptr != '\0' || errno == ERANGE)
-               elog(ERROR, "Bad float8 input format '%s'", num);
+       if (*endptr != '\0')
+       {
+               if (strcasecmp(num, "NaN") == 0)
+                       val = NAN;
+               else if (strcasecmp(num, "Infinity") == 0)
+                       val = HUGE_VAL;
+               else if (errno == ERANGE)
+                       elog(ERROR, "Input '%s' is out of range for float8", num);
+               else
+                       elog(ERROR, "Bad float8 input format '%s'", num);
+       }
 
        CheckFloat8Val(val);
        *result = val;