]> granicus.if.org Git - postgresql/commitdiff
Adjust input routines for float4, float8 and oid to reject the empty string
authorNeil Conway <neilc@samurai.com>
Fri, 11 Feb 2005 04:09:05 +0000 (04:09 +0000)
committerNeil Conway <neilc@samurai.com>
Fri, 11 Feb 2005 04:09:05 +0000 (04:09 +0000)
as valid input (it was previously treated as 0). This input was deprecated
in 8.0 (and a warning was emitted). Regression tests updated.

13 files changed:
src/backend/utils/adt/float.c
src/backend/utils/adt/oid.c
src/test/regress/expected/float4-exp-three-digits.out
src/test/regress/expected/float4.out
src/test/regress/expected/float8-exp-three-digits-win32.out
src/test/regress/expected/float8-exp-three-digits.out
src/test/regress/expected/float8-small-is-zero.out
src/test/regress/expected/float8-small-is-zero_1.out
src/test/regress/expected/float8.out
src/test/regress/expected/oid.out
src/test/regress/sql/float4.sql
src/test/regress/sql/float8.sql
src/test/regress/sql/oid.sql

index 4804445c32b31f17c19d7d4577565b6011a74bb2..e51babfebfb7f9cd801f2caac545faa09c3439ae 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/utils/adt/float.c,v 1.112 2004/12/31 22:01:21 pgsql Exp $
+ *       $PostgreSQL: pgsql/src/backend/utils/adt/float.c,v 1.113 2005/02/11 04:08:58 neilc Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -267,21 +267,12 @@ float4in(PG_FUNCTION_ARGS)
        /*
         * Check for an empty-string input to begin with, to avoid the
         * vagaries of strtod() on different platforms.
-        *
-        * In releases prior to 8.0, we accepted an empty string as valid input
-        * (yielding a float4 of 0). In 8.0, we accept empty strings, but emit
-        * a warning noting that the feature is deprecated. In 8.1+, the
-        * warning should be replaced by an error.
         */
        if (*num == '\0')
-       {
-               ereport(WARNING,
-                               (errcode(ERRCODE_WARNING_DEPRECATED_FEATURE),
-                                errmsg("deprecated input syntax for type real: \"\""),
-                                errdetail("This input will be rejected in "
-                                                  "a future release of PostgreSQL.")));
-               PG_RETURN_FLOAT4((float4) 0.0);
-       }
+               ereport(ERROR,
+                               (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
+                                errmsg("invalid input syntax for type real: \"%s\"",
+                                               orig_num)));
 
        /* skip leading whitespace */
        while (*num != '\0' && isspace((unsigned char) *num))
@@ -444,21 +435,12 @@ float8in(PG_FUNCTION_ARGS)
        /*
         * Check for an empty-string input to begin with, to avoid the
         * vagaries of strtod() on different platforms.
-        *
-        * In releases prior to 8.0, we accepted an empty string as valid input
-        * (yielding a float8 of 0). In 8.0, we accept empty strings, but emit
-        * a warning noting that the feature is deprecated. In 8.1+, the
-        * warning should be replaced by an error.
         */
        if (*num == '\0')
-       {
-               ereport(WARNING,
-                               (errcode(ERRCODE_WARNING_DEPRECATED_FEATURE),
-               errmsg("deprecated input syntax for type double precision: \"\""),
-                                errdetail("This input will be rejected in "
-                                                  "a future release of PostgreSQL.")));
-               PG_RETURN_FLOAT8(0.0);
-       }
+               ereport(ERROR,
+                               (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
+                                errmsg("invalid input syntax for type double precision: \"%s\"",
+                                               orig_num)));
 
        /* skip leading whitespace */
        while (*num != '\0' && isspace((unsigned char) *num))
index f499ae71b0cbfb4e6e7bd752ef4be806132c04d6..ababe641b21da57791745bbff1054fa42f57616c 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/utils/adt/oid.c,v 1.60 2004/12/31 22:01:22 pgsql Exp $
+ *       $PostgreSQL: pgsql/src/backend/utils/adt/oid.c,v 1.61 2005/02/11 04:08:58 neilc Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -33,18 +33,11 @@ oidin_subr(const char *funcname, const char *s, char **endloc)
        char       *endptr;
        Oid                     result;
 
-       /*
-        * In releases prior to 8.0, we accepted an empty string as valid
-        * input (yielding an OID of 0). In 8.0, we accept empty strings, but
-        * emit a warning noting that the feature is deprecated. In 8.1+, the
-        * warning should be replaced by an error.
-        */
        if (*s == '\0')
-               ereport(WARNING,
-                               (errcode(ERRCODE_WARNING_DEPRECATED_FEATURE),
-                                errmsg("deprecated input syntax for type oid: \"\""),
-                                errdetail("This input will be rejected in "
-                                                  "a future release of PostgreSQL.")));
+               ereport(ERROR,
+                               (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
+                                errmsg("invalid input syntax for type oid: \"%s\"",
+                                               s)));
 
        errno = 0;
        cvt = strtoul(s, &endptr, 10);
index 01fabddcc573813b27243d3886285a0104668c13..8e0d643d2551b0d0d5a4aff2eb854bcea85d0091 100644 (file)
@@ -17,6 +17,8 @@ ERROR:  type "real" value out of range: underflow
 INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e-40');
 ERROR:  type "real" value out of range: underflow
 -- bad input
+INSERT INTO FLOAT4_TBL(f1) VALUES ('');
+ERROR:  invalid input syntax for type real: ""
 INSERT INTO FLOAT4_TBL(f1) VALUES ('       ');
 ERROR:  invalid input syntax for type real: "       "
 INSERT INTO FLOAT4_TBL(f1) VALUES ('xyz');
index e4d460359fefd6150e7c8441f27b048d88dd4aee..8ababaad6e7f3cb86bb264ec82ee8acf846501a3 100644 (file)
@@ -17,6 +17,8 @@ ERROR:  type "real" value out of range: underflow
 INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e-40');
 ERROR:  type "real" value out of range: underflow
 -- bad input
+INSERT INTO FLOAT4_TBL(f1) VALUES ('');
+ERROR:  invalid input syntax for type real: ""
 INSERT INTO FLOAT4_TBL(f1) VALUES ('       ');
 ERROR:  invalid input syntax for type real: "       "
 INSERT INTO FLOAT4_TBL(f1) VALUES ('xyz');
index c6f3064b6759fc0b94b7121dea1c77a3ece8b917..a7f15c5bbde4a817c2755e1a6819a4401ee21a50 100644 (file)
@@ -17,6 +17,8 @@ ERROR:  "10e-400" is out of range for type double precision
 SELECT '-10e-400'::float8;
 ERROR:  "-10e-400" is out of range for type double precision
 -- bad input
+INSERT INTO FLOAT8_TBL(f1) VALUES ('');
+ERROR:  invalid input syntax for type double precision: ""
 INSERT INTO FLOAT8_TBL(f1) VALUES ('     ');
 ERROR:  invalid input syntax for type double precision: "     "
 INSERT INTO FLOAT8_TBL(f1) VALUES ('xyz');
index 479503959bd5112812359c790fcb72546ce79fb3..c466ce6402d142c88fdd45f511bc880a2c3bc629 100644 (file)
@@ -17,6 +17,8 @@ ERROR:  "10e-400" is out of range for type double precision
 SELECT '-10e-400'::float8;
 ERROR:  "-10e-400" is out of range for type double precision
 -- bad input
+INSERT INTO FLOAT8_TBL(f1) VALUES ('');
+ERROR:  invalid input syntax for type double precision: ""
 INSERT INTO FLOAT8_TBL(f1) VALUES ('     ');
 ERROR:  invalid input syntax for type double precision: "     "
 INSERT INTO FLOAT8_TBL(f1) VALUES ('xyz');
index b599c1ca5d85dd02c0fb3a68650b2fdaa5396cd5..afa892ae243245d0802f90406c35117fcbcc4d90 100644 (file)
@@ -25,6 +25,8 @@ SELECT '-10e-400'::float8;
 (1 row)
 
 -- bad input
+INSERT INTO FLOAT8_TBL(f1) VALUES ('');
+ERROR:  invalid input syntax for type double precision: ""
 INSERT INTO FLOAT8_TBL(f1) VALUES ('     ');
 ERROR:  invalid input syntax for type double precision: "     "
 INSERT INTO FLOAT8_TBL(f1) VALUES ('xyz');
index 3a74505b4e5d221450b4b30030c3bd2524037cf5..a6b1ae2c04c3e39d32bd6116729d62963fda24b9 100644 (file)
@@ -25,6 +25,8 @@ SELECT '-10e-400'::float8;
 (1 row)
 
 -- bad input
+INSERT INTO FLOAT8_TBL(f1) VALUES ('');
+ERROR:  invalid input syntax for type double precision: ""
 INSERT INTO FLOAT8_TBL(f1) VALUES ('     ');
 ERROR:  invalid input syntax for type double precision: "     "
 INSERT INTO FLOAT8_TBL(f1) VALUES ('xyz');
index 8ba64db0202bc616b4e493e06e6285a87f3bd551..579f80abfeb0b85fcec0308b1227eca285908399 100644 (file)
@@ -17,6 +17,8 @@ ERROR:  "10e-400" is out of range for type double precision
 SELECT '-10e-400'::float8;
 ERROR:  "-10e-400" is out of range for type double precision
 -- bad input
+INSERT INTO FLOAT8_TBL(f1) VALUES ('');
+ERROR:  invalid input syntax for type double precision: ""
 INSERT INTO FLOAT8_TBL(f1) VALUES ('     ');
 ERROR:  invalid input syntax for type double precision: "     "
 INSERT INTO FLOAT8_TBL(f1) VALUES ('xyz');
index 092c9b1cfaf35ce9e5c5edb4d1d1fdf3bc8046f9..22976218069c47011d810262d9255a8a926d47a3 100644 (file)
@@ -12,6 +12,10 @@ INSERT INTO OID_TBL(f1) VALUES ('   10  ');
 -- leading/trailing hard tab is also allowed
 INSERT INTO OID_TBL(f1) VALUES ('        15      ');
 -- bad inputs 
+INSERT INTO OID_TBL(f1) VALUES ('');
+ERROR:  invalid input syntax for type oid: ""
+INSERT INTO OID_TBL(f1) VALUES ('    ');
+ERROR:  invalid input syntax for type oid: "    "
 INSERT INTO OID_TBL(f1) VALUES ('asdfasd');
 ERROR:  invalid input syntax for type oid: "asdfasd"
 INSERT INTO OID_TBL(f1) VALUES ('99asdfasd');
@@ -22,8 +26,6 @@ INSERT INTO OID_TBL(f1) VALUES ('    5d');
 ERROR:  invalid input syntax for type oid: "    5d"
 INSERT INTO OID_TBL(f1) VALUES ('5    5');
 ERROR:  invalid input syntax for type oid: "5    5"
-INSERT INTO OID_TBL(f1) VALUES ('    ');
-ERROR:  invalid input syntax for type oid: "    "
 INSERT INTO OID_TBL(f1) VALUES (' - 500');
 ERROR:  invalid input syntax for type oid: " - 500"
 INSERT INTO OID_TBL(f1) VALUES ('32958209582039852935');
index a7147409ec98c6ab72fd885b82401b79311933a7..916431fbcc0a5461d44c77690ee85e5a55e4854e 100644 (file)
@@ -17,6 +17,7 @@ INSERT INTO FLOAT4_TBL(f1) VALUES ('10e-40');
 INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e-40');
 
 -- bad input
+INSERT INTO FLOAT4_TBL(f1) VALUES ('');
 INSERT INTO FLOAT4_TBL(f1) VALUES ('       ');
 INSERT INTO FLOAT4_TBL(f1) VALUES ('xyz');
 INSERT INTO FLOAT4_TBL(f1) VALUES ('5.0.0');
index 83f0763c6f25fabf8be849a4247489773fe5adec..0ff71be5d423b78fb26526f624cfbd5324d38b5c 100644 (file)
@@ -17,6 +17,7 @@ SELECT '10e-400'::float8;
 SELECT '-10e-400'::float8;
 
 -- bad input
+INSERT INTO FLOAT8_TBL(f1) VALUES ('');
 INSERT INTO FLOAT8_TBL(f1) VALUES ('     ');
 INSERT INTO FLOAT8_TBL(f1) VALUES ('xyz');
 INSERT INTO FLOAT8_TBL(f1) VALUES ('5.0.0');
index a3ed212b6addec97500ed881d630cc0d2ad80730..e2357cd2e5610a35aa128a7eedcf3d0879b69c08 100644 (file)
@@ -15,13 +15,13 @@ INSERT INTO OID_TBL(f1) VALUES ('   10  ');
 INSERT INTO OID_TBL(f1) VALUES ('        15      ');
 
 -- bad inputs 
-
+INSERT INTO OID_TBL(f1) VALUES ('');
+INSERT INTO OID_TBL(f1) VALUES ('    ');
 INSERT INTO OID_TBL(f1) VALUES ('asdfasd');
 INSERT INTO OID_TBL(f1) VALUES ('99asdfasd');
 INSERT INTO OID_TBL(f1) VALUES ('5    d');
 INSERT INTO OID_TBL(f1) VALUES ('    5d');
 INSERT INTO OID_TBL(f1) VALUES ('5    5');
-INSERT INTO OID_TBL(f1) VALUES ('    ');
 INSERT INTO OID_TBL(f1) VALUES (' - 500');
 INSERT INTO OID_TBL(f1) VALUES ('32958209582039852935');
 INSERT INTO OID_TBL(f1) VALUES ('-23582358720398502385');